Decode a few other message types.
parent
e80b71c0cd
commit
d17e29c1f5
|
@ -49,10 +49,6 @@ import App.IPC as IPC
|
||||||
-- Deletion can be triggered by either an admin or the user.
|
-- Deletion can be triggered by either an admin or the user.
|
||||||
|
|
||||||
Possible answers:
|
Possible answers:
|
||||||
- 2 type User = { user :: UserPublic.UserPublic }
|
|
||||||
- 3 type UserAdded = { user :: UserPublic.UserPublic }
|
|
||||||
- 4 type UserEdited = { uid :: Int32 }
|
|
||||||
- 5 type UserValidated = { user :: UserPublic.UserPublic }
|
|
||||||
- 6 type UsersList = { users :: Array(UserPublic.UserPublic) }
|
- 6 type UsersList = { users :: Array(UserPublic.UserPublic) }
|
||||||
- 7 type PermissionCheck = { user :: Int32, service :: String, resource :: String, permission :: AuthD::User::PermissionLevel }
|
- 7 type PermissionCheck = { user :: Int32, service :: String, resource :: String, permission :: AuthD::User::PermissionLevel }
|
||||||
- 8 type PermissionSet = { user :: Int32, service :: String, resource :: String, permission :: AuthD::User::PermissionLevel }
|
- 8 type PermissionSet = { user :: Int32, service :: String, resource :: String, permission :: AuthD::User::PermissionLevel }
|
||||||
|
@ -60,11 +56,16 @@ import App.IPC as IPC
|
||||||
-}
|
-}
|
||||||
|
|
||||||
-- Basic message types.
|
-- Basic message types.
|
||||||
type Error = { reason :: Maybe String }
|
-- TODO: note to myself: messages seem chaotic. Could be simpler. Should be simpler.
|
||||||
type Token = { uid :: Int, token :: String }
|
type Error = { reason :: Maybe String }
|
||||||
|
type Token = { uid :: Int, token :: String }
|
||||||
type PasswordRecoverySent = { user :: UserPublic.UserPublic }
|
type PasswordRecoverySent = { user :: UserPublic.UserPublic }
|
||||||
type PasswordRecovered = { user :: UserPublic.UserPublic }
|
type PasswordRecovered = { user :: UserPublic.UserPublic }
|
||||||
type Contacts = { user :: Int, email :: Maybe Email.Email, phone :: Maybe Phone.Phone }
|
type Contacts = { user :: Int, email :: Maybe Email.Email, phone :: Maybe Phone.Phone }
|
||||||
|
type User = { user :: UserPublic.UserPublic }
|
||||||
|
type UserAdded = { user :: UserPublic.UserPublic }
|
||||||
|
type UserEdited = { uid :: Int }
|
||||||
|
type UserValidated = { user :: UserPublic.UserPublic }
|
||||||
|
|
||||||
type Password = String
|
type Password = String
|
||||||
type GetToken = { login :: String, password :: String }
|
type GetToken = { login :: String, password :: String }
|
||||||
|
@ -79,10 +80,20 @@ codecGotToken ∷ CA.JsonCodec Token
|
||||||
codecGotToken = CA.object "Token" (CAR.record { "uid": CA.int, "token": CA.string })
|
codecGotToken = CA.object "Token" (CAR.record { "uid": CA.int, "token": CA.string })
|
||||||
codecGotPasswordRecoverySent ∷ CA.JsonCodec PasswordRecoverySent
|
codecGotPasswordRecoverySent ∷ CA.JsonCodec PasswordRecoverySent
|
||||||
codecGotPasswordRecoverySent = CA.object "PasswordRecoverySent" (CAR.record { user: UserPublic.codec })
|
codecGotPasswordRecoverySent = CA.object "PasswordRecoverySent" (CAR.record { user: UserPublic.codec })
|
||||||
|
codecGotUser ∷ CA.JsonCodec User
|
||||||
|
codecGotUser = CA.object "User" (CAR.record { user: UserPublic.codec })
|
||||||
|
codecGotUserAdded ∷ CA.JsonCodec UserAdded
|
||||||
|
codecGotUserAdded = CA.object "UserAdded" (CAR.record { user: UserPublic.codec })
|
||||||
|
codecGotUserEdited ∷ CA.JsonCodec UserEdited
|
||||||
|
codecGotUserEdited = CA.object "UserEdited" (CAR.record { "uid": CA.int })
|
||||||
|
codecGotUserValidated ∷ CA.JsonCodec UserValidated
|
||||||
|
codecGotUserValidated = CA.object "UserValidated" (CAR.record { user: UserPublic.codec })
|
||||||
codecGotPasswordRecovered ∷ CA.JsonCodec PasswordRecovered
|
codecGotPasswordRecovered ∷ CA.JsonCodec PasswordRecovered
|
||||||
codecGotPasswordRecovered = CA.object "PasswordRecovered" (CAR.record { user: UserPublic.codec })
|
codecGotPasswordRecovered = CA.object "PasswordRecovered" (CAR.record { user: UserPublic.codec })
|
||||||
codecGotContacts ∷ CA.JsonCodec Contacts
|
codecGotContacts ∷ CA.JsonCodec Contacts
|
||||||
codecGotContacts = CA.object "Contacts" (CAR.record { user: CA.int, email: CAR.optional Email.codec, phone: CAR.optional Phone.codec })
|
codecGotContacts = CA.object "Contacts" (CAR.record { user: CA.int
|
||||||
|
, email: CAR.optional Email.codec
|
||||||
|
, phone: CAR.optional Phone.codec })
|
||||||
|
|
||||||
-- All possible requests.
|
-- All possible requests.
|
||||||
data RequestMessage
|
data RequestMessage
|
||||||
|
@ -107,12 +118,12 @@ data RequestMessage
|
||||||
|
|
||||||
-- All possible answers from the authentication daemon (authd).
|
-- All possible answers from the authentication daemon (authd).
|
||||||
data AnswerMessage
|
data AnswerMessage
|
||||||
= GotError Error -- 0
|
= GotError Error -- 0
|
||||||
| GotToken Token -- 1
|
| GotToken Token -- 1
|
||||||
-- | GotUser User -- 2
|
| GotUser User -- 2
|
||||||
-- | GotUserAdded UserAdded -- 3
|
| GotUserAdded UserAdded -- 3
|
||||||
-- | GotUserEdited UserEdited -- 4
|
| GotUserEdited UserEdited -- 4
|
||||||
-- | GotUserValidated UserValidated -- 5
|
| GotUserValidated UserValidated -- 5
|
||||||
-- | GotUsersList UsersList -- 6
|
-- | GotUsersList UsersList -- 6
|
||||||
-- | GotPermissionCheck PermissionCheck -- 7
|
-- | GotPermissionCheck PermissionCheck -- 7
|
||||||
-- | GotPermissionSet PermissionSet -- 8
|
-- | GotPermissionSet PermissionSet -- 8
|
||||||
|
@ -150,16 +161,16 @@ data DecodeError
|
||||||
decode :: Int -> String -> Either DecodeError AnswerMessage
|
decode :: Int -> String -> Either DecodeError AnswerMessage
|
||||||
decode number string
|
decode number string
|
||||||
= case number of
|
= case number of
|
||||||
0 -> error_management codecGotError GotError
|
0 -> error_management codecGotError GotError
|
||||||
1 -> error_management codecGotToken GotToken
|
1 -> error_management codecGotToken GotToken
|
||||||
|
2 -> error_management codecGotUser GotUser
|
||||||
|
3 -> error_management codecGotUserAdded GotUserAdded
|
||||||
|
4 -> error_management codecGotUserEdited GotUserEdited
|
||||||
|
5 -> error_management codecGotUserValidated GotUserValidated
|
||||||
9 -> error_management codecGotPasswordRecoverySent GotPasswordRecoverySent
|
9 -> error_management codecGotPasswordRecoverySent GotPasswordRecoverySent
|
||||||
10 -> error_management codecGotPasswordRecovered GotPasswordRecovered
|
10 -> error_management codecGotPasswordRecovered GotPasswordRecovered
|
||||||
12 -> error_management codecGotContacts GotContacts
|
12 -> error_management codecGotContacts GotContacts
|
||||||
_ -> Left UnknownNumber
|
_ -> Left UnknownNumber
|
||||||
-- 2 type User = { user :: UserPublic.UserPublic }
|
|
||||||
-- 3 type UserAdded = { user :: UserPublic.UserPublic }
|
|
||||||
-- 4 type UserEdited = { uid :: Int32 }
|
|
||||||
-- 5 type UserValidated = { user :: UserPublic.UserPublic }
|
|
||||||
-- 6 type UsersList = { users :: Array(UserPublic.UserPublic) }
|
-- 6 type UsersList = { users :: Array(UserPublic.UserPublic) }
|
||||||
-- 7 type PermissionCheck = { user :: Int32, service :: String, resource :: String, permission :: AuthD::User::PermissionLevel }
|
-- 7 type PermissionCheck = { user :: Int32, service :: String, resource :: String, permission :: AuthD::User::PermissionLevel }
|
||||||
-- 8 type PermissionSet = { user :: Int32, service :: String, resource :: String, permission :: AuthD::User::PermissionLevel }
|
-- 8 type PermissionSet = { user :: Int32, service :: String, resource :: String, permission :: AuthD::User::PermissionLevel }
|
||||||
|
|
Loading…
Reference in New Issue