wikimusic-api-1.2.0.8: src/WikiMusic/Servant/UserRoutes.hs
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE NoFieldSelectors #-}
module WikiMusic.Servant.UserRoutes
( makeResetPasswordLinkRoute,
doPasswordResetRoute,
inviteUserRoute,
deleteUserRoute,
)
where
import Servant
import WikiMusic.Free.MailCommand
import WikiMusic.Free.UserCommand
import WikiMusic.Free.UserQuery
import WikiMusic.Interaction.Model.User
import WikiMusic.Interaction.User
import WikiMusic.Model.Env
import WikiMusic.Protolude
import WikiMusic.Servant.Utilities
import WikiMusic.Smtp.MailCommandSES ()
import WikiMusic.Sqlite.UserCommand ()
import WikiMusic.Sqlite.UserQuery ()
makeResetPasswordLinkRoute :: Env -> Text -> Handler MakeResetPasswordLinkResponse
makeResetPasswordLinkRoute env userEmail = liftIO (exec @(UserCommand :+: MailCommand) $ makeResetPasswordLinkAction env userEmail) >>= maybe200
doPasswordResetRoute :: Env -> DoPasswordResetRequest -> Handler ()
doPasswordResetRoute env req = liftIO (exec @(UserCommand :+: UserQuery :+: MailCommand) $ doPasswordResetAction env req) >>= maybe204
inviteUserRoute :: Env -> Maybe Text -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse
inviteUserRoute env authToken req =
doWithAuth
env
authToken
( \authUser ->
liftIO (exec @(UserCommand :+: MailCommand) $ inviteUserAction env authUser req) >>= maybe200
)
deleteUserRoute :: Env -> Maybe Text -> DeleteUsersRequest -> Handler ()
deleteUserRoute env authToken req =
doWithAuth
env
authToken
( \authUser ->
liftIO (exec @UserCommand $ deleteUserAction env authUser req) >>= maybe204
)