Example #1
0
        /// <summary>
        /// Service method to log a user in.
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <TokenModel> LogUserIn(LoginModel model)
        {
            if (model == null)
            {
                return(null);
            }
            FXUser user        = new FXUser();
            var    userContext = _httpContextAccessor.HttpContext.User.Identity.Name;

            //_httpContextAccessor.HttpContext.Request.
            //get bsae url wt above
            log.LogInformation($"Attempting to retrieve user {userContext} info.");
            try
            {
                user = await _userrepo.FirstOrDefault(u => u.Username == model.Username);

                if (user == null)
                {
                    return(null);
                }
            }
            catch (Exception e)
            {
                log.LogError($"{e.Message}");
                return(null);
            }


            var verifyPwd = AuthUtil.VerifyPasswordHash(model.Password, user.PasswordHash, user.PasswordSalt);

            if (!verifyPwd)
            {
                return(null);
            }

            var claims    = new ClaimsIdentity(new[] { new Claim("id", $"{user.Id}"), new Claim(ClaimTypes.Role, user.Role), new Claim(ClaimTypes.Name, user.Username) });
            var jwtSecret = configuration["JwtSettings:Secret"];
            var token     = AuthUtil.GenerateJwtToken(jwtSecret, claims);

            claims.AddClaim(new Claim("token", token));

            var refreshToken = AuthUtil.GenerateRefreshToken();

            // Save tokens to DB
            user.AuthToken    = token;
            user.RefreshToken = refreshToken;

            await _userrepo.Update(user);

            return(new TokenModel
            {
                Token = token,
                RefreshToken = refreshToken,
                Email = user.Email,
                UserID = user.Id,
                Role = user.Role,
                Username = user.Username
            });
            //throw new NotImplementedException("h");
        }
        public async Task <TokenModel> LogUserIn(LoginModel model)
        {
            if (model == null)
            {
                return(null);
            }
            User user        = new User();
            var  userContext = _httpContextAccessor.HttpContext.User.Identity.Name;

            //var userIdentity = (ClaimsIdentity)userContext.Identity;
            //var claim = userIdentity.Claims.ToList();
            //var roleClaimType = userIdentity.RoleClaimType;
            //var roles = claim.Where(c => c.Type == ClaimTypes.Role).Select(d => d.Value).ToList();
            log.LogInformation($"=>> {userContext}");
            try
            {
                user = await repository.FirstOrDefault(u => u.Username == model.Username);

                if (user == null)
                {
                    return(null);
                }
            }
            catch (Exception e)
            {
                log.LogError($"{e.Message}");
            }


            var verifyPwd = AuthUtil.VerifyPasswordHash(model.Password, user.PasswordHash, user.PasswordSalt);

            if (!verifyPwd)
            {
                return(null);
            }

            var claims    = new ClaimsIdentity(new[] { new Claim("id", $"{user.ID}"), new Claim(ClaimTypes.Role, user.Role), new Claim(ClaimTypes.Name, user.Username) });
            var jwtSecret = configuration["JwtSettings:Secret"];
            var token     = AuthUtil.GenerateJwtToken(jwtSecret, claims);

            _httpContextAccessor.HttpContext.Session.SetString("JWToken", token);
            claims.AddClaim(new Claim("token", token));

            var refreshToken = AuthUtil.GenerateRefreshToken();

            // Save tokens to DB
            user.AuthToken    = token;
            user.RefreshToken = refreshToken;

            await repository.Update(user);

            return(new TokenModel
            {
                Token = token,
                RefreshToken = refreshToken,
                Email = user.Email,
                UserID = user.ID,
                Role = user.Role,
                Username = user.Username
            });
            //throw new NotImplementedException("h");
        }