public async Task <TokensModel> LoginAsync(UserModel user, bool rememberMe) { if (string.IsNullOrWhiteSpace(user.Password) || string.IsNullOrWhiteSpace(user.UserName)) { throw new CustomApiException(HttpStatusCode.UnprocessableEntity, Constants.INCORRECTINPUTERROR); } var dbUser = await _userManager.FindByNameAsync(user.UserName); if (dbUser is null) { throw new CustomApiException(HttpStatusCode.BadRequest, Constants.USERNOTFOUNDERROR); } if (dbUser.IsRemoved) { throw new CustomApiException(HttpStatusCode.Forbidden, Constants.USERBANNED); } var result = await _signInManager.PasswordSignInAsync(user.UserName, user.Password, rememberMe, false); if (!result.Succeeded) { throw new CustomApiException(HttpStatusCode.Forbidden, Constants.FAILEDLOGINERROR); } var userRoles = await _userManager.GetRolesAsync(dbUser); var jwtResult = await _jwtProvider.GenerateTokenAsync(dbUser.UserName, dbUser.Id, userRoles); return(jwtResult); }