public Account AuthenticateExternal(AuthenticateExternal external) { var user = _context.Account.SingleOrDefault(x => x.AccountUserName == external.Email && x.IsActive == true); if (user == null) { return(null); } // authentication successful so generate jwt token var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(_appSettings.Secret); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, user.AccountId.ToString()), new Claim(ClaimTypes.Role, GetRoleName(user.AccountRoleId)) }), Expires = DateTime.UtcNow.AddDays(7), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); user.Jwtoken = tokenHandler.WriteToken(token); UserProfile profile = _context.UserProfile.SingleOrDefault(x => x.AccountId == user.AccountId); user.UserProfile.Add(profile); return(user); }
public IActionResult AuthenticateExternal([FromBody] AuthenticateExternal model) { var user = _user.AuthenticateExternal(model); if (user == null) { return(BadRequest(new { message = "Wrong" })); } return(Ok(user)); }