Show membership status on profile page
This commit is contained in:
parent
fb69b58f92
commit
7f64d8f926
|
@ -19,6 +19,7 @@ import Datarekisteri.Frontend.Types
|
|||
import Datarekisteri.Frontend.FormFields
|
||||
import Data.Morpheus.Client
|
||||
import Datarekisteri.Core.Types
|
||||
import Data.Maybe (fromJust)
|
||||
import Yesod hiding (emailField)
|
||||
import Yesod.Auth
|
||||
|
||||
|
@ -33,6 +34,7 @@ query ProfilePage($id: UserID) {
|
|||
homeplace
|
||||
birthdate
|
||||
phoneNumber
|
||||
isMember
|
||||
}
|
||||
permissions
|
||||
}
|
||||
|
@ -92,14 +94,18 @@ profileForm userID user extraHtml = do
|
|||
|]
|
||||
return (profileUpdateRes, widget)
|
||||
|
||||
profile :: UserID -> (Widget, Enctype) -> (Widget, Enctype) -> Widget
|
||||
profile :: ProfilePageUser -> (Widget, Enctype) -> (Widget, Enctype) -> Widget
|
||||
profile user (profileWidget, profileEnctype) (passwordWidget, passwordEnctype) = do
|
||||
setTitle "Muokkaa profiilia"
|
||||
passwordRoute <- handlerToWidget $ maybeAuthorized (UpdatePasswordR user) True
|
||||
let userID = let ProfilePageUser {..} = user in id
|
||||
passwordRoute <- handlerToWidget $ maybeAuthorized (UpdatePasswordR userID) True
|
||||
[whamlet|
|
||||
<h1>
|
||||
Omat tiedot
|
||||
<form action="@{ProfileR user}" method="post" enctype="#{profileEnctype}">
|
||||
$if isMember user
|
||||
Jäsentiedot
|
||||
$else
|
||||
Jäsenhakemuksen tiedot
|
||||
<form action="@{ProfileR userID}" method="post" enctype="#{profileEnctype}">
|
||||
^{profileWidget}
|
||||
<input type="submit" value="Päivitä tiedot">
|
||||
$maybe route <- passwordRoute
|
||||
|
@ -114,7 +120,7 @@ getProfile userID = do
|
|||
passwordForm <- liftHandler $ generateFormPost passwordForm
|
||||
profileForm <- liftHandler $ generateFormPost $
|
||||
profileForm ((\x -> let ProfilePageUser {..} = x in id) <$> user) user
|
||||
defaultLayout $ profile ((\x -> let ProfilePageUser {..} = x in id) $ fromJust user)
|
||||
defaultLayout $ profile (fromJust user)
|
||||
profileForm passwordForm
|
||||
where fromJust = fromMaybe $ error "Tried to access the profile of an inexistent user"
|
||||
|
||||
|
@ -131,7 +137,9 @@ postProfileR userID = do
|
|||
FormSuccess update -> apiRequest @UpdateProfile True update >> redirect (ProfileR userID)
|
||||
_ -> do
|
||||
passwordForm <- liftHandler $ generateFormPost passwordForm
|
||||
defaultLayout $ profile userID (widget, enctype) passwordForm
|
||||
ProfilePage {..} <- apiRequest True (ProfilePageArgs {id = Just userID})
|
||||
defaultLayout $ profile (fromJust user) (widget, enctype) passwordForm
|
||||
--- XXX fromJust explodes if the user no longer exists
|
||||
|
||||
postUpdatePasswordR :: (YesodAuth DataIdClient, AuthId DataIdClient ~ Text) => UserID -> Handler Html
|
||||
postUpdatePasswordR userID = do
|
||||
|
@ -141,4 +149,6 @@ postUpdatePasswordR userID = do
|
|||
apiRequest @UpdatePassword True (UpdatePasswordArgs {password = new, user = Just userID}) >> redirect (ProfileR userID)
|
||||
_ -> do
|
||||
profileForm <- liftHandler $ generateFormPost $ profileForm (Just userID) Nothing
|
||||
defaultLayout $ profile userID profileForm (widget, enctype)
|
||||
ProfilePage {..} <- apiRequest True (ProfilePageArgs {id = Just userID})
|
||||
defaultLayout $ profile (fromJust user) profileForm (widget, enctype)
|
||||
--- XXX fromJust explodes if the user no longer exists
|
||||
|
|
Loading…
Reference in New Issue