private async Task <string> GenerateTokenWithClaims(string email) { var roles = await _roleService.GetRoleByUser(email); var user = await _userManager.FindByEmailAsync(email); IList <Claim> claims = new List <Claim> { new Claim(JwtRegisteredClaimNames.Email, email), new Claim(ClaimsIdentity.DefaultNameClaimType, email), new Claim("userIdClaim", user.Id.ToString()) }; if (roles.Contains(',')) { foreach (var role in roles.Split(',')) { claims.Add(new Claim(ClaimsIdentity.DefaultRoleClaimType, role)); } } else { claims.Add(new Claim(ClaimsIdentity.DefaultRoleClaimType, roles)); } if (user.PersonalInformationId != Guid.Empty) { claims.Add(new Claim("infoIdClaim", user.PersonalInformationId.ToString())); } if (user.PatientId != Guid.Empty) { claims.Add(new Claim("patientIdClaim", user.PatientId.ToString())); } if (user.WatcmanId != Guid.Empty) { claims.Add(new Claim("watchmanIdClaim", user.WatcmanId.ToString())); } return(_jwtGenerator.GenerateJSONWebToken(claims.ToArray())); }