yesod-auth-1.6.10: Authentication for Yesod.

Safe HaskellNone
LanguageHaskell98

Yesod.Auth

Contents

Synopsis

Subsite

data Auth Source #

Instances
RenderRoute Auth Source # 
Instance details

Defined in Yesod.Auth.Routes

Associated Types

data Route Auth :: Type #

Methods

renderRoute :: Route Auth -> ([Text], [(Text, Text)]) #

ParseRoute Auth Source # 
Instance details

Defined in Yesod.Auth.Routes

Methods

parseRoute :: ([Text], [(Text, Text)]) -> Maybe (Route Auth) #

RouteAttrs Auth Source # 
Instance details

Defined in Yesod.Auth.Routes

Methods

routeAttrs :: Route Auth -> Set Text #

YesodAuth master => YesodSubDispatch Auth master Source # 
Instance details

Defined in Yesod.Auth

Eq (Route Auth) Source # 
Instance details

Defined in Yesod.Auth.Routes

Methods

(==) :: Route Auth -> Route Auth -> Bool #

(/=) :: Route Auth -> Route Auth -> Bool #

Read (Route Auth) Source # 
Instance details

Defined in Yesod.Auth.Routes

Show (Route Auth) Source # 
Instance details

Defined in Yesod.Auth.Routes

data Route Auth Source # 
Instance details

Defined in Yesod.Auth.Routes

data family Route a :: Type #

The type-safe URLs associated with a site argument.

Instances
RedirectUrl master (Route master) 
Instance details

Defined in Yesod.Core.Handler

Methods

toTextUrl :: (MonadHandler m, HandlerSite m ~ master) => Route master -> m Text #

(key ~ Text, val ~ Text) => RedirectUrl master (Route master, [(key, val)]) 
Instance details

Defined in Yesod.Core.Handler

Methods

toTextUrl :: (MonadHandler m, HandlerSite m ~ master) => (Route master, [(key, val)]) -> m Text #

(key ~ Text, val ~ Text) => RedirectUrl master (Route master, Map key val) 
Instance details

Defined in Yesod.Core.Handler

Methods

toTextUrl :: (MonadHandler m, HandlerSite m ~ master) => (Route master, Map key val) -> m Text #

Eq (Route LiteApp) 
Instance details

Defined in Yesod.Core.Internal.LiteApp

Eq (Route WaiSubsite) 
Instance details

Defined in Yesod.Core.Types

Eq (Route WaiSubsiteWithAuth) 
Instance details

Defined in Yesod.Core.Types

Eq (Route Auth) Source # 
Instance details

Defined in Yesod.Auth.Routes

Methods

(==) :: Route Auth -> Route Auth -> Bool #

(/=) :: Route Auth -> Route Auth -> Bool #

Ord (Route LiteApp) 
Instance details

Defined in Yesod.Core.Internal.LiteApp

Ord (Route WaiSubsite) 
Instance details

Defined in Yesod.Core.Types

Ord (Route WaiSubsiteWithAuth) 
Instance details

Defined in Yesod.Core.Types

Read (Route LiteApp) 
Instance details

Defined in Yesod.Core.Internal.LiteApp

Read (Route WaiSubsite) 
Instance details

Defined in Yesod.Core.Types

Read (Route WaiSubsiteWithAuth) 
Instance details

Defined in Yesod.Core.Types

Read (Route Auth) Source # 
Instance details

Defined in Yesod.Auth.Routes

Show (Route LiteApp) 
Instance details

Defined in Yesod.Core.Internal.LiteApp

Show (Route WaiSubsite) 
Instance details

Defined in Yesod.Core.Types

Show (Route WaiSubsiteWithAuth) 
Instance details

Defined in Yesod.Core.Types

Show (Route Auth) Source # 
Instance details

Defined in Yesod.Auth.Routes

data Route LiteApp 
Instance details

Defined in Yesod.Core.Internal.LiteApp

data Route WaiSubsite 
Instance details

Defined in Yesod.Core.Types

data Route WaiSubsiteWithAuth 
Instance details

Defined in Yesod.Core.Types

data Route Auth Source # 
Instance details

Defined in Yesod.Auth.Routes

data AuthPlugin master Source #

Constructors

AuthPlugin 

Fields

class (Yesod master, PathPiece (AuthId master), RenderMessage master FormMessage) => YesodAuth master where Source #

Minimal complete definition

loginDest, logoutDest, (authenticate | getAuthId), authPlugins

Associated Types

type AuthId master Source #

Methods

authLayout :: (MonadHandler m, HandlerSite m ~ master) => WidgetFor master () -> m Html Source #

specify the layout. Uses defaultLayout by default

loginDest :: master -> Route master Source #

Default destination on successful login, if no other destination exists.

logoutDest :: master -> Route master Source #

Default destination on successful logout, if no other destination exists.

authenticate :: (MonadHandler m, HandlerSite m ~ master) => Creds master -> m (AuthenticationResult master) Source #

Perform authentication based on the given credentials.

Default implementation is in terms of getAuthId

@since: 1.4.4

getAuthId :: (MonadHandler m, HandlerSite m ~ master) => Creds master -> m (Maybe (AuthId master)) Source #

Deprecated: Define authenticate instead; getAuthId will be removed in the next major version

Determine the ID associated with the set of credentials.

Default implementation is in terms of authenticate

authPlugins :: master -> [AuthPlugin master] Source #

Which authentication backends to use.

loginHandler :: AuthHandler master Html Source #

What to show on the login page.

By default this calls defaultLoginHandler, which concatenates plugin widgets and wraps the result in authLayout. Override if you need fancy widget containers, additional functionality, or an entirely custom page. For example, in some applications you may want to prevent the login page being displayed for a user who is already logged in, even if the URL is visited explicitly; this can be done by overriding loginHandler in your instance declaration with something like:

instance YesodAuth App where
    ...
    loginHandler = do
        ma <- lift maybeAuthId
        when (isJust ma) $
            lift $ redirect HomeR   -- or any other Handler code you want
        defaultLoginHandler

renderAuthMessage Source #

Arguments

:: master 
-> [Text]

languages

-> AuthMessage 
-> Text 

Used for i18n of messages provided by this package.

redirectToReferer :: master -> Bool Source #

After login and logout, redirect to the referring page, instead of loginDest and logoutDest. Default is False.

redirectToCurrent :: master -> Bool Source #

When being redirected to the login page should the current page be set to redirect back to. Default is True.

Since: 1.4.21

authHttpManager :: (MonadHandler m, HandlerSite m ~ master) => m Manager Source #

Return an HTTP connection manager that is stored in the foundation type. This allows backends to reuse persistent connections. If none of the backends you're using use HTTP connections, you can safely return error "authHttpManager" here.

onLogin :: (MonadHandler m, master ~ HandlerSite m) => m () Source #

Called on a successful login. By default, calls addMessageI "success" NowLoggedIn.

onLogout :: (MonadHandler m, master ~ HandlerSite m) => m () Source #

Called on logout. By default, does nothing

maybeAuthId :: (MonadHandler m, master ~ HandlerSite m) => m (Maybe (AuthId master)) Source #

Retrieves user credentials, if user is authenticated.

By default, this calls defaultMaybeAuthId to get the user ID from the session. This can be overridden to allow authentication via other means, such as checking for a special token in a request header. This is especially useful for creating an API to be accessed via some means other than a browser.

Since: 1.2.0

maybeAuthId :: (MonadHandler m, master ~ HandlerSite m, YesodAuthPersist master, Typeable (AuthEntity master)) => m (Maybe (AuthId master)) Source #

Retrieves user credentials, if user is authenticated.

By default, this calls defaultMaybeAuthId to get the user ID from the session. This can be overridden to allow authentication via other means, such as checking for a special token in a request header. This is especially useful for creating an API to be accessed via some means other than a browser.

Since: 1.2.0

onErrorHtml :: (MonadHandler m, HandlerSite m ~ master) => Route master -> Text -> m Html Source #

Called on login error for HTTP requests. By default, calls addMessage with "error" as status and redirects to dest.

runHttpRequest :: (MonadHandler m, HandlerSite m ~ master, MonadUnliftIO m) => Request -> (Response BodyReader -> m a) -> m a Source #

runHttpRequest gives you a chance to handle an HttpException and retry The default behavior is to simply execute the request which will throw an exception on failure

The HTTP Request is given in case it is useful to change behavior based on inspecting the request. This is an experimental API that is not broadly used throughout the yesod-auth code base

class (YesodAuth master, YesodPersist master) => YesodAuthPersist master where Source #

Class which states that the given site is an instance of YesodAuth and that its AuthId is a lookup key for the full user information in a YesodPersist database.

The default implementation of getAuthEntity assumes that the AuthId for the YesodAuth superclass is in fact a persistent Key for the given value. This is the common case in Yesod, and means that you can easily look up the full information on a given user.

Since: 1.4.0

Minimal complete definition

Nothing

Associated Types

type AuthEntity master :: * Source #

If the AuthId for a given site is a persistent ID, this will give the value for that entity. E.g.:

type AuthId MySite = UserId
AuthEntity MySite ~ User

Since: 1.2.0

Methods

getAuthEntity :: (MonadHandler m, HandlerSite m ~ master) => AuthId master -> m (Maybe (AuthEntity master)) Source #

getAuthEntity :: (YesodPersistBackend master ~ backend, PersistRecordBackend (AuthEntity master) backend, Key (AuthEntity master) ~ AuthId master, PersistStore backend, MonadHandler m, HandlerSite m ~ master) => AuthId master -> m (Maybe (AuthEntity master)) Source #

Plugin interface

data Creds master Source #

User credentials

Constructors

Creds 

Fields

Instances
Show (Creds master) Source # 
Instance details

Defined in Yesod.Auth

Methods

showsPrec :: Int -> Creds master -> ShowS #

show :: Creds master -> String #

showList :: [Creds master] -> ShowS #

setCreds Source #

Arguments

:: (MonadHandler m, YesodAuth (HandlerSite m)) 
=> Bool

if HTTP redirects should be done

-> Creds (HandlerSite m)

new credentials

-> m () 

Sets user credentials for the session after checking them with authentication backends.

setCredsRedirect Source #

Arguments

:: (MonadHandler m, YesodAuth (HandlerSite m)) 
=> Creds (HandlerSite m)

new credentials

-> m TypedContent 

clearCreds Source #

Arguments

:: (MonadHandler m, YesodAuth (HandlerSite m)) 
=> Bool

if HTTP, redirect to logoutDest

-> m () 

Clears current user credentials for the session.

Since: 1.1.7

loginErrorMessage :: (MonadHandler m, YesodAuth (HandlerSite m)) => Route (HandlerSite m) -> Text -> m TypedContent Source #

For HTML, set the message and redirect to the route. For JSON, send the message and a 401 status

User functions

data AuthenticationResult master Source #

The result of an authentication based on credentials

Since: 1.4.4

Constructors

Authenticated (AuthId master)

Authenticated successfully

UserError AuthMessage

Invalid credentials provided by user

ServerError Text

Some other error

defaultMaybeAuthId :: (MonadHandler m, HandlerSite m ~ master, YesodAuthPersist master, Typeable (AuthEntity master)) => m (Maybe (AuthId master)) Source #

Retrieves user credentials from the session, if user is authenticated.

This function does not confirm that the credentials are valid, see maybeAuthIdRaw for more information. The first call in a request does a database request to make sure that the account is still in the database.

Since: 1.1.2

defaultLoginHandler :: AuthHandler master Html Source #

Default handler to show the login page.

This is the default loginHandler. It concatenates plugin widgets and wraps the result in authLayout. See loginHandler for more details.

Since: 1.4.9

maybeAuthPair :: (YesodAuthPersist master, Typeable (AuthEntity master), MonadHandler m, HandlerSite m ~ master) => m (Maybe (AuthId master, AuthEntity master)) Source #

Similar to maybeAuth, but doesn’t assume that you are using a Persistent database.

Since: 1.4.0

maybeAuth :: (YesodAuthPersist master, val ~ AuthEntity master, Key val ~ AuthId master, PersistEntity val, Typeable val, MonadHandler m, HandlerSite m ~ master) => m (Maybe (Entity val)) Source #

Similar to maybeAuthId, but additionally look up the value associated with the user's database identifier to get the value in the database. This assumes that you are using a Persistent database.

Since: 1.1.0

requireAuthId :: (MonadHandler m, YesodAuth (HandlerSite m)) => m (AuthId (HandlerSite m)) Source #

Similar to maybeAuthId, but redirects to a login page if user is not authenticated or responds with error 401 if this is an API client (expecting JSON).

Since: 1.1.0

requireAuthPair :: (YesodAuthPersist master, Typeable (AuthEntity master), MonadHandler m, HandlerSite m ~ master) => m (AuthId master, AuthEntity master) Source #

Similar to requireAuth, but not tied to Persistent's Entity type. Instead, the AuthId and AuthEntity are returned in a tuple.

Since: 1.4.0

requireAuth :: (YesodAuthPersist master, val ~ AuthEntity master, Key val ~ AuthId master, PersistEntity val, Typeable val, MonadHandler m, HandlerSite m ~ master) => m (Entity val) Source #

Similar to maybeAuth, but redirects to a login page if user is not authenticated or responds with error 401 if this is an API client (expecting JSON).

Since: 1.1.0

Exception

Helper

type AuthHandler master a = forall m. MonadAuthHandler master m => m a Source #

Internal

credsKey :: Text Source #

Internal session key used to hold the authentication information.

Since: 1.2.3

Orphan instances

YesodAuth master => RenderMessage master AuthMessage Source # 
Instance details

Methods

renderMessage :: master -> [Lang] -> AuthMessage -> Text #

YesodAuth master => YesodSubDispatch Auth master Source # 
Instance details