Webanwendung mit FastCGI und Haskell
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

42 lignes
1.1KB

  1. {-# OPTIONS -Wall #-}
  2. module Database (
  3. connect, addUser, validate, Connection, isLoggedIn, isAvailable,
  4. Username, Password
  5. ) where
  6. import Control.Monad.State
  7. import Network.CGI
  8. import AppMonad
  9. import DatabaseData
  10. import Shared
  11. validate :: Username -> Password -> App Bool
  12. validate username password = do
  13. c <- gets connection
  14. isValid <- liftIO $ validateC c username password
  15. when isValid $ do
  16. setCookie $ newCookie "username" username
  17. (Just str) <- liftIO $ getLoginStringC c username
  18. setCookie $ newCookie "login_string" str
  19. return isValid
  20. isLoggedIn :: App Bool
  21. isLoggedIn = defRunMaybeT False $ do
  22. c <- gets connection
  23. name <- MaybeT $ getCookie "username"
  24. loginString <- MaybeT $ getCookie "login_string"
  25. liftIO $ isLoggedInC c name loginString
  26. isAvailable :: Username -> App Bool
  27. isAvailable username = do
  28. c <- gets connection
  29. liftIO $ isAvailableC c username
  30. addUser :: Username -> Password -> App ()
  31. addUser username password = do
  32. c <- gets connection
  33. liftIO $ addUserC c username password