30 lines
835 B
Haskell
30 lines
835 B
Haskell
|
|
module Web.Controller.Sessions where
|
||
|
|
|
||
|
|
import Web.Types
|
||
|
|
import Web.View.Sessions.New
|
||
|
|
import Generated.Types
|
||
|
|
import IHP.LoginSupport.Helper.Controller
|
||
|
|
import IHP.Prelude
|
||
|
|
import IHP.ControllerPrelude
|
||
|
|
|
||
|
|
instance Controller SessionsController where
|
||
|
|
action NewSessionAction = do
|
||
|
|
let user = newRecord @User
|
||
|
|
render NewView { user }
|
||
|
|
|
||
|
|
action CreateSessionAction = do
|
||
|
|
(user, token) <- authenticate @User
|
||
|
|
case user of
|
||
|
|
Just user -> do
|
||
|
|
setSession "userId" (show user.id)
|
||
|
|
redirectTo HubsAction
|
||
|
|
Nothing -> do
|
||
|
|
setErrorMessage "Invalid email or password"
|
||
|
|
redirectTo NewSessionAction
|
||
|
|
|
||
|
|
action DeleteSessionAction = do
|
||
|
|
unsetSession "userId"
|
||
|
|
redirectTo NewSessionAction
|
||
|
|
|
||
|
|
instance SessionsControllerConfig User
|