Documentation, cleanup.
diff --git a/Framework/Controller.hs b/Framework/Controller.hs
index b8347c2..e927463 100644
--- a/Framework/Controller.hs
+++ b/Framework/Controller.hs
@@ -23,7 +23,6 @@ module Framework.Controller
concatC, changeR,
assertC,
evalController
--- evalRightNow
) where
import Control.Monad.Reader.Class
@@ -145,15 +144,3 @@ evalController m s = do
anyResult (RightNow r) = Just r
anyResult (Result r) = Just r
-
--- | Same as @evalController@, but return a value only if controller returns RightNow v.
--- evalRightNow :: Controller s r a -- ^ Controller
--- -> s -- ^ Configuration for controller
--- -> IO (Maybe r)
--- evalRightNow m s = anyResult `fmap` (runController m s)
--- where
--- anyResult :: ControllerResult r a -> Maybe r
--- anyResult Reject = Nothing
--- anyResult (RightNow r) = Just r
--- anyResult (Result _) = Nothing
-
diff --git a/Framework/Modules/Auth/Controllers.hs b/Framework/Modules/Auth/Controllers.hs
index 4f8ba1c..660d0f4 100644
--- a/Framework/Modules/Auth/Controllers.hs
+++ b/Framework/Modules/Auth/Controllers.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns #-}
module Framework.Modules.Auth.Controllers where
import Control.Monad.Reader.Class
@@ -16,11 +15,12 @@ import Framework.Modules.Auth.Models
sha1 str = showHex (SHA1.toInteger $ SHA1.hash $ encode str) ""
-checkAuth' :: String
- -> String
- -> Form
- -> HttpAction
-checkAuth' !target retry form = do
+-- | Check user name and password.
+checkAuth' :: String -- ^ Where to redirect if login ok
+ -> String -- ^ Where to redirect if login failed
+ -> Form -- ^ Login form
+ -> HttpAction
+checkAuth' target retry form = do
rq <- asks request
errorIf 400 "Invalid request method" $ rqMethod rq /= POST
let model = formModel form
@@ -55,13 +55,15 @@ checkAuth' !target retry form = do
Left e -> returnInvalidForm form "1" e
+-- | Same as @checkAuth'@, but use default login form
checkAuth :: String
-> String
-> HttpAction
checkAuth target retry = checkAuth' target retry defaultLoginForm
-loginPage :: String
- -> String
+-- | Simple controller for login page.
+loginPage :: String -- ^ Where to redirect after succesful login
+ -> String -- ^ Where to redirect if login fails
-> AController ()
loginPage target retry = do
rq <- asks request
@@ -80,7 +82,8 @@ loginPage target retry = do
resp <- checkAuth target' retry
returnNow resp
-doLogout :: String
+-- | Log out current user
+doLogout :: String -- ^ Where to redirect after logout
-> HttpAction
doLogout target = do
rq <- asks request
@@ -89,11 +92,3 @@ doLogout target = do
sessionUnset "username"
return $ redirect target
-showLoginForm' :: String
- -> Form
- -> AController (String,String)
-showLoginForm' target form = retryForm form "1" [] target
-
-showLoginForm :: String
- -> AController (String,String)
-showLoginForm target = showLoginForm' target defaultLoginForm
diff --git a/Framework/Modules/Auth/Utils.hs b/Framework/Modules/Auth/Utils.hs
index fd37150..67dca24 100644
--- a/Framework/Modules/Auth/Utils.hs
+++ b/Framework/Modules/Auth/Utils.hs
@@ -2,6 +2,7 @@ module Framework.Modules.Auth.Utils where
import Framework.API
+-- | Run a controller only if user is logged in.
loginRequired :: AController a
-> AController a
loginRequired action = do
diff --git a/README.ru b/README.ru
index bf2823a..fa61350 100644
--- a/README.ru
+++ b/README.ru
@@ -157,11 +157,10 @@ controller = do
* Обработчики исключений: приложение может определить свои обработчики для
request exceptions и controller exceptions.
-Все эти функции (кроме context processors) должны быть определены в приложении
-в модуле Settings.hs, оттуда их импортируют разные части фреймворка. В нём же
-определяется соответствие возможных сигналов и их обработчиков.
-
-Context processors должны быть определены в приложении в файле Context.hs.
+Все эти функции должны быть определены в приложении в модулях в директории
+Extensions (пример см. в приложении Blog), оттуда их импортируют разные части
+фреймворка. Там же определяется соответствие возможных сигналов и их
+обработчиков.
## Интернационализация