packages feed

wikimusic-model-hs-1.2.0.0: src/WikiMusic/Interaction/Model/User.hs

{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE NoFieldSelectors #-}

module WikiMusic.Interaction.Model.User
  ( MakeResetPasswordLinkResponse (..),
    DoPasswordResetRequest (..),
    UserError (..),
    InviteUsersRequest (..),
    DeleteUsersRequest (..),
  )
where

import Data.Aeson hiding (Success)
import Data.OpenApi
import Keuringsdienst (ValidationResult)
import Optics
import Relude
import WikiMusic.Model.Auth

newtype MakeResetPasswordLinkResponse = MakeResetPasswordLinkResponse
  { user :: Text
  }
  deriving (Eq, Show, Generic, FromJSON, ToJSON, ToSchema)

makeFieldLabelsNoPrefix ''MakeResetPasswordLinkResponse

data DoPasswordResetRequest = DoPasswordResetRequest
  { email :: Text,
    token :: Text,
    password :: Text,
    passwordConfirm :: Text
  }
  deriving (Eq, Show, Generic, FromJSON, ToJSON, ToSchema)

makeFieldLabelsNoPrefix ''DoPasswordResetRequest

data UserError
  = ValidationFailedError (Map Text ValidationResult)
  | AccessUnauthorizedError
  | SomeError Text
  deriving (Generic, Eq, Show)

data InviteUsersRequest = InviteUsersRequest
  { displayName :: Text,
    email :: Text,
    role :: UserRole,
    description :: Maybe Text
  }
  deriving (Eq, Show, Generic, FromJSON, ToJSON, ToSchema)

makeFieldLabelsNoPrefix ''InviteUsersRequest

newtype DeleteUsersRequest = DeleteUsersRequest
  { email :: Text
  }
  deriving (Eq, Show, Generic, FromJSON, ToJSON, ToSchema)

makeFieldLabelsNoPrefix ''DeleteUsersRequest