{-# 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 -> Text -> Handler MakeResetPasswordLinkResponse makeResetPasswordLinkRoute Env env Text userEmail = IO (Either UserError MakeResetPasswordLinkResponse) -> Handler (Either UserError MakeResetPasswordLinkResponse) forall a. IO a -> Handler a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall (f :: * -> *) a. Exec f => Free f a -> IO a exec @(UserCommand :+: MailCommand) (Free (UserCommand :+: MailCommand) (Either UserError MakeResetPasswordLinkResponse) -> IO (Either UserError MakeResetPasswordLinkResponse)) -> Free (UserCommand :+: MailCommand) (Either UserError MakeResetPasswordLinkResponse) -> IO (Either UserError MakeResetPasswordLinkResponse) forall a b. (a -> b) -> a -> b $ Env -> Text -> Free (UserCommand :+: MailCommand) (Either UserError MakeResetPasswordLinkResponse) forall (f :: * -> *). (UserCommand :<: f, MailCommand :<: f) => Env -> Text -> Free f (Either UserError MakeResetPasswordLinkResponse) makeResetPasswordLinkAction Env env Text userEmail) Handler (Either UserError MakeResetPasswordLinkResponse) -> (Either UserError MakeResetPasswordLinkResponse -> Handler MakeResetPasswordLinkResponse) -> Handler MakeResetPasswordLinkResponse forall a b. Handler a -> (a -> Handler b) -> Handler b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Either UserError MakeResetPasswordLinkResponse -> Handler MakeResetPasswordLinkResponse forall s b. Show s => Either s b -> Handler b maybe200 doPasswordResetRoute :: Env -> DoPasswordResetRequest -> Handler () doPasswordResetRoute :: Env -> DoPasswordResetRequest -> Handler () doPasswordResetRoute Env env DoPasswordResetRequest req = IO (Either UserError ()) -> Handler (Either UserError ()) forall a. IO a -> Handler a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall (f :: * -> *) a. Exec f => Free f a -> IO a exec @(UserCommand :+: UserQuery :+: MailCommand) (Free (UserCommand :+: (UserQuery :+: MailCommand)) (Either UserError ()) -> IO (Either UserError ())) -> Free (UserCommand :+: (UserQuery :+: MailCommand)) (Either UserError ()) -> IO (Either UserError ()) forall a b. (a -> b) -> a -> b $ Env -> DoPasswordResetRequest -> Free (UserCommand :+: (UserQuery :+: MailCommand)) (Either UserError ()) forall (f :: * -> *). (UserCommand :<: f, UserQuery :<: f, MailCommand :<: f) => Env -> DoPasswordResetRequest -> Free f (Either UserError ()) doPasswordResetAction Env env DoPasswordResetRequest req) Handler (Either UserError ()) -> (Either UserError () -> Handler ()) -> Handler () forall a b. Handler a -> (a -> Handler b) -> Handler b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Either UserError () -> Handler () forall s b. Show s => Either s b -> Handler b maybe204 inviteUserRoute :: Env -> Maybe Text -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse inviteUserRoute :: Env -> Maybe Text -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse inviteUserRoute Env env Maybe Text authToken InviteUsersRequest req = Env -> Maybe Text -> (WikiMusicUser -> Handler MakeResetPasswordLinkResponse) -> Handler MakeResetPasswordLinkResponse forall a. Env -> Maybe Text -> (WikiMusicUser -> Handler a) -> Handler a doWithAuth Env env Maybe Text authToken ( \WikiMusicUser authUser -> IO (Either UserError MakeResetPasswordLinkResponse) -> Handler (Either UserError MakeResetPasswordLinkResponse) forall a. IO a -> Handler a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall (f :: * -> *) a. Exec f => Free f a -> IO a exec @(UserCommand :+: MailCommand) (Free (UserCommand :+: MailCommand) (Either UserError MakeResetPasswordLinkResponse) -> IO (Either UserError MakeResetPasswordLinkResponse)) -> Free (UserCommand :+: MailCommand) (Either UserError MakeResetPasswordLinkResponse) -> IO (Either UserError MakeResetPasswordLinkResponse) forall a b. (a -> b) -> a -> b $ Env -> WikiMusicUser -> InviteUsersRequest -> Free (UserCommand :+: MailCommand) (Either UserError MakeResetPasswordLinkResponse) forall (f :: * -> *). (UserCommand :<: f, MailCommand :<: f) => Env -> WikiMusicUser -> InviteUsersRequest -> Free f (Either UserError MakeResetPasswordLinkResponse) inviteUserAction Env env WikiMusicUser authUser InviteUsersRequest req) Handler (Either UserError MakeResetPasswordLinkResponse) -> (Either UserError MakeResetPasswordLinkResponse -> Handler MakeResetPasswordLinkResponse) -> Handler MakeResetPasswordLinkResponse forall a b. Handler a -> (a -> Handler b) -> Handler b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Either UserError MakeResetPasswordLinkResponse -> Handler MakeResetPasswordLinkResponse forall s b. Show s => Either s b -> Handler b maybe200 ) deleteUserRoute :: Env -> Maybe Text -> DeleteUsersRequest -> Handler () deleteUserRoute :: Env -> Maybe Text -> DeleteUsersRequest -> Handler () deleteUserRoute Env env Maybe Text authToken DeleteUsersRequest req = Env -> Maybe Text -> (WikiMusicUser -> Handler ()) -> Handler () forall a. Env -> Maybe Text -> (WikiMusicUser -> Handler a) -> Handler a doWithAuth Env env Maybe Text authToken ( \WikiMusicUser authUser -> IO (Either UserError ()) -> Handler (Either UserError ()) forall a. IO a -> Handler a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall (f :: * -> *) a. Exec f => Free f a -> IO a exec @UserCommand (Free UserCommand (Either UserError ()) -> IO (Either UserError ())) -> Free UserCommand (Either UserError ()) -> IO (Either UserError ()) forall a b. (a -> b) -> a -> b $ Env -> WikiMusicUser -> DeleteUsersRequest -> Free UserCommand (Either UserError ()) forall (f :: * -> *). (UserCommand :<: f) => Env -> WikiMusicUser -> DeleteUsersRequest -> Free f (Either UserError ()) deleteUserAction Env env WikiMusicUser authUser DeleteUsersRequest req) Handler (Either UserError ()) -> (Either UserError () -> Handler ()) -> Handler () forall a b. Handler a -> (a -> Handler b) -> Handler b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Either UserError () -> Handler () forall s b. Show s => Either s b -> Handler b maybe204 )