packages feed

yesod-auth 1.4.12 → 1.4.13

raw patch · 8 files changed

+309/−119 lines, 8 filesdep ~yesod-core

Dependency ranges changed: yesod-core

Files

ChangeLog.md view
@@ -1,3 +1,8 @@+## 1.4.13++* Add a CSRF token to the login form from `Yesod.Auth.Hardcoded`, making it compatible with the CSRF middleware [#1161](https://github.com/yesodweb/yesod/pull/1161)+* Multiple session messages. [#1187](https://github.com/yesodweb/yesod/pull/1187)+ ## 1.4.12  * Deprecated Yesod.Auth.GoogleEmail
Yesod/Auth.hs view
@@ -189,9 +189,9 @@     authHttpManager :: master -> Manager      -- | Called on a successful login. By default, calls-    -- @setMessageI NowLoggedIn@.+    -- @addMessageI "success" NowLoggedIn@.     onLogin :: HandlerT master IO ()-    onLogin = setMessageI Msg.NowLoggedIn+    onLogin = addMessageI "success" Msg.NowLoggedIn      -- | Called on logout. By default, does nothing     onLogout :: HandlerT master IO ()@@ -214,10 +214,10 @@     maybeAuthId = defaultMaybeAuthId      -- | Called on login error for HTTP requests. By default, calls-    -- @setMessage@ and redirects to @dest@.+    -- @addMessage@ with "error" as status and redirects to @dest@.     onErrorHtml :: (MonadResourceBase m) => Route master -> Text -> HandlerT master m Html     onErrorHtml dest msg = do-        setMessage $ toHtml msg+        addMessage "error" $ toHtml msg         fmap asHtml $ redirect dest      -- | runHttpRequest gives you a chance to handle an HttpException and retry
Yesod/Auth/BrowserId.hs view
@@ -2,7 +2,10 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE RecordWildCards #-}+-- | NOTE: Mozilla Persona will be shut down by the end of 2016, therefore this+-- module is no longer recommended for use. module Yesod.Auth.BrowserId+    {-# DEPRECATED "Mozilla Persona will be shut down by the end of 2016" #-}     ( authBrowserId     , createOnClick, createOnClickOverride     , def
Yesod/Auth/Email.hs view
@@ -107,6 +107,11 @@     , emailCredsEmail  :: Email     } +data ForgotPasswordForm = ForgotPasswordForm { forgotEmail :: Text }+data PasswordForm = PasswordForm { passwordCurrent :: Text, passwordNew :: Text, passwordConfirm :: Text }+data UserForm = UserForm { email :: Text }+data UserLoginForm = UserLoginForm { loginEmail :: Text, loginPassword :: Text }+ class ( YesodAuth site       , PathPiece (AuthEmailId site)       , (RenderMessage site Msg.AuthMessage)@@ -253,30 +258,9 @@       -> AuthHandler site TypedContent     setPasswordHandler = defaultSetPasswordHandler --authEmail :: YesodAuthEmail m => AuthPlugin m+authEmail :: (YesodAuthEmail m) => AuthPlugin m authEmail =-    AuthPlugin "email" dispatch $ \tm ->-        [whamlet|-$newline never-<form method="post" action="@{tm loginR}">-    <table>-        <tr>-            <th>_{Msg.Email}-            <td>-                <input type="email" name="email" required>-        <tr>-            <th>_{Msg.Password}-            <td>-                <input type="password" name="password" required>-        <tr>-            <td colspan="2">-                <button type=submit .btn .btn-success>-                    _{Msg.LoginViaEmail}-                &nbsp;-                <a href="@{tm registerR}" .btn .btn-default>-                    _{Msg.RegisterLong}-|]+    AuthPlugin "email" dispatch emailLoginHandler   where     dispatch "GET" ["register"] = getRegisterR >>= sendResponse     dispatch "POST" ["register"] = postRegisterR >>= sendResponse@@ -294,24 +278,99 @@ getRegisterR :: YesodAuthEmail master => HandlerT Auth (HandlerT master IO) Html getRegisterR = registerHandler +emailLoginHandler :: YesodAuthEmail master => (Route Auth -> Route master) -> WidgetT master IO ()+emailLoginHandler toParent = do+        (widget, enctype) <- liftWidgetT $ generateFormPost loginForm++        [whamlet|+            <form method="post" action="@{toParent loginR}">+                <div id="emailLoginForm">+                    ^{widget}+                    <div>+                        <button type=submit .btn .btn-success>+                            _{Msg.LoginViaEmail}+                        &nbsp;+                        <a href="@{toParent registerR}" .btn .btn-default>+                            _{Msg.RegisterLong}+        |]+  where+    loginForm extra = do++        emailMsg <- renderMessage' Msg.Email+        (emailRes, emailView) <- mreq emailField (emailSettings emailMsg) Nothing++        passwordMsg <- renderMessage' Msg.Password+        (passwordRes, passwordView) <- mreq passwordField (passwordSettings passwordMsg) Nothing++        let userRes = UserLoginForm <$> emailRes <*> passwordRes+        let widget = do+            [whamlet|+                #{extra}+                <div>+                    ^{fvInput emailView}+                <div>+                    ^{fvInput passwordView}+            |]++        return (userRes, widget)+    emailSettings emailMsg = do+        FieldSettings {+            fsLabel = SomeMessage Msg.Email,+            fsTooltip = Nothing,+            fsId = Just "email",+            fsName = Just "email",+            fsAttrs = [("autofocus", ""), ("placeholder", emailMsg)]+        }+    passwordSettings passwordMsg =+         FieldSettings {+            fsLabel = SomeMessage Msg.Password,+            fsTooltip = Nothing,+            fsId = Just "password",+            fsName = Just "password",+            fsAttrs = [("placeholder", passwordMsg)]+        }+    renderMessage' msg = do+        langs <- languages+        master <- getYesod+        return $ renderAuthMessage master langs msg -- | Default implementation of 'registerHandler'. -- -- Since: 1.2.6 defaultRegisterHandler :: YesodAuthEmail master => AuthHandler master Html defaultRegisterHandler = do-    email <- newIdent-    tp <- getRouteToParent+    (widget, enctype) <- lift $ generateFormPost registrationForm+    toParentRoute <- getRouteToParent     lift $ authLayout $ do         setTitleI Msg.RegisterLong         [whamlet|             <p>_{Msg.EnterEmail}-            <form method="post" action="@{tp registerR}">+            <form method="post" action="@{toParentRoute registerR}" enctype=#{enctype}>                 <div id="registerForm">-                    <label for=#{email}>_{Msg.Email}:-                    <input ##{email} type="email" name="email" width="150" autofocus>+                    ^{widget}                 <button .btn>_{Msg.Register}         |]+    where+        registrationForm extra = do+            let emailSettings = FieldSettings {+                fsLabel = SomeMessage Msg.Email,+                fsTooltip = Nothing,+                fsId = Just "email",+                fsName = Just "email",+                fsAttrs = [("autofocus", "")]+            } +            (emailRes, emailView) <- mreq emailField emailSettings Nothing++            let userRes = UserForm <$> emailRes+            let widget = do+                [whamlet|+                    #{extra}+                    ^{fvLabel emailView}+                    ^{fvInput emailView}+                |]++            return (userRes, widget)+ registerHelper :: YesodAuthEmail master                => Bool -- ^ allow usernames?                -> Route Auth@@ -365,19 +424,39 @@ -- Since: 1.2.6 defaultForgotPasswordHandler :: YesodAuthEmail master => AuthHandler master Html defaultForgotPasswordHandler = do-    tp <- getRouteToParent-    email <- newIdent+    (widget, enctype) <- lift $ generateFormPost forgotPasswordForm+    toParent <- getRouteToParent     lift $ authLayout $ do         setTitleI Msg.PasswordResetTitle         [whamlet|             <p>_{Msg.PasswordResetPrompt}-            <form method="post" action="@{tp forgotPasswordR}">-                <div id="registerForm">-                    <label for=#{email}>_{Msg.ProvideIdentifier}-                    <input ##{email} type=text name="email" width="150" autofocus>-                <button .btn>_{Msg.SendPasswordResetEmail}+            <form method=post action=@{toParent forgotPasswordR} enctype=#{enctype}>+                <div id="forgotPasswordForm">+                    ^{widget}+                    <button .btn>_{Msg.SendPasswordResetEmail}         |]+  where+    forgotPasswordForm extra = do+        (emailRes, emailView) <- mreq emailField emailSettings Nothing+    +        let forgotPasswordRes = ForgotPasswordForm <$> emailRes+        let widget = do+            [whamlet|+                #{extra}+                ^{fvLabel emailView}+                ^{fvInput emailView}+            |]+        return (forgotPasswordRes, widget) +    emailSettings =+        FieldSettings {+            fsLabel = SomeMessage Msg.ProvideIdentifier,+            fsTooltip = Nothing,+            fsId = Just "forgotPassword",+            fsName = Just "email",+            fsAttrs = [("autofocus", "")]+        }+ postForgotPasswordR :: YesodAuthEmail master => HandlerT Auth (HandlerT master IO) TypedContent postForgotPasswordR = registerHelper True forgotPasswordR @@ -400,7 +479,7 @@                     let msgAv = Msg.AddressVerified                     selectRep $ do                       provideRep $ do-                        lift $ setMessageI msgAv+                        lift $ addMessageI "success" msgAv                         fmap asHtml $ redirect setpassR                       provideJsonMessage $ mr msgAv         _ -> invalidKey mr@@ -461,41 +540,78 @@ -- Since: 1.2.6 defaultSetPasswordHandler :: YesodAuthEmail master => Bool -> AuthHandler master TypedContent defaultSetPasswordHandler needOld = do-    tp <- getRouteToParent-    pass0 <- newIdent-    pass1 <- newIdent-    pass2 <- newIdent-    mr <- lift getMessageRender+    messageRender <- lift getMessageRender+    toParent <- getRouteToParent     selectRep $ do-      provideJsonMessage $ mr Msg.SetPass-      provideRep $ lift $ authLayout $ do-          setTitleI Msg.SetPassTitle-          [whamlet|-$newline never-<h3>_{Msg.SetPass}-<form method="post" action="@{tp setpassR}">-    <table>-        $if needOld-            <tr>-                <th>-                    <label for=#{pass0}>Current Password-                <td>-                    <input ##{pass0} type="password" name="current" autofocus>-        <tr>-            <th>-                <label for=#{pass1}>_{Msg.NewPass}-            <td>-                <input ##{pass1} type="password" name="new" :not needOld:autofocus>-        <tr>-            <th>-                <label for=#{pass2}>_{Msg.ConfirmPass}-            <td>-                <input ##{pass2} type="password" name="confirm">-        <tr>-            <td colspan="2">-                <input type="submit" value=_{Msg.SetPassTitle}>-|]+        provideJsonMessage $ messageRender Msg.SetPass+        provideRep $ lift $ authLayout $ do+            (widget, enctype) <- liftWidgetT $ generateFormPost $ setPasswordForm needOld+            setTitleI Msg.SetPassTitle+            [whamlet|+                <h3>_{Msg.SetPass}+                <form method="post" action="@{toParent setpassR}">+                    ^{widget}+            |]+  where+    setPasswordForm needOld extra = do+        (currentPasswordRes, currentPasswordView) <- mreq passwordField currentPasswordSettings Nothing+        (newPasswordRes, newPasswordView) <- mreq passwordField newPasswordSettings Nothing+        (confirmPasswordRes, confirmPasswordView) <- mreq passwordField confirmPasswordSettings Nothing +        let passwordFormRes = PasswordForm <$> currentPasswordRes <*> newPasswordRes <*> confirmPasswordRes+        let widget = do+            [whamlet|+                #{extra}+                <table>+                    $if needOld+                        <tr>+                            <th>+                                ^{fvLabel currentPasswordView}+                            <td>+                                ^{fvInput currentPasswordView}+                    <tr>+                        <th>+                            ^{fvLabel newPasswordView}+                        <td>+                            ^{fvInput newPasswordView}+                    <tr>+                        <th>+                            ^{fvLabel confirmPasswordView}+                        <td>+                            ^{fvInput confirmPasswordView}+                    <tr>+                        <td colspan="2">+                            <input type=submit value=_{Msg.SetPassTitle}>+            |]++        return (passwordFormRes, widget)+    currentPasswordSettings =+         FieldSettings {+             fsLabel = SomeMessage Msg.CurrentPassword,+             fsTooltip = Nothing,+             fsId = Just "currentPassword",+             fsName = Just "current",+             fsAttrs = [("autofocus", "")]+         }+    newPasswordSettings =+        FieldSettings {+            fsLabel = SomeMessage Msg.NewPass,+            fsTooltip = Nothing,+            fsId = Just "newPassword",+            fsName = Just "new",+            fsAttrs = [("autofocus", ""), (":not", ""), ("needOld:autofocus", "")]+        }+    confirmPasswordSettings =+        FieldSettings {+            fsLabel = SomeMessage Msg.ConfirmPass,+            fsTooltip = Nothing,+            fsId = Just "confirmPassword",+            fsName = Just "confirm",+            fsAttrs = [("autofocus", "")]+        }+++ postPasswordR :: YesodAuthEmail master => HandlerT Auth (HandlerT master IO) TypedContent postPasswordR = do     maid <- lift maybeAuthId@@ -534,7 +650,7 @@                       y <- lift $ do                           setPassword aid salted                           deleteSession loginLinkKey-                          setMessageI msgOk+                          addMessageI "success" msgOk                           getYesod                        mr <- lift getMessageRender
Yesod/Auth/GoogleEmail2.hs view
@@ -59,7 +59,7 @@                                            lift, liftIO, lookupGetParam,                                            lookupSession, notFound, redirect,                                            setSession, whamlet, (.:),-                                           setMessage, getYesod, authRoute,+                                           addMessage, getYesod, authRoute,                                            toHtml)  @@ -200,7 +200,7 @@                                     case err of                                         "access_denied" -> "Access denied"                                         _ -> "Unknown error occurred: " `T.append` err-                            setMessage $ toHtml msg+                            addMessage "error" $ toHtml msg                             lift $ redirect $ logoutDest master                 Just c -> return c 
Yesod/Auth/Hardcoded.hs view
@@ -160,10 +160,13 @@   where     dispatch "POST" ["login"] = postLoginR >>= sendResponse     dispatch _ _ = notFound-    loginWidget toMaster =+    loginWidget toMaster = do+      request <- getRequest       [whamlet|         $newline never         <form method="post" action="@{toMaster loginR}">+          $maybe t <- reqToken request+            <input type=hidden name=#{defaultCsrfParamName} value=#{t}>           <table>             <tr>               <th>_{Msg.UserName}
Yesod/Auth/Message.hs view
@@ -17,6 +17,7 @@     , czechMessage     , russianMessage     , dutchMessage+    , danishMessage     ) where  import           Data.Monoid (mappend,(<>))@@ -60,6 +61,7 @@     | ProvideIdentifier     | SendPasswordResetEmail     | PasswordResetPrompt+    | CurrentPassword     | InvalidUsernamePass     | Logout     | LogoutTitle@@ -78,6 +80,7 @@ englishMessage Email = "Email" englishMessage UserName = "User name" englishMessage Password = "Password"+englishMessage CurrentPassword = "Current Password" englishMessage Register = "Register" englishMessage RegisterLong = "Register a new account" englishMessage EnterEmail = "Enter your e-mail address below, and a confirmation e-mail will be sent to you."@@ -124,6 +127,7 @@ portugueseMessage Email = "E-mail" portugueseMessage UserName = "Nome de usuário" -- FIXME by Google Translate "user name" portugueseMessage Password = "Senha"+portugueseMessage CurrentPassword = "Palavra de passe" portugueseMessage Register = "Registrar" portugueseMessage RegisterLong = "Registrar uma nova conta" portugueseMessage EnterEmail = "Por favor digite seu endereço de e-mail abaixo e um e-mail de confirmação será enviado para você."@@ -171,6 +175,7 @@ spanishMessage Email = "Correo electrónico" spanishMessage UserName = "Nombre de Usuario" -- FIXME by Google Translate "user name" spanishMessage Password = "Contraseña"+spanishMessage CurrentPassword = "Contraseña actual" spanishMessage Register = "Registrarse" spanishMessage RegisterLong = "Registrar una nueva cuenta" spanishMessage EnterEmail = "Coloque su dirección de correo electrónico, y un correo de confirmación le será enviado a su cuenta."@@ -218,6 +223,7 @@ swedishMessage Email = "Epost" swedishMessage UserName = "Användarnamn"  -- FIXME by Google Translate "user name" swedishMessage Password = "Lösenord"+swedishMessage CurrentPassword = "Current password" swedishMessage Register = "Registrera" swedishMessage RegisterLong = "Registrera ett nytt konto" swedishMessage EnterEmail = "Skriv in din epost nedan så kommer ett konfirmationsmail skickas till adressen."@@ -266,6 +272,7 @@ germanMessage Email = "Email" germanMessage UserName = "Benutzername" -- FIXME by Google Translate "user name" germanMessage Password = "Passwort"+germanMessage CurrentPassword = "Aktuelles Passwort" germanMessage Register = "Registrieren" germanMessage RegisterLong = "Neuen Account registrieren" germanMessage EnterEmail = "Bitte die e-Mail Adresse angeben, eine Bestätigungsmail wird verschickt."@@ -283,7 +290,7 @@ germanMessage SetPass = "Neues Passwort angeben" germanMessage NewPass = "Neues Passwort" germanMessage ConfirmPass = "Bestätigen"-germanMessage PassMismatch = "Die Passwörter stimmten nicht überein"+germanMessage PassMismatch = "Die Passwörter stimmen nicht überein" germanMessage PassUpdated = "Passwort überschrieben" germanMessage Facebook = "Login über Facebook" germanMessage LoginViaEmail = "Login via e-Mail"@@ -303,7 +310,7 @@ germanMessage i@(IdentifierNotFound _) = englishMessage i germanMessage Logout = "Ausloggen" -- FIXME by Google Translate germanMessage LogoutTitle = "Ausloggen" -- FIXME by Google Translate-germanMessage AuthError = "Authorisierungsfehler" -- FIXME by Google Translate+germanMessage AuthError = "Autorisierungsfehler" -- FIXME by Google Translate  frenchMessage :: AuthMessage -> Text frenchMessage NoOpenID = "Aucun fournisseur OpenID n'a été trouvé"@@ -313,6 +320,7 @@ frenchMessage Email = "Adresse électronique" frenchMessage UserName = "Nom d'utilisateur" -- FIXME by Google Translate "user name" frenchMessage Password = "Mot de passe"+frenchMessage CurrentPassword = "Mot de passe actuel" frenchMessage Register = "S'inscrire" frenchMessage RegisterLong = "Créer un compte" frenchMessage EnterEmail = "Entrez ci-dessous votre adresse électronique, et un message de confirmation vous sera envoyé"@@ -359,6 +367,7 @@ norwegianBokmålMessage Email = "E-post" norwegianBokmålMessage UserName = "Brukernavn" -- FIXME by Google Translate "user name" norwegianBokmålMessage Password = "Passord"+norwegianBokmålMessage CurrentPassword = "Current password" norwegianBokmålMessage Register = "Registrer" norwegianBokmålMessage RegisterLong = "Registrer en ny konto" norwegianBokmålMessage EnterEmail = "Skriv inn e-postadressen din nedenfor og en e-postkonfirmasjon vil bli sendt."@@ -406,6 +415,7 @@ japaneseMessage Email = "Eメール" japaneseMessage UserName = "ユーザー名" -- FIXME by Google Translate "user name" japaneseMessage Password = "パスワード"+japaneseMessage CurrentPassword = "Current password" japaneseMessage Register = "登録" japaneseMessage RegisterLong = "新規アカウント登録" japaneseMessage EnterEmail = "メールアドレスを入力してください。確認メールが送られます"@@ -453,6 +463,7 @@ finnishMessage Email = "Sähköposti" finnishMessage UserName = "Käyttäjätunnus" -- FIXME by Google Translate "user name" finnishMessage Password = "Salasana"+finnishMessage Password = "Current password" finnishMessage Register = "Luo uusi" finnishMessage RegisterLong = "Luo uusi tili" finnishMessage EnterEmail = "Kirjoita alle sähköpostiosoitteesi, johon vahvistussähköposti lähetetään."@@ -501,6 +512,7 @@ chineseMessage Email = "邮箱" chineseMessage UserName = "用户名" -- FIXME by Google Translate "user name" chineseMessage Password = "密码"+chineseMessage CurrentPassword = "Current password" chineseMessage Register = "注册" chineseMessage RegisterLong = "注册新帐户" chineseMessage EnterEmail = "输入你的邮箱地址,你将收到一封确认邮件。"@@ -548,6 +560,7 @@ czechMessage Email = "E-mail" czechMessage UserName = "Uživatelské jméno" czechMessage Password = "Heslo"+czechMessage CurrentPassword = "Current password" czechMessage Register = "Registrovat" czechMessage RegisterLong = "Zaregistrovat nový účet" czechMessage EnterEmail = "Níže zadejte svou e-mailovou adresu a bude vám poslán potvrzovací e-mail."@@ -595,6 +608,7 @@ russianMessage Email = "Эл.почта" russianMessage UserName = "Имя пользователя" russianMessage Password = "Пароль"+russianMessage CurrentPassword = "Current password" russianMessage Register = "Регистрация" russianMessage RegisterLong = "Создать учётную запись" russianMessage EnterEmail = "Введите свой адрес эл.почты ниже, вам будет отправлено письмо для подтверждения."@@ -641,6 +655,7 @@ dutchMessage Email = "E-mail" dutchMessage UserName = "Gebruikersnaam" -- FIXME by Google Translate "user name" dutchMessage Password = "Wachtwoord"+dutchMessage CurrentPassword = "Current password" dutchMessage Register = "Registreren" dutchMessage RegisterLong = "Registreer een nieuw account" dutchMessage EnterEmail = "Voer uw e-mailadres hieronder in, er zal een bevestigings-e-mail naar u worden verzonden."@@ -680,44 +695,92 @@ dutchMessage AuthError = "Verificatiefout" -- FIXME by Google Translate  croatianMessage :: AuthMessage -> Text-croatianMessage NoOpenID      = "Nije pronađen OpenID identifikator"-croatianMessage LoginOpenID   = "Prijava uz OpenID"-croatianMessage LoginGoogle   = "Prijava uz Google"-croatianMessage LoginYahoo    = "Prijava uz Yahoo"-croatianMessage Facebook      = "Prijava uz Facebook"+croatianMessage NoOpenID = "Nije pronađen OpenID identifikator"+croatianMessage LoginOpenID = "Prijava uz OpenID"+croatianMessage LoginGoogle = "Prijava uz Google"+croatianMessage LoginYahoo = "Prijava uz Yahoo"+croatianMessage Facebook = "Prijava uz Facebook" croatianMessage LoginViaEmail = "Prijava putem e-pošte"-croatianMessage Email         = "E-pošta"-croatianMessage UserName      = "Korisničko ime"-croatianMessage Password      = "Lozinka"-croatianMessage Register      = "Registracija"-croatianMessage RegisterLong  = "Registracija novog računa"-croatianMessage EnterEmail          = "Dolje unesite adresu e-pošte, pa ćemo vam poslati e-poruku za potvrdu."+croatianMessage Email = "E-pošta"+croatianMessage UserName = "Korisničko ime"+croatianMessage Password = "Lozinka"+croatianMessage CurrentPassword = "Current Password"+croatianMessage Register = "Registracija"+croatianMessage RegisterLong = "Registracija novog računa"+croatianMessage EnterEmail = "Dolje unesite adresu e-pošte, pa ćemo vam poslati e-poruku za potvrdu." croatianMessage PasswordResetPrompt = "Dolje unesite adresu e-pošte ili korisničko ime, pa ćemo vam poslati e-poruku za potvrdu."-croatianMessage ConfirmationEmailSentTitle    = "E-poruka za potvrdu"+croatianMessage ConfirmationEmailSentTitle = "E-poruka za potvrdu" croatianMessage (ConfirmationEmailSent email) = "E-poruka za potvrdu poslana je na adresu " <> email <> "."-croatianMessage AddressVerified               = "Adresa ovjerena, postavite novu lozinku"-croatianMessage InvalidKeyTitle               = "Ključ za ovjeru nije valjan"-croatianMessage InvalidKey                    = "Nažalost, taj ključ za ovjeru nije valjan."-croatianMessage InvalidEmailPass              = "Kombinacija e-pošte i lozinke nije valjana"-croatianMessage InvalidUsernamePass           = "Kombinacija korisničkog imena i lozinke nije valjana"-croatianMessage BadSetPass                    = "Za postavljanje lozinke morate biti prijavljeni"-croatianMessage SetPassTitle                  = "Postavi lozinku"-croatianMessage SetPass                       = "Postavite novu lozinku"-croatianMessage NewPass                       = "Nova lozinka"-croatianMessage ConfirmPass                   = "Potvrda lozinke"-croatianMessage PassMismatch                  = "Lozinke se ne podudaraju, pokušajte ponovo"-croatianMessage PassUpdated                   = "Lozinka ažurirana"-croatianMessage InvalidLogin                  = "Prijava nije valjana"-croatianMessage NowLoggedIn                   = "Sada ste prijavljeni u"-croatianMessage LoginTitle                    = "Prijava"-croatianMessage PleaseProvideUsername         = "Unesite korisničko ime"-croatianMessage PleaseProvidePassword         = "Unesite lozinku"-croatianMessage NoIdentifierProvided          = "Nisu dani e-pošta/korisničko ime"-croatianMessage InvalidEmailAddress           = "Dana adresa e-pošte nije valjana"-croatianMessage PasswordResetTitle            = "Poništavanje lozinke"-croatianMessage ProvideIdentifier             = "E-pošta ili korisničko ime"-croatianMessage SendPasswordResetEmail        = "Pošalji e-poruku za poništavanje lozinke"-croatianMessage (IdentifierNotFound ident)    = "Korisničko ime/e-pošta nisu pronađeni: " <> ident-croatianMessage Logout                        = "Odjava"-croatianMessage LogoutTitle                   = "Odjava"-croatianMessage AuthError                     = "Pogreška provjere autentičnosti"+croatianMessage AddressVerified = "Adresa ovjerena, postavite novu lozinku"+croatianMessage InvalidKeyTitle = "Ključ za ovjeru nije valjan"+croatianMessage InvalidKey = "Nažalost, taj ključ za ovjeru nije valjan."+croatianMessage InvalidEmailPass = "Kombinacija e-pošte i lozinke nije valjana"+croatianMessage InvalidUsernamePass = "Kombinacija korisničkog imena i lozinke nije valjana"+croatianMessage BadSetPass = "Za postavljanje lozinke morate biti prijavljeni"+croatianMessage SetPassTitle = "Postavi lozinku"+croatianMessage SetPass = "Postavite novu lozinku"+croatianMessage NewPass = "Nova lozinka"+croatianMessage ConfirmPass = "Potvrda lozinke"+croatianMessage PassMismatch = "Lozinke se ne podudaraju, pokušajte ponovo"+croatianMessage PassUpdated = "Lozinka ažurirana"+croatianMessage InvalidLogin = "Prijava nije valjana"+croatianMessage NowLoggedIn = "Sada ste prijavljeni u"+croatianMessage LoginTitle = "Prijava"+croatianMessage PleaseProvideUsername = "Unesite korisničko ime"+croatianMessage PleaseProvidePassword = "Unesite lozinku"+croatianMessage NoIdentifierProvided = "Nisu dani e-pošta/korisničko ime"+croatianMessage InvalidEmailAddress = "Dana adresa e-pošte nije valjana"+croatianMessage PasswordResetTitle = "Poništavanje lozinke"+croatianMessage ProvideIdentifier = "E-pošta ili korisničko ime"+croatianMessage SendPasswordResetEmail = "Pošalji e-poruku za poništavanje lozinke"+croatianMessage (IdentifierNotFound ident) = "Korisničko ime/e-pošta nisu pronađeni: " <> ident+croatianMessage Logout = "Odjava"+croatianMessage LogoutTitle = "Odjava"+croatianMessage AuthError = "Pogreška provjere autentičnosti"++danishMessage :: AuthMessage -> Text+danishMessage NoOpenID = "Mangler OpenID identifier"+danishMessage LoginOpenID = "Login med OpenID"+danishMessage LoginGoogle = "Login med Google"+danishMessage LoginYahoo = "Login med Yahoo"+danishMessage Email = "E-mail"+danishMessage UserName = "Brugernavn"+danishMessage Password = "Kodeord"+danishMessage CurrentPassword = "Nuværende kodeord"+danishMessage Register = "Opret"+danishMessage RegisterLong = "Opret en ny konto"+danishMessage EnterEmail = "Indtast din e-mailadresse nedenfor og en bekræftelsesmail vil blive sendt til dig."+danishMessage ConfirmationEmailSentTitle = "Bekræftelsesmail sendt"+danishMessage (ConfirmationEmailSent email) =+    "En bekræftelsesmail er sendt til " `mappend`+    email `mappend`+    "."+danishMessage AddressVerified = "Adresse bekræftet, sæt venligst et nyt kodeord"+danishMessage InvalidKeyTitle = "Ugyldig verifikationsnøgle"+danishMessage InvalidKey = "Beklager, det var en ugyldigt verifikationsnøgle."+danishMessage InvalidEmailPass = "Ugyldigt e-mail/kodeord"+danishMessage BadSetPass = "Du skal være logget ind for at sætte et kodeord"+danishMessage SetPassTitle = "Sæt kodeord"+danishMessage SetPass = "Sæt et nyt kodeord"+danishMessage NewPass = "Nyt kodeord"+danishMessage ConfirmPass = "Bekræft"+danishMessage PassMismatch = "Kodeordne var forskellige, prøv venligst igen"+danishMessage PassUpdated = "Kodeord opdateret"+danishMessage Facebook = "Login med Facebook"+danishMessage LoginViaEmail = "Login med e-mail"+danishMessage InvalidLogin = "Ugyldigt login"+danishMessage NowLoggedIn = "Du er nu logget ind"+danishMessage LoginTitle = "Log ind"+danishMessage PleaseProvideUsername = "Indtast venligst dit brugernavn"+danishMessage PleaseProvidePassword = "Indtasy venligst dit kodeord"+danishMessage NoIdentifierProvided = "Mangler e-mail/username"+danishMessage InvalidEmailAddress = "Ugyldig e-mailadresse indtastet"+danishMessage PasswordResetTitle = "Nulstilning af kodeord"+danishMessage ProvideIdentifier = "E-mail eller brugernavn"+danishMessage SendPasswordResetEmail = "Send kodeordsnulstillingsmail"+danishMessage PasswordResetPrompt = "Indtast din e-mailadresse eller dit brugernavn nedenfor, så bliver en kodeordsnulstilningsmail sendt til dig."+danishMessage InvalidUsernamePass = "Ugyldigt brugernavn/kodeord"+danishMessage (IdentifierNotFound ident) = "Brugernavn findes ikke: " `mappend` ident+danishMessage Logout = "Log ud"+danishMessage LogoutTitle = "Log ud"+danishMessage AuthError = "Fejl ved bekræftelse af identitet"
yesod-auth.cabal view
@@ -1,5 +1,5 @@ name:            yesod-auth-version:         1.4.12+version:         1.4.13 license:         MIT license-file:    LICENSE author:          Michael Snoyman, Patrick Brisbin@@ -23,7 +23,7 @@     build-depends:   base                    >= 4         && < 5                    , authenticate            >= 1.3                    , bytestring              >= 0.9.1.4-                   , yesod-core              >= 1.4       && < 1.5+                   , yesod-core              >= 1.4.20    && < 1.5                    , wai                     >= 1.4                    , template-haskell                    , base16-bytestring