packages feed

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