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