using System; using System.Collections.Generic; using System.Security.Claims; using System.Threading.Tasks; using Dough.Models; using Dough.Models.Database; using Dough.Utilities; using IdentityModel; using IdentityServer4.Models; using IdentityServer4.Services; namespace Dough.IdentityServer { public class ProfileService : IProfileService { private readonly MainDbContext _context; public ProfileService(MainDbContext context) { _context = context; } public async Task GetProfileDataAsync(ProfileDataRequestContext context) { var userId = context.Subject.GetClaimValueOrDefault(JwtClaimTypes.Subject)?.ToGuidOrDefault(); if (userId == default) return; var user = _context.Users.SingleOrDefault((Guid) userId); var claims = new List { new Claim(JwtClaimTypes.PreferredUserName, user.Username) }; context.AddRequestedClaims(claims); } public async Task IsActiveAsync(IsActiveContext context) { var userId = context.Subject.GetClaimValueOrDefault(JwtClaimTypes.Subject)?.ToGuidOrDefault(); if (userId == default) return; var user = _context.Users.SingleOrDefault((Guid) userId); context.IsActive = !user.Hidden; } } }