Documentation, cleanup.

portnov [2009-07-14 07:47:39]
Documentation, cleanup.
Filename
Framework/Controller.hs
Framework/Modules/Auth/Controllers.hs
Framework/Modules/Auth/Utils.hs
README.ru
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),  оттуда их импортируют разные части
+фреймворка. Там же определяется соответствие возможных сигналов и их
+обработчиков.

 ## Интернационализация
ViewGit