diff --git a/frontend/src/Datarekisteri/Frontend/Handlers.hs b/frontend/src/Datarekisteri/Frontend/Handlers.hs index f0e2b26..2779f62 100644 --- a/frontend/src/Datarekisteri/Frontend/Handlers.hs +++ b/frontend/src/Datarekisteri/Frontend/Handlers.hs @@ -9,7 +9,8 @@ {-# LANGUAGE NoImplicitPrelude #-} module Datarekisteri.Frontend.Handlers - ( module Datarekisteri.Frontend.Handlers.Profile + ( module Datarekisteri.Frontend.Handlers.Permissions + , module Datarekisteri.Frontend.Handlers.Profile , module Datarekisteri.Frontend.Handlers.Applications , module Datarekisteri.Frontend.Handlers.Apply , module Datarekisteri.Frontend.Handlers.Members @@ -23,6 +24,7 @@ import Yesod import Yesod.Auth import Datarekisteri.Frontend.Handlers.Profile +import Datarekisteri.Frontend.Handlers.Permissions import Datarekisteri.Frontend.Handlers.Apply import Datarekisteri.Frontend.Handlers.Applications import Datarekisteri.Frontend.Handlers.VerifyEmail diff --git a/frontend/src/Datarekisteri/Frontend/Handlers/Permissions.hs b/frontend/src/Datarekisteri/Frontend/Handlers/Permissions.hs new file mode 100644 index 0000000..884bd0c --- /dev/null +++ b/frontend/src/Datarekisteri/Frontend/Handlers/Permissions.hs @@ -0,0 +1,62 @@ +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE DuplicateRecordFields #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE RecordWildCards #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE TypeApplications #-} +{-# LANGUAGE TypeFamilies #-} + +{-# LANGUAGE NoImplicitPrelude #-} + +module Datarekisteri.Frontend.Handlers.Permissions where + +import Relude hiding (id) + +import Data.Morpheus.Client (raw, declareLocalTypesInline) + +import Yesod +import Yesod.Auth + +import Datarekisteri.Core.Types +import Datarekisteri.Frontend.ApiRequests +import Datarekisteri.Frontend.Types +import Datarekisteri.Frontend.Widgets + +declareLocalTypesInline "schema.gql" [raw| +query PermissionsPage($id: UserID!) { + user(id: $id) { + id + name + nickname + permissions { + scope + permission + } + } +} +|] + +-- declareLocalTypesInline "schema.gql" [raw| +-- mutation UpdatePermissions($user: UserID, $permissions: [InputScopePermission!]!) { +-- update(user: $user, permissions: $permissions) { +-- id +-- } +-- } +-- |] + +getPermissionsR :: UserID -> Handler Html +getPermissionsR userID = defaultLayout $ do + PermissionsPage {..} <- liftHandler $ apiRequest True (PermissionsPageArgs {id = userID}) + PermissionsPageUser {..} <- maybe undefined pure user + let permissions' = (\PermissionsPageUserPermissions {..} -> (show scope, show permission) :: (Text, Text)) <$> permissions + setTitle "Käyttöoikeudet" + [whamlet| +