packages feed

shomei-servant-0.2.0.0: src/Shomei/Account/Dto.hs

-- | Account lifecycle request and response wire types.
module Shomei.Account.Dto
  ( SignupRequest (..),
    SignupResponse (..),
    VerifyEmailRequest (..),
    ConfirmEmailVerificationRequest (..),
    PasswordResetRequest (..),
    ConfirmPasswordResetRequest (..),
    ChangePasswordRequest (..),
  )
where

import Shomei.Account.User.Dto (UserResponse)
import Shomei.Prelude
import Shomei.Session.Dto (TokenPairResponse)

data SignupRequest = SignupRequest
  { loginId :: !Text,
    email :: !(Maybe Text),
    password :: !Text,
    displayName :: !Text
  }
  deriving stock (Generic)
  deriving anyclass (FromJSON, ToJSON)

data SignupResponse = SignupResponse
  { user :: !UserResponse,
    token :: !TokenPairResponse
  }
  deriving stock (Generic)
  deriving anyclass (FromJSON, ToJSON)

newtype VerifyEmailRequest = VerifyEmailRequest {email :: Text}
  deriving stock (Generic)
  deriving anyclass (FromJSON, ToJSON)

newtype ConfirmEmailVerificationRequest = ConfirmEmailVerificationRequest {token :: Text}
  deriving stock (Generic)
  deriving anyclass (FromJSON, ToJSON)

newtype PasswordResetRequest = PasswordResetRequest {email :: Text}
  deriving stock (Generic)
  deriving anyclass (FromJSON, ToJSON)

data ConfirmPasswordResetRequest = ConfirmPasswordResetRequest
  { token :: !Text,
    newPassword :: !Text
  }
  deriving stock (Generic)
  deriving anyclass (FromJSON, ToJSON)

data ChangePasswordRequest = ChangePasswordRequest
  { currentPassword :: !Text,
    newPassword :: !Text
  }
  deriving stock (Generic)
  deriving anyclass (FromJSON, ToJSON)