Beispiel #1
0
        public Task <AuthenticateResponseParameters?> Handle(IYield yield, MessageData <AuthenticateRequestParameters> messageData, ref MessageSendOptions sendOptions)
        {
            var email = messageData.Parameters.Email;

            if (!databaseUserVerifier.IsExists(email))
            {
                var responseParameters = new AuthenticateResponseParameters?(new AuthenticateResponseParameters(LoginStatus.UserNotExist));
                return(Task.FromResult(responseParameters));
            }

            var password = messageData.Parameters.Password;

            if (!databaseUserPasswordVerifier.Verify(email, password))
            {
                var responseParameters = new AuthenticateResponseParameters?(new AuthenticateResponseParameters(LoginStatus.PasswordIncorrect));
                return(Task.FromResult(responseParameters));
            }

            var userId     = databaseUserIdProvider.GetUserId(email);
            var parameters = new AuthorizeUserRequestParameters(userId);

            return(AccessTokenProvider(yield, parameters));
        }
Beispiel #2
0
        private async Task <AuthenticateResponseParameters?> AccessTokenProvider(IYield yield, AuthorizeUserRequestParameters parameters)
        {
            var userAuthorization = await authorizationServiceApi.UserAuthorization(yield, parameters);

            var responseParameters = userAuthorization.Status == AuthorizationStatus.Succeed
                ? new AuthenticateResponseParameters(LoginStatus.Succeed, userAuthorization.AccessToken)
                : new AuthenticateResponseParameters(LoginStatus.NonAuthorized);

            if (responseParameters.Status == LoginStatus.Succeed)
            {
                onAuthenticated.Invoke(parameters.UserId);
            }
            return(responseParameters);
        }