Webanwendung mit FastCGI und Haskell
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
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