yesod-auth-account-fork 2.0 → 2.0.1
raw patch · 1 files changed
+2/−2 lines, 1 filesdep ~persistentPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: persistent
API changes (from Hackage documentation)
- Yesod.Auth.Account: class AccountSendEmail master where sendVerifyEmail uname email url = ((monadLoggerLog (Loc "src/Yesod/Auth/Account.hs" "yesod-auth-account-fork-2.0" "Yesod.Auth.Account" (803, 11) (803, 18)) (pack "") LevelInfo) . (id :: Text -> Text)) $ concat ["Verification email for ", uname, " (", email, "): ", url] sendNewPasswordEmail uname email url = ((monadLoggerLog (Loc "src/Yesod/Auth/Account.hs" "yesod-auth-account-fork-2.0" "Yesod.Auth.Account" (814, 11) (814, 18)) (pack "") LevelInfo) . (id :: Text -> Text)) $ concat ["Reset password email for ", uname, " (", email, "): ", url]
+ Yesod.Auth.Account: class AccountSendEmail master where sendVerifyEmail uname email url = ((monadLoggerLog (Loc "src/Yesod/Auth/Account.hs" "yesod-auth-account-fork-2.0.1" "Yesod.Auth.Account" (803, 11) (803, 18)) (pack "") LevelInfo) . (id :: Text -> Text)) $ concat ["Verification email for ", uname, " (", email, "): ", url] sendNewPasswordEmail uname email url = ((monadLoggerLog (Loc "src/Yesod/Auth/Account.hs" "yesod-auth-account-fork-2.0.1" "Yesod.Auth.Account" (814, 11) (814, 18)) (pack "") LevelInfo) . (id :: Text -> Text)) $ concat ["Reset password email for ", uname, " (", email, "): ", url]
- Yesod.Auth.Account: class (YesodAuth master, AccountSendEmail master, AccountDB db, UserCredentials (UserAccount db), RenderMessage master FormMessage) => YesodAuthAccount db master | master -> db where checkValidUsername u | all isAlphaNum u = return $ Right u checkValidUsername _ = do { mr <- getMessageRender; return $ Left $ mr MsgInvalidUsername } checkValidEmail u = do { mr <- getMessageRender; return . either (Left . (\ e -> mr MsgInvalidEmail' <> ": " <> pack e)) (Right . decodeUtf8 . toByteString) . validate $ encodeUtf8 u } checkValidLogin u = do { validUser <- checkValidUsername u; validEmail <- checkValidEmail u; return $ case validUser of { Left _ -> validEmail Right _ -> validUser } } unregisteredLogin u = selectRep $ do { provideRep $ do { tm <- getRouteToParent; lift $ defaultLayout $ do { setTitleI MsgEmailUnverified; (do { (asWidgetT . toWidget) ((preEscapedText . pack) "<p>"); ((liftM (toHtml .) getMessageRender) >>= (\ urender_adb2 -> (asWidgetT . toWidget) (urender_adb2 MsgEmailUnverified))); (asWidgetT . toWidget) ((preEscapedText . pack) "</p>"); (asWidgetT . toWidget) (resendVerifyEmailWidget (username u) tm) }) } }; provideRep $ do { let obj = object ["unverified" .= True, "message" .= msg] msg = "User account has not been verified (check your e-mail)" :: Text; void $ sendResponseStatus unauthorized401 obj; return obj } } getNewAccountR = do { tm <- getRouteToParent; lift $ defaultLayout $ do { setTitleI RegisterLong; newAccountWidget tm } } postNewAccountR = do { tm <- getRouteToParent; mr <- lift getMessageRender; ((result, _), _) <- lift $ runFormPost $ renderDivs newAccountForm; mdata <- case result of { FormMissing -> invalidArgs ["Form is missing"] FormFailure msg -> return $ Left msg FormSuccess d -> return $ if newAccountPassword1 d == newAccountPassword2 d then Right d else Left [mr PassMismatch] }; case mdata of { Left errs -> do { setMessage $ toHtml $ concat errs; redirect newAccountR } Right d -> do { void $ lift $ createNewAccount d tm; redirect LoginR } } } allowPasswordReset _ = True getResetPasswordR = do { tm <- getRouteToParent; lift $ defaultLayout $ do { setTitleI PasswordResetTitle; resetPasswordWidget tm } } setPasswordHandler withKey u = do { tm <- getRouteToParent; lift $ defaultLayout $ do { setTitleI SetPassTitle; newPasswordWidget withKey u tm } } renderAccountMessage _ _ = defaultAccountMsg
+ Yesod.Auth.Account: class (YesodAuth master, AccountSendEmail master, AccountDB db, UserCredentials (UserAccount db), RenderMessage master FormMessage) => YesodAuthAccount db master | master -> db where checkValidUsername u | all isAlphaNum u = return $ Right u checkValidUsername _ = do { mr <- getMessageRender; return $ Left $ mr MsgInvalidUsername } checkValidEmail u = do { mr <- getMessageRender; return . either (Left . (\ e -> mr MsgInvalidEmail' <> ": " <> pack e)) (Right . decodeUtf8 . toByteString) . validate $ encodeUtf8 u } checkValidLogin u = do { validUser <- checkValidUsername u; validEmail <- checkValidEmail u; return $ case validUser of { Left _ -> validEmail Right _ -> validUser } } unregisteredLogin u = selectRep $ do { provideRep $ do { tm <- getRouteToParent; lift $ defaultLayout $ do { setTitleI MsgEmailUnverified; (do { (asWidgetT . toWidget) ((preEscapedText . pack) "<p>"); ((liftM (toHtml .) getMessageRender) >>= (\ urender_adEk -> (asWidgetT . toWidget) (urender_adEk MsgEmailUnverified))); (asWidgetT . toWidget) ((preEscapedText . pack) "</p>"); (asWidgetT . toWidget) (resendVerifyEmailWidget (username u) tm) }) } }; provideRep $ do { let obj = object ["unverified" .= True, "message" .= msg] msg = "User account has not been verified (check your e-mail)" :: Text; void $ sendResponseStatus unauthorized401 obj; return obj } } getNewAccountR = do { tm <- getRouteToParent; lift $ defaultLayout $ do { setTitleI RegisterLong; newAccountWidget tm } } postNewAccountR = do { tm <- getRouteToParent; mr <- lift getMessageRender; ((result, _), _) <- lift $ runFormPost $ renderDivs newAccountForm; mdata <- case result of { FormMissing -> invalidArgs ["Form is missing"] FormFailure msg -> return $ Left msg FormSuccess d -> return $ if newAccountPassword1 d == newAccountPassword2 d then Right d else Left [mr PassMismatch] }; case mdata of { Left errs -> do { setMessage $ toHtml $ concat errs; redirect newAccountR } Right d -> do { void $ lift $ createNewAccount d tm; redirect LoginR } } } allowPasswordReset _ = True getResetPasswordR = do { tm <- getRouteToParent; lift $ defaultLayout $ do { setTitleI PasswordResetTitle; resetPasswordWidget tm } } setPasswordHandler withKey u = do { tm <- getRouteToParent; lift $ defaultLayout $ do { setTitleI SetPassTitle; newPasswordWidget withKey u tm } } renderAccountMessage _ _ = defaultAccountMsg
Files
yesod-auth-account-fork.cabal view
@@ -1,5 +1,5 @@ name: yesod-auth-account-fork-version: 2.0+version: 2.0.1 cabal-version: >= 1.8 build-type: Simple synopsis: An account authentication plugin for Yesod@@ -54,7 +54,7 @@ , nonce >= 1.0 , tagged , text >= 0.11- , persistent >= 1.3 && < 2.2+ , persistent >= 1.3 && < 2.3 , email-validate >= 2.0 , pwstore-fast >= 2.0 , random >= 1.0