36 lines
927 B
C#
36 lines
927 B
C#
namespace MyOffice.Web.Identity;
|
|
|
|
using Data.Repositories.Users;
|
|
using IdentityModel;
|
|
using IdentityServer4.Models;
|
|
using IdentityServer4.Services;
|
|
using System.Security.Claims;
|
|
|
|
public class ProfileService : IProfileService
|
|
{
|
|
private readonly IUserRepository _userRepository;
|
|
|
|
public ProfileService(
|
|
IUserRepository userRepository
|
|
)
|
|
{
|
|
_userRepository = userRepository;
|
|
}
|
|
|
|
public async Task GetProfileDataAsync(ProfileDataRequestContext context)
|
|
{
|
|
var sub = context.Subject.Claims.FirstOrDefault(x => x.Type == JwtClaimTypes.Subject);
|
|
if (sub != null && Guid.TryParse(sub.Value, out var id))
|
|
{
|
|
var user = await _userRepository.GetUserAsync(id);
|
|
if (user != null)
|
|
if (context.RequestedClaimTypes.Contains(JwtClaimTypes.Email))
|
|
context.IssuedClaims.Add(new Claim(JwtClaimTypes.Email, user.Email));
|
|
}
|
|
}
|
|
|
|
public Task IsActiveAsync(IsActiveContext context)
|
|
{
|
|
return Task.FromResult(0);
|
|
}
|
|
} |