示例#1
0
        public async Task <IActionResult> Login([FromBody] LoginModel model)
        {
            if (!model.Email.IsValidEmailAndRowKey())
            {
                throw LykkeApiErrorException.BadRequest(ApiErrorCodes.Service.InvalidEmailFormat);
            }

            var(error, admin, token) = await _adminsService.AuthenticateAsync(model.Email, model.Password);

            switch (error)
            {
            case AdminServiceCreateResponseError.None:
                return(Ok(new LoginResponseModel
                {
                    Token = token,
                    AdminUser = _mapper.Map <AdminModel>(admin)
                }));

            case AdminServiceCreateResponseError.AdminNotActive:
                throw LykkeApiErrorException.BadRequest(ApiErrorCodes.Service.AdminNotActive);

            case AdminServiceCreateResponseError.LoginNotFound:
            case AdminServiceCreateResponseError.PasswordMismatch:
                throw LykkeApiErrorException.BadRequest(ApiErrorCodes.Service.InvalidCredentials);

            case AdminServiceCreateResponseError.AdminEmailIsNotVerified:
                throw LykkeApiErrorException.BadRequest(ApiErrorCodes.Service.AdminEmailIsNotVerified);

            case AdminServiceCreateResponseError.InvalidEmailOrPasswordFormat:
                throw LykkeApiErrorException.BadRequest(ApiErrorCodes.Service.InvalidEmailOrPasswordFormat);

            default:
                throw new InvalidOperationException($"Unexpected error during Authenticate for {model.Email.SanitizeEmail()} - {error}");
            }
        }