Only show the admin page if you are admin.
This commit is contained in:
parent
d4d183034f
commit
e6d6a2bb20
@ -50,7 +50,7 @@ import Prelude (Unit, bind, discard, unit, ($), (=<<), (<>), show, pure)
|
||||
import Bulma as Bulma
|
||||
|
||||
import Data.Array as A
|
||||
import Data.Maybe (Maybe(..), maybe)
|
||||
import Data.Maybe (Maybe(..), maybe, fromMaybe)
|
||||
import Data.Either (Either(..))
|
||||
import Data.Tuple (Tuple(..))
|
||||
import Halogen as H
|
||||
@ -717,8 +717,9 @@ handleAction = case _ of
|
||||
m@(DNSManager.MkAcceptedDomains _) -> do
|
||||
handleAction $ Log $ SuccessLog $ "Received the list of accepted domains!"
|
||||
handleAction $ DispatchDNSMessage m
|
||||
m@(DNSManager.MkLogged _) -> do
|
||||
m@(DNSManager.MkLogged message) -> do
|
||||
handleAction $ Log $ SuccessLog $ "Authenticated to dnsmanagerd!"
|
||||
H.tell _nav unit $ NavigationInterface.ToggleAdmin (fromMaybe false message.admin)
|
||||
handleAction $ DispatchDNSMessage m
|
||||
m@(DNSManager.MkDomainAdded response) -> do
|
||||
handleAction $ Log $ SuccessLog $ "Domain added: " <> response.domain
|
||||
|
@ -208,10 +208,12 @@ codecAcceptedDomains ∷ CA.JsonCodec AcceptedDomains
|
||||
codecAcceptedDomains = CA.object "AcceptedDomains" (CAR.record { domains: CA.array CA.string })
|
||||
|
||||
{- 16 -}
|
||||
type Logged = { accepted_domains :: Array String, my_domains :: Array String }
|
||||
type Logged = { accepted_domains :: Array String, my_domains :: Array String, admin :: Maybe Boolean }
|
||||
codecLogged ∷ CA.JsonCodec Logged
|
||||
codecLogged = CA.object "Logged" (CAR.record { accepted_domains: CA.array CA.string
|
||||
, my_domains: CA.array CA.string })
|
||||
, my_domains: CA.array CA.string
|
||||
, admin: CAR.optional CA.boolean
|
||||
})
|
||||
|
||||
{- 17 -}
|
||||
type DomainAdded = { domain :: String }
|
||||
|
@ -31,7 +31,9 @@ data Output
|
||||
| Disconnection
|
||||
|
||||
-- | The component needs to know when the user is logged or not.
|
||||
data Query a = ToggleLogged Boolean a
|
||||
data Query a
|
||||
= ToggleLogged Boolean a
|
||||
| ToggleAdmin Boolean a
|
||||
|
||||
type Slot = H.Slot Query Output
|
||||
|
||||
@ -66,7 +68,7 @@ component =
|
||||
}
|
||||
|
||||
initialState :: Input -> State
|
||||
initialState _ = { logged: false, active: false, admin: true }
|
||||
initialState _ = { logged: false, active: false, admin: false }
|
||||
|
||||
handleAction :: forall m. MonadAff m => Action -> H.HalogenM State Action () Output m Unit
|
||||
handleAction = case _ of
|
||||
@ -82,6 +84,9 @@ handleQuery = case _ of
|
||||
ToggleLogged islogged a -> do
|
||||
H.modify_ _ { logged = islogged }
|
||||
pure (Just a)
|
||||
ToggleAdmin isadmin a -> do
|
||||
H.modify_ _ { admin = isadmin }
|
||||
pure (Just a)
|
||||
|
||||
|
||||
-- | The navigation bar is a complex component to render.
|
||||
|
Loading…
Reference in New Issue
Block a user