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}"); } }