diff options
author | William Carroll <wpcarro@gmail.com> | 2020-08-02T15·07+0100 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2020-08-02T15·07+0100 |
commit | 25334080b9bcdf238f75069feb92fba65896da5e (patch) | |
tree | f3410227de97c10936a260e9e7a6bbe6ac43231d /src/Types.hs | |
parent | fe609bbe5804be229a7e5c0d276654fb3e45179b (diff) |
Support POST /invite
Allow Admin accounts to invite users to the application.
Diffstat (limited to 'src/Types.hs')
-rw-r--r-- | src/Types.hs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/Types.hs b/src/Types.hs index 54f3ec64ea0d..7fe3f2b15d39 100644 --- a/src/Types.hs +++ b/src/Types.hs @@ -469,3 +469,30 @@ instance FromJSON UnfreezeAccountRequest where parseJSON = withObject "UnfreezeAccountRequest" $ \x -> do unfreezeAccountRequestUsername <- x .: "username" pure UnfreezeAccountRequest{..} + +data InviteUserRequest = InviteUserRequest + { inviteUserRequestEmail :: Email + , inviteUserRequestRole :: Role + } deriving (Eq, Show) + +instance FromJSON InviteUserRequest where + parseJSON = withObject "InviteUserRequest" $ \x -> do + inviteUserRequestEmail <- x .: "email" + inviteUserRequestRole <- x .: "role" + pure InviteUserRequest{..} + +newtype InvitationSecret = InvitationSecret UUID.UUID + deriving (Eq, Show) + +instance ToField InvitationSecret where + toField (InvitationSecret secretUUID) = + secretUUID |> UUID.toText |> SQLText + +instance FromField InvitationSecret where + fromField field = + case fieldData field of + (SQLText x) -> + case UUID.fromText x of + Nothing -> returnError ConversionFailed field ("Could not convert text to UUID: " ++ show x) + Just x -> Ok $ InvitationSecret x + _ -> returnError ConversionFailed field "Field data is not SQLText, which is what we expect" |