yesod-auth 1.4.13.1 → 1.4.13.2
raw patch · 2 files changed
+13/−3 lines, 2 filesdep ~persistentdep ~persistent-templatePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: persistent, persistent-template
API changes (from Hackage documentation)
- Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.GoogleEmail2.Email
- Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.GoogleEmail2.EmailType
- Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.GoogleEmail2.Gender
- Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.GoogleEmail2.Name
- Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.GoogleEmail2.Organization
- Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.GoogleEmail2.OrganizationType
- Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.GoogleEmail2.Person
- Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.GoogleEmail2.PersonImage
- Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.GoogleEmail2.PersonURI
- Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.GoogleEmail2.PersonURIType
- Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.GoogleEmail2.Place
- Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.GoogleEmail2.RelationshipStatus
- Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.Class.FromJSON Yesod.Auth.GoogleEmail2.Token
+ Yesod.Auth: type AuthEntity master = KeyEntity (AuthId master);
+ Yesod.Auth: type family AuthEntity master :: *;
+ Yesod.Auth: }
+ Yesod.Auth.Email: type family AuthEmailId site;
+ Yesod.Auth.Email: }
+ Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.FromJSON.FromJSON Yesod.Auth.GoogleEmail2.Email
+ Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.FromJSON.FromJSON Yesod.Auth.GoogleEmail2.EmailType
+ Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.FromJSON.FromJSON Yesod.Auth.GoogleEmail2.Gender
+ Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.FromJSON.FromJSON Yesod.Auth.GoogleEmail2.Name
+ Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.FromJSON.FromJSON Yesod.Auth.GoogleEmail2.Organization
+ Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.FromJSON.FromJSON Yesod.Auth.GoogleEmail2.OrganizationType
+ Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.FromJSON.FromJSON Yesod.Auth.GoogleEmail2.Person
+ Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.FromJSON.FromJSON Yesod.Auth.GoogleEmail2.PersonImage
+ Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.FromJSON.FromJSON Yesod.Auth.GoogleEmail2.PersonURI
+ Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.FromJSON.FromJSON Yesod.Auth.GoogleEmail2.PersonURIType
+ Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.FromJSON.FromJSON Yesod.Auth.GoogleEmail2.Place
+ Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.FromJSON.FromJSON Yesod.Auth.GoogleEmail2.RelationshipStatus
+ Yesod.Auth.GoogleEmail2: instance Data.Aeson.Types.FromJSON.FromJSON Yesod.Auth.GoogleEmail2.Token
- Yesod.Auth: class (Yesod master, PathPiece (AuthId master), RenderMessage master FormMessage) => YesodAuth master where type family AuthId master authLayout = defaultLayout authenticate creds = do { muid <- getAuthId creds; return $ maybe (UserError InvalidLogin) Authenticated muid } getAuthId creds = do { auth <- authenticate creds; return $ case auth of { Authenticated auid -> Just auid _ -> Nothing } } loginHandler = defaultLoginHandler renderAuthMessage _ _ = defaultMessage redirectToReferer _ = False onLogin = addMessageI "success" NowLoggedIn onLogout = return () maybeAuthId = defaultMaybeAuthId onErrorHtml dest msg = do { addMessage "error" $ toHtml msg; fmap asHtml $ redirect dest } runHttpRequest req inner = do { man <- authHttpManager <$> getYesod; HandlerT $ \ t -> withResponse req man $ \ res -> unHandlerT (inner res) t }
+ Yesod.Auth: class (Yesod master, PathPiece (AuthId master), RenderMessage master FormMessage) => YesodAuth master where type AuthId master authLayout = defaultLayout authenticate creds = do { muid <- getAuthId creds; return $ maybe (UserError InvalidLogin) Authenticated muid } getAuthId creds = do { auth <- authenticate creds; return $ case auth of { Authenticated auid -> Just auid _ -> Nothing } } loginHandler = defaultLoginHandler renderAuthMessage _ _ = defaultMessage redirectToReferer _ = False onLogin = addMessageI "success" NowLoggedIn onLogout = return () maybeAuthId = defaultMaybeAuthId onErrorHtml dest msg = do { addMessage "error" $ toHtml msg; fmap asHtml $ redirect dest } runHttpRequest req inner = do { man <- authHttpManager <$> getYesod; HandlerT $ \ t -> withResponse req man $ \ res -> unHandlerT (inner res) t } where {
- Yesod.Auth: class (YesodAuth master, YesodPersist master) => YesodAuthPersist master where type family AuthEntity master :: * AuthEntity master = KeyEntity (AuthId master) getAuthEntity = runDB . get
+ Yesod.Auth: class (YesodAuth master, YesodPersist master) => YesodAuthPersist master where type AuthEntity master :: * type AuthEntity master = KeyEntity (AuthId master) getAuthEntity = runDB . get where {
- Yesod.Auth: getAuthEntity :: YesodAuthPersist master => AuthId master -> HandlerT master IO (Maybe (AuthEntity master))
+ Yesod.Auth: getAuthEntity :: (YesodAuthPersist master, YesodPersistBackend master ~ backend, PersistRecordBackend (AuthEntity master) backend, Key (AuthEntity master) ~ AuthId master, PersistStore backend) => AuthId master -> HandlerT master IO (Maybe (AuthEntity master))
- Yesod.Auth: maybeAuthId :: YesodAuth master => HandlerT master IO (Maybe (AuthId master))
+ Yesod.Auth: maybeAuthId :: (YesodAuth master, YesodAuthPersist master, Typeable (AuthEntity master)) => HandlerT master IO (Maybe (AuthId master))
- Yesod.Auth.Email: class (YesodAuth site, PathPiece (AuthEmailId site), RenderMessage site AuthMessage) => YesodAuthEmail site where type family AuthEmailId site randomKey _ = nonce128urlT defaultNonceGen needOldPassword aid' = do { mkey <- lookupSession loginLinkKey; case mkey >>= readMay . unpack of { Just (aidT, time) | Just aid <- fromPathPiece aidT, toPathPiece (aid `asTypeOf` aid') == toPathPiece aid' -> do { now <- liftIO getCurrentTime; return $ addUTCTime (60 * 30) time <= now } _ -> return True } } checkPasswordSecurity _ x | length x >= 3 = return $ Right () | otherwise = return $ Left "Password must be at least three characters" confirmationEmailSentResponse identifier = do { mr <- getMessageRender; selectRep $ do { provideJsonMessage (mr msg); provideRep $ authLayout $ do { setTitleI ConfirmationEmailSentTitle; (do { (asWidgetT . toWidget) ((preEscapedText . pack) "<p>"); ((liftM (toHtml .) getMessageRender) >>= (\ urender_aJYi -> (asWidgetT . toWidget) (urender_aJYi msg))); (asWidgetT . toWidget) ((preEscapedText . pack) "</p>\n") }) } } } where msg = ConfirmationEmailSent identifier normalizeEmailAddress _ = toLower registerHandler = defaultRegisterHandler forgotPasswordHandler = defaultForgotPasswordHandler setPasswordHandler = defaultSetPasswordHandler
+ Yesod.Auth.Email: class (YesodAuth site, PathPiece (AuthEmailId site), RenderMessage site AuthMessage) => YesodAuthEmail site where type AuthEmailId site randomKey _ = nonce128urlT defaultNonceGen needOldPassword aid' = do { mkey <- lookupSession loginLinkKey; case mkey >>= readMay . unpack of { Just (aidT, time) | Just aid <- fromPathPiece aidT, toPathPiece (aid `asTypeOf` aid') == toPathPiece aid' -> do { now <- liftIO getCurrentTime; return $ addUTCTime (60 * 30) time <= now } _ -> return True } } checkPasswordSecurity _ x | length x >= 3 = return $ Right () | otherwise = return $ Left "Password must be at least three characters" confirmationEmailSentResponse identifier = do { mr <- getMessageRender; selectRep $ do { provideJsonMessage (mr msg); provideRep $ authLayout $ do { setTitleI ConfirmationEmailSentTitle; (do { (asWidgetT . toWidget) ((preEscapedText . pack) "<p>"); ((fmap (toHtml .) getMessageRender) >>= (\ urender_aKXQ -> (asWidgetT . toWidget) (urender_aKXQ msg))); (asWidgetT . toWidget) ((preEscapedText . pack) "</p>\n") }) } } } where msg = ConfirmationEmailSent identifier normalizeEmailAddress _ = toLower registerHandler = defaultRegisterHandler forgotPasswordHandler = defaultForgotPasswordHandler setPasswordHandler = defaultSetPasswordHandler where {
Files
- Yesod/Auth.hs +10/−0
- yesod-auth.cabal +3/−3
Yesod/Auth.hs view
@@ -499,7 +499,16 @@ getAuthEntity :: AuthId master -> HandlerT master IO (Maybe (AuthEntity master)) +#if MIN_VERSION_persistent(2,5,0) default getAuthEntity+ :: ( YesodPersistBackend master ~ backend+ , PersistRecordBackend (AuthEntity master) backend+ , Key (AuthEntity master) ~ AuthId master+ , PersistStore backend+ )+ => AuthId master -> HandlerT master IO (Maybe (AuthEntity master))+#else+ default getAuthEntity :: ( YesodPersistBackend master ~ PersistEntityBackend (AuthEntity master) , Key (AuthEntity master) ~ AuthId master@@ -507,6 +516,7 @@ , PersistEntity (AuthEntity master) ) => AuthId master -> HandlerT master IO (Maybe (AuthEntity master))+#endif getAuthEntity = runDB . get
yesod-auth.cabal view
@@ -1,5 +1,5 @@ name: yesod-auth-version: 1.4.13.1+version: 1.4.13.2 license: MIT license-file: LICENSE author: Michael Snoyman, Patrick Brisbin@@ -37,8 +37,8 @@ , unordered-containers , yesod-form >= 1.4 && < 1.5 , transformers >= 0.2.2- , persistent >= 2.1 && < 2.3- , persistent-template >= 2.1 && < 2.2+ , persistent >= 2.1 && < 2.6+ , persistent-template >= 2.1 && < 2.6 , http-client , http-conduit >= 2.1 , aeson >= 0.7