Authentication: dedicated message for users without a validated email address.
This commit is contained in:
		
							parent
							
								
									eceeb8c264
								
							
						
					
					
						commit
						411de1be6c
					
				
					 2 changed files with 72 additions and 60 deletions
				
			
		| 
						 | 
				
			
			@ -545,6 +545,11 @@ handleAction = case _ of
 | 
			
		|||
            handleAction $ Log $ ErrorLog "TODO: received a GotPermissionCheck message."
 | 
			
		||||
          (AuthD.GotPermissionSet _) -> do
 | 
			
		||||
            handleAction $ Log $ ErrorLog "Received a GotPermissionSet message."
 | 
			
		||||
          (AuthD.GotErrorEmailAddressNotValidated _) -> do
 | 
			
		||||
            handleAction $ Log $ ErrorLog """
 | 
			
		||||
                Cannot authenticate: your email address hasn't been validated.
 | 
			
		||||
                Please check your email inbox.
 | 
			
		||||
                """
 | 
			
		||||
          m@(AuthD.GotPasswordRecovered _) -> do
 | 
			
		||||
            handleAction $ Log $ SuccessLog "your new password is now valid."
 | 
			
		||||
            handleAction $ DispatchAuthDaemonMessage m
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -344,6 +344,11 @@ type ErrorPasswordTooLong = {}
 | 
			
		|||
codecGotErrorPasswordTooLong :: CA.JsonCodec ErrorPasswordTooLong
 | 
			
		||||
codecGotErrorPasswordTooLong = CA.object "ErrorPasswordTooLong" (CAR.record {})
 | 
			
		||||
 | 
			
		||||
{- 36 -}
 | 
			
		||||
type ErrorEmailAddressNotValidated = {}
 | 
			
		||||
codecGotErrorEmailAddressNotValidated :: CA.JsonCodec ErrorEmailAddressNotValidated
 | 
			
		||||
codecGotErrorEmailAddressNotValidated = CA.object "ErrorEmailAddressNotValidated" (CAR.record {})
 | 
			
		||||
 | 
			
		||||
{- 250 -}
 | 
			
		||||
-- type KeepAlive = { }
 | 
			
		||||
codecGotKeepAlive ∷ CA.JsonCodec KeepAlive
 | 
			
		||||
| 
						 | 
				
			
			@ -370,36 +375,37 @@ data RequestMessage
 | 
			
		|||
 | 
			
		||||
-- All possible answers from the authentication daemon (authd).
 | 
			
		||||
data AnswerMessage
 | 
			
		||||
  = GotError                     Error                     -- 0
 | 
			
		||||
  | GotToken                     Logged                    -- 1
 | 
			
		||||
  | GotUser                      User                      -- 2
 | 
			
		||||
  | GotUserAdded                 UserAdded                 -- 3
 | 
			
		||||
  | GotUserEdited                UserEdited                -- 4
 | 
			
		||||
  | GotUserValidated             UserValidated             -- 5
 | 
			
		||||
  | GotUsersList                 UsersList                 -- 6
 | 
			
		||||
  | GotPermissionCheck           PermissionCheck           -- 7
 | 
			
		||||
  | GotPermissionSet             PermissionSet             -- 8
 | 
			
		||||
  | GotPasswordRecoverySent      PasswordRecoverySent      -- 9
 | 
			
		||||
  | GotPasswordRecovered         PasswordRecovered         -- 10
 | 
			
		||||
  | GotMatchingUsers             MatchingUsers             -- 11
 | 
			
		||||
  | GotUserDeleted               UserDeleted               -- 12
 | 
			
		||||
  | GotErrorMustBeAuthenticated  ErrorMustBeAuthenticated  -- 20
 | 
			
		||||
  | GotErrorAlreadyUsedLogin     ErrorAlreadyUsedLogin     -- 21
 | 
			
		||||
  | GotErrorMailRequired         ErrorMailRequired         -- 22
 | 
			
		||||
  | GotErrorUserNotFound         ErrorUserNotFound         -- 23
 | 
			
		||||
  | GotErrorPasswordTooShort     ErrorPasswordTooShort     -- 24
 | 
			
		||||
  | GotErrorInvalidCredentials   ErrorInvalidCredentials   -- 25
 | 
			
		||||
  | GotErrorRegistrationsClosed  ErrorRegistrationsClosed  -- 26
 | 
			
		||||
  | GotErrorInvalidLoginFormat   ErrorInvalidLoginFormat   -- 27
 | 
			
		||||
  | GotErrorInvalidEmailFormat   ErrorInvalidEmailFormat   -- 28
 | 
			
		||||
  | GotErrorAlreadyUsersInDB     ErrorAlreadyUsersInDB     -- 29
 | 
			
		||||
  | GotErrorReadOnlyProfileKeys  ErrorReadOnlyProfileKeys  -- 30
 | 
			
		||||
  | GotErrorInvalidActivationKey ErrorInvalidActivationKey -- 31
 | 
			
		||||
  | GotErrorUserAlreadyValidated ErrorUserAlreadyValidated -- 32
 | 
			
		||||
  | GotErrorCannotContactUser    ErrorCannotContactUser    -- 33
 | 
			
		||||
  | GotErrorInvalidRenewKey      ErrorInvalidRenewKey      -- 34
 | 
			
		||||
  | GotErrorPasswordTooLong      ErrorPasswordTooLong      -- 35
 | 
			
		||||
  | GotKeepAlive                 KeepAlive                 -- 250
 | 
			
		||||
  = GotError                         Error                         -- 0
 | 
			
		||||
  | GotToken                         Logged                        -- 1
 | 
			
		||||
  | GotUser                          User                          -- 2
 | 
			
		||||
  | GotUserAdded                     UserAdded                     -- 3
 | 
			
		||||
  | GotUserEdited                    UserEdited                    -- 4
 | 
			
		||||
  | GotUserValidated                 UserValidated                 -- 5
 | 
			
		||||
  | GotUsersList                     UsersList                     -- 6
 | 
			
		||||
  | GotPermissionCheck               PermissionCheck               -- 7
 | 
			
		||||
  | GotPermissionSet                 PermissionSet                 -- 8
 | 
			
		||||
  | GotPasswordRecoverySent          PasswordRecoverySent          -- 9
 | 
			
		||||
  | GotPasswordRecovered             PasswordRecovered             -- 10
 | 
			
		||||
  | GotMatchingUsers                 MatchingUsers                 -- 11
 | 
			
		||||
  | GotUserDeleted                   UserDeleted                   -- 12
 | 
			
		||||
  | GotErrorMustBeAuthenticated      ErrorMustBeAuthenticated      -- 20
 | 
			
		||||
  | GotErrorAlreadyUsedLogin         ErrorAlreadyUsedLogin         -- 21
 | 
			
		||||
  | GotErrorMailRequired             ErrorMailRequired             -- 22
 | 
			
		||||
  | GotErrorUserNotFound             ErrorUserNotFound             -- 23
 | 
			
		||||
  | GotErrorPasswordTooShort         ErrorPasswordTooShort         -- 24
 | 
			
		||||
  | GotErrorInvalidCredentials       ErrorInvalidCredentials       -- 25
 | 
			
		||||
  | GotErrorRegistrationsClosed      ErrorRegistrationsClosed      -- 26
 | 
			
		||||
  | GotErrorInvalidLoginFormat       ErrorInvalidLoginFormat       -- 27
 | 
			
		||||
  | GotErrorInvalidEmailFormat       ErrorInvalidEmailFormat       -- 28
 | 
			
		||||
  | GotErrorAlreadyUsersInDB         ErrorAlreadyUsersInDB         -- 29
 | 
			
		||||
  | GotErrorReadOnlyProfileKeys      ErrorReadOnlyProfileKeys      -- 30
 | 
			
		||||
  | GotErrorInvalidActivationKey     ErrorInvalidActivationKey     -- 31
 | 
			
		||||
  | GotErrorUserAlreadyValidated     ErrorUserAlreadyValidated     -- 32
 | 
			
		||||
  | GotErrorCannotContactUser        ErrorCannotContactUser        -- 33
 | 
			
		||||
  | GotErrorInvalidRenewKey          ErrorInvalidRenewKey          -- 34
 | 
			
		||||
  | GotErrorPasswordTooLong          ErrorPasswordTooLong          -- 35
 | 
			
		||||
  | GotErrorEmailAddressNotValidated ErrorEmailAddressNotValidated -- 36
 | 
			
		||||
  | GotKeepAlive                     KeepAlive                     -- 250
 | 
			
		||||
 | 
			
		||||
encode ∷ RequestMessage -> Tuple UInt String
 | 
			
		||||
encode m = case m of
 | 
			
		||||
| 
						 | 
				
			
			@ -433,36 +439,37 @@ data DecodeError
 | 
			
		|||
decode :: Int -> String -> Either DecodeError AnswerMessage
 | 
			
		||||
decode number string
 | 
			
		||||
  = case number of
 | 
			
		||||
    0   -> error_management codecGotError                     GotError
 | 
			
		||||
    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
 | 
			
		||||
    6   -> error_management codecGotUsersList                 GotUsersList
 | 
			
		||||
    7   -> error_management codecGotPermissionCheck           GotPermissionCheck
 | 
			
		||||
    8   -> error_management codecGotPermissionSet             GotPermissionSet
 | 
			
		||||
    9   -> error_management codecGotPasswordRecoverySent      GotPasswordRecoverySent
 | 
			
		||||
    10  -> error_management codecGotPasswordRecovered         GotPasswordRecovered
 | 
			
		||||
    11  -> error_management codecGotMatchingUsers             GotMatchingUsers
 | 
			
		||||
    12  -> error_management codecGotUserDeleted               GotUserDeleted
 | 
			
		||||
    20  -> error_management codecGotErrorMustBeAuthenticated  GotErrorMustBeAuthenticated
 | 
			
		||||
    21  -> error_management codecGotErrorAlreadyUsedLogin     GotErrorAlreadyUsedLogin
 | 
			
		||||
    22  -> error_management codecGotErrorMailRequired         GotErrorMailRequired
 | 
			
		||||
    23  -> error_management codecGotErrorUserNotFound         GotErrorUserNotFound
 | 
			
		||||
    24  -> error_management codecGotErrorPasswordTooShort     GotErrorPasswordTooShort
 | 
			
		||||
    25  -> error_management codecGotErrorInvalidCredentials   GotErrorInvalidCredentials
 | 
			
		||||
    26  -> error_management codecGotErrorRegistrationsClosed  GotErrorRegistrationsClosed
 | 
			
		||||
    27  -> error_management codecGotErrorInvalidLoginFormat   GotErrorInvalidLoginFormat
 | 
			
		||||
    28  -> error_management codecGotErrorInvalidEmailFormat   GotErrorInvalidEmailFormat
 | 
			
		||||
    29  -> error_management codecGotErrorAlreadyUsersInDB     GotErrorAlreadyUsersInDB
 | 
			
		||||
    30  -> error_management codecGotErrorReadOnlyProfileKeys  GotErrorReadOnlyProfileKeys
 | 
			
		||||
    31  -> error_management codecGotErrorInvalidActivationKey GotErrorInvalidActivationKey
 | 
			
		||||
    32  -> error_management codecGotErrorUserAlreadyValidated GotErrorUserAlreadyValidated
 | 
			
		||||
    33  -> error_management codecGotErrorCannotContactUser    GotErrorCannotContactUser
 | 
			
		||||
    34  -> error_management codecGotErrorInvalidRenewKey      GotErrorInvalidRenewKey
 | 
			
		||||
    35  -> error_management codecGotErrorPasswordTooLong      GotErrorPasswordTooLong
 | 
			
		||||
    250 -> error_management codecGotKeepAlive                 GotKeepAlive
 | 
			
		||||
    0   -> error_management codecGotError                         GotError
 | 
			
		||||
    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
 | 
			
		||||
    6   -> error_management codecGotUsersList                     GotUsersList
 | 
			
		||||
    7   -> error_management codecGotPermissionCheck               GotPermissionCheck
 | 
			
		||||
    8   -> error_management codecGotPermissionSet                 GotPermissionSet
 | 
			
		||||
    9   -> error_management codecGotPasswordRecoverySent          GotPasswordRecoverySent
 | 
			
		||||
    10  -> error_management codecGotPasswordRecovered             GotPasswordRecovered
 | 
			
		||||
    11  -> error_management codecGotMatchingUsers                 GotMatchingUsers
 | 
			
		||||
    12  -> error_management codecGotUserDeleted                   GotUserDeleted
 | 
			
		||||
    20  -> error_management codecGotErrorMustBeAuthenticated      GotErrorMustBeAuthenticated
 | 
			
		||||
    21  -> error_management codecGotErrorAlreadyUsedLogin         GotErrorAlreadyUsedLogin
 | 
			
		||||
    22  -> error_management codecGotErrorMailRequired             GotErrorMailRequired
 | 
			
		||||
    23  -> error_management codecGotErrorUserNotFound             GotErrorUserNotFound
 | 
			
		||||
    24  -> error_management codecGotErrorPasswordTooShort         GotErrorPasswordTooShort
 | 
			
		||||
    25  -> error_management codecGotErrorInvalidCredentials       GotErrorInvalidCredentials
 | 
			
		||||
    26  -> error_management codecGotErrorRegistrationsClosed      GotErrorRegistrationsClosed
 | 
			
		||||
    27  -> error_management codecGotErrorInvalidLoginFormat       GotErrorInvalidLoginFormat
 | 
			
		||||
    28  -> error_management codecGotErrorInvalidEmailFormat       GotErrorInvalidEmailFormat
 | 
			
		||||
    29  -> error_management codecGotErrorAlreadyUsersInDB         GotErrorAlreadyUsersInDB
 | 
			
		||||
    30  -> error_management codecGotErrorReadOnlyProfileKeys      GotErrorReadOnlyProfileKeys
 | 
			
		||||
    31  -> error_management codecGotErrorInvalidActivationKey     GotErrorInvalidActivationKey
 | 
			
		||||
    32  -> error_management codecGotErrorUserAlreadyValidated     GotErrorUserAlreadyValidated
 | 
			
		||||
    33  -> error_management codecGotErrorCannotContactUser        GotErrorCannotContactUser
 | 
			
		||||
    34  -> error_management codecGotErrorInvalidRenewKey          GotErrorInvalidRenewKey
 | 
			
		||||
    35  -> error_management codecGotErrorPasswordTooLong          GotErrorPasswordTooLong
 | 
			
		||||
    36  -> error_management codecGotErrorEmailAddressNotValidated GotErrorEmailAddressNotValidated
 | 
			
		||||
    250 -> error_management codecGotKeepAlive                     GotKeepAlive
 | 
			
		||||
    _  -> Left UnknownNumber
 | 
			
		||||
  where
 | 
			
		||||
    -- Signature is required since the compiler's guess is wrong.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue