From 9b75d75cbd22a46e1879dcf1d70df86a88f90694 Mon Sep 17 00:00:00 2001 From: Filip Gralinski Date: Mon, 25 Nov 2019 22:38:59 +0100 Subject: [PATCH] Change email with user identifier/login --- Handler/AccountReset.hs | 45 +++++++++++++++++++++++++++-------------- messages/en.msg | 1 + 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/Handler/AccountReset.hs b/Handler/AccountReset.hs index 4c1d88b..b02ebcd 100644 --- a/Handler/AccountReset.hs +++ b/Handler/AccountReset.hs @@ -20,18 +20,18 @@ getCreateResetLinkR = do postCreateResetLinkR :: Handler Html postCreateResetLinkR = do ((result, _), _) <- runFormPost createResetLinkForm - let mEmail = case result of - FormSuccess (email, _) -> Just email - _ -> Nothing + let mUserIdentifier = case result of + FormSuccess (userIdentifier, _) -> Just userIdentifier + _ -> Nothing let mCourseId = case result of FormSuccess (_, Just courseId) -> Just courseId _ -> Nothing - doCreateResetLink mEmail mCourseId + doCreateResetLink mUserIdentifier mCourseId doCreateResetLink :: Maybe Text -> Maybe CourseId -> Handler Html -doCreateResetLink (Just email) mCourseId = do - mUserEnt <- runDB $ getBy $ UniqueUser email - userId <- createOrUse mUserEnt email +doCreateResetLink (Just userIdentifier) mCourseId = do + mUserEnt <- runDB $ getBy $ UniqueUser userIdentifier + userId <- createOrUse mUserEnt userIdentifier addParticipant userId mCourseId @@ -45,28 +45,42 @@ doCreateResetLink (Just email) mCourseId = do $(widgetFile "reset-link-created") doCreateResetLink Nothing _ = do - setMessage $ toHtml ("No e-mail given" :: Text) + setMessage $ toHtml ("No user identifier given" :: Text) getCreateResetLinkR -addParticipant userId Nothing = return () +addParticipant :: (PersistStoreWrite (YesodPersistBackend site), + YesodPersist site, + BaseBackend (YesodPersistBackend site) ~ SqlBackend) + => Key User -> Maybe (Key Course) -> HandlerFor site () +addParticipant _ Nothing = return () addParticipant userId (Just courseId) = do - runDB $ insert $ Participant userId courseId + _ <- runDB $ insert $ Participant userId courseId return () createOrUse :: Maybe (Entity User) -> Text -> Handler UserId createOrUse (Just userEnt) _ = return $ entityKey userEnt -createOrUse Nothing email = do - setMessage $ toHtml ("Created new user " ++ email) +createOrUse Nothing userIdentifier = do + setMessage $ toHtml ("Created new user " ++ userIdentifier) triggerToken <- newToken - userId <- runDB $ insert $ User email Nothing Nothing False Nothing True Nothing Nothing Nothing (Just triggerToken) + userId <- runDB $ insert $ User userIdentifier + Nothing + Nothing + False + Nothing + True + Nothing + Nothing + Nothing + (Just triggerToken) return userId createResetLinkForm :: Form (Text, Maybe CourseId) createResetLinkForm = renderBootstrap3 BootstrapBasicForm $ (,) - <$> areq textField (bfs MsgEMail) Nothing + <$> areq textField (bfs MsgUserIdentifier) Nothing <*> coursesSelectFieldList +coursesSelectFieldList :: (PersistQueryRead (YesodPersistBackend site), YesodPersist site, RenderMessage site FormMessage, RenderMessage site AppMessage, BaseBackend (YesodPersistBackend site) ~ SqlBackend) => AForm (HandlerFor site) (Maybe (Key Course)) coursesSelectFieldList = aopt (selectField courses) (bfs MsgCourseOptional) Nothing where courses = do @@ -120,7 +134,7 @@ doResetPassword' :: Bool -> Text -> Key User -> Text -> Handler Html doResetPassword' True _ userId password = do updatePassword userId (Just password) runDB $ update userId removeVerificationKeyStatement - setMessage $ toHtml ("Password set! Now, you can log in with your e-mail address." :: Text) + setMessage $ toHtml ("Password set! Now, you can log in with your login." :: Text) redirect HomeR doResetPassword' False key _ _ = do @@ -143,5 +157,6 @@ changePasswordForm :: AccountStatus -> Form Text changePasswordForm accountStatus = renderBootstrap3 BootstrapBasicForm $ areq passwordConfirmField (bfs $ passwordFormHeader accountStatus) Nothing +passwordFormHeader :: AccountStatus -> AppMessage passwordFormHeader NewlyCreated = MsgPasswordForNewAccount passwordFormHeader PasswordReset = MsgPassword diff --git a/messages/en.msg b/messages/en.msg index 39bab40..c929ff2 100644 --- a/messages/en.msg +++ b/messages/en.msg @@ -87,3 +87,4 @@ ChallengeDeadlineDay: challenge deadline day ChallengeDeadlineTime: challenge deadline time ChallengeDeadlineTooltip: no submissions will be accepted after the deadline; this can be used for organizing competitions set in time WritingPapers: writing papers with Gonito +UserIdentifier: user login/identifier