Esempio n. 1
0
        public async Task <IActionResult> Login(LoginData login)
        {
            // This might be used if you want to save an Auth cookie
            // var result = await signInManager.PasswordSignInAsync(login.Username, login.Password, false, false);

            var user = await userManager.FindByNameAsync(login.Username);

            if (user != null)
            {
                var result = await userManager.CheckPasswordAsync(user, login.Password);

                if (result)
                {
                    return(Ok(new UserWithToken
                    {
                        UserId = user.Id,
                        Token = userManager.CreateToken(user),
                    }));
                }

                await userManager.AccessFailedAsync(user);
            }

            return(Unauthorized());
        }
        public async Task <IActionResult> Login([FromBody] LoginRequest request)
        {
            var user = await _userManager.FindByIdAsync(request.Username);

            if (user == null)
            {
                _logger.LogInformation($"User #{request.Username} Not Found");
                throw new NotFoundException("Either username or credential provided is invalid");
            }


            if (!await _userManager.IsUserActiveAsync(user))
            {
                _logger.LogInformation($"User #{request.Username} Not Active");
                throw new UnAuthorizedException("User account is not active");
            }

            var lockedOut = await _userManager.IsLockedOutAsync(user.Id);

            if (lockedOut)
            {
                throw new UnAuthorizedException("User is locked out contact administrator");
            }


            var validPassword = await _userManager.VerifyPasswordAsync(user, request.Password);

            if (!validPassword)
            {
                _logger.LogInformation($"User #{request.Username} Entered a wrong password");
                await _userManager.AccessFailedAsync(user.Id);

                throw new UnAuthorizedException("Either username or credential provided is invalid");
            }

            var response = new LoginResponse
            {
                Status = await _userManager.HasPasswordExpiredAsync(user)
                    ? AuthenticationStatus.RequirePasswordChange.ToString()
                    : AuthenticationStatus.Succeed.ToString(),
                JsonWebToken = await _userManager.CreateLoginAsync(user, request.TokenExpireAt),
                UserDetails  = _mapper.Map <UserProfile>(user)
            };


            return(Ok(response));
        }
Esempio n. 3
0
        public async Task <IActionResult> Login(LoginData login)
        {
            var user = await userManager.FindByNameAsync(login.UserName);

            if (user != null)
            {
                var result = await userManager.CheckPasswordAsync(user, login.Password);

                if (result)
                {
                    return(Ok(new UserWithToken
                    {
                        UserId = user.Id,
                        Token = userManager.CreateToken(user)
                    }));
                }

                await userManager.AccessFailedAsync(user);
            }
            return(Unauthorized());
        }
Esempio n. 4
0
        public async Task <IActionResult> Login(LoginData login)
        {
            var user = await userManager.FindByNameAsync(login.UserName);

            if (user != null)
            {
                var result = await userManager.CheckPasswordAsync(user, login.Password);

                if (result)
                {
                    user.LoggedIn = true;
                    await userManager.UpdateAsync(user);

                    await chatHub.SendUpdatedUser(user.UserName, user.LoggedIn);

                    return(Ok(await userManager.CreateUserWithToken(user)));
                }

                await userManager.AccessFailedAsync(user);
            }
            return(Unauthorized());
        }