Ejemplo n.º 1
0
        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);
        }