using HanyadikHetVan.Data.Entities; using IdentityServer4.Models; using IdentityServer4.Services; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Logging; using System; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; namespace HanyadikHetVan.Infrastructure { public class ProfileService : IProfileService { private readonly UserManager userManager; private readonly ILogger _logger; public ProfileService(UserManager userManager, ILogger logger) { this.userManager = userManager; this._logger = logger; } public async Task GetProfileDataAsync(ProfileDataRequestContext context) { var user = await userManager.GetUserAsync(context.Subject); var roles = await userManager.GetRolesAsync(user); if (context.RequestedClaimTypes.Any(x => x == "user_role")) { context.IssuedClaims.AddRange(roles.Select(x => new Claim("user_role", x))); } if (context.RequestedResources.ParsedScopes.Any(x => x.ParsedName == "profile")) { context.IssuedClaims.Add(new Claim("email", user.Email)); } } public async Task IsActiveAsync(IsActiveContext context) { var user = await userManager.GetUserAsync(context.Subject); context.IsActive = user != null; } } }