protected virtual async Task <IEnumerable <Claim> > GetClaimsFromAccount(TUser user) { var userId = await _userManager.GetUserIdAsync(user).ConfigureAwait(false); var userName = await _userManager.GetUserNameAsync(user).ConfigureAwait(false); var claims = new List <Claim> { new Claim(Constants.ClaimTypes.Subject, userId), new Claim(Constants.ClaimTypes.PreferredUserName, userName), }; if (_userManager.SupportsUserEmail) { var email = await _userManager.GetEmailAsync(user).ConfigureAwait(false); if (!string.IsNullOrWhiteSpace(email)) { claims.Add(new Claim(Constants.ClaimTypes.Email, email)); var verified = await _userManager.IsEmailConfirmedAsync(user).ConfigureAwait(false); claims.Add(new Claim(Constants.ClaimTypes.EmailVerified, verified ? "true" : "false")); } } if (_userManager.SupportsUserPhoneNumber) { var phone = await _userManager.GetPhoneNumberAsync(user).ConfigureAwait(false); if (!string.IsNullOrWhiteSpace(phone)) { claims.Add(new Claim(Constants.ClaimTypes.PhoneNumber, phone)); var verified = await _userManager.IsPhoneNumberConfirmedAsync(user); claims.Add(new Claim(Constants.ClaimTypes.PhoneNumberVerified, verified ? "true" : "false")); } } if (_userManager.SupportsUserClaim) { claims.AddRange(await _userManager.GetClaimsAsync(user).ConfigureAwait(false)); } if (_userManager.SupportsUserRole) { var roleClaims = from role in await _userManager.GetRolesAsync(user).ConfigureAwait(false) select new Claim(Constants.ClaimTypes.Role, role); claims.AddRange(roleClaims); } return(claims); }
public async Task <IdentityManagerResult <UserDetail> > GetUserAsync(string subject) { TUserKey key = ConvertUserSubjectToKey(subject); var user = await this.userManager.FindByIdAsync(key); if (user == null) { return(new IdentityManagerResult <UserDetail>((UserDetail)null)); } var result = new UserDetail { Subject = subject, Username = user.UserName, Name = DisplayNameFromUser(user), }; var metadata = await GetMetadataAsync(); var props = from prop in metadata.UserMetadata.UpdateProperties select new PropertyValue { Type = prop.Type, Value = GetUserProperty(prop, user) }; result.Properties = props.ToArray(); if (userManager.SupportsUserClaim) { var userClaims = await userManager.GetClaimsAsync(key); var claims = new List <Thinktecture.IdentityManager.ClaimValue>(); if (userClaims != null) { claims.AddRange(userClaims.Select(x => new Thinktecture.IdentityManager.ClaimValue { Type = x.Type, Value = x.Value })); } result.Claims = claims.ToArray(); } return(new IdentityManagerResult <UserDetail>(result)); }