/// <summary> /// Validates a token passed as a string using Microsoft.IdentityModel.Tokens.TokenValidationParameters /// </summary> /// <param name="securityToken">Bearer token</param> /// <param name="validationParameters"></param> /// <param name="validatedToken"></param> /// <returns></returns> public ClaimsPrincipal ValidateToken(string securityToken, TokenValidationParameters validationParameters, out SecurityToken validatedToken) { try { ClaimsPrincipal principal = _tokenHandler.ValidateToken(securityToken, validationParameters, out validatedToken); if (principal.Identity is ClaimsIdentity) { ClaimsIdentity identity = principal.Identity as ClaimsIdentity; if (identity.HasClaim(c => c.Type == ClaimTypes.NameIdentifier)) { identity.AddClaim(new Claim(ClaimTypes.Name, identity.FindFirst(c => c.Type == ClaimTypes.NameIdentifier).Value)); } var emailClaim = identity.FindFirst(ClaimTypes.Email); var user = _userService.GetUser(int.Parse(emailClaim?.Value)); if (user == null) { throw new Exception("User not found."); } identity.AddClaim(new Claim(WsConstants.UserIdClaim, user.Id.ToString())); GetUserPermissions(identity, user.UserName); } return(principal); } catch (Exception exception) { _logger.LogError(exception, $"Exception occured in parse token"); throw; } }
public UserDto GetUser(int Id) { var food = _userRepositories.GetUser(Id); return(UserDto.ToUserDto(food)); }