public ScopeProfile(IClaimTypeSorter claimsTypeSorter) { CreateMap <ScopeModel, ScopeViewModel>() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id)) .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name)) .ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description)) .ForMember(dest => dest.Claims, opt => opt.MapFrom(src => src.Claims)) .ForMember(dest => dest.Required, opt => opt.MapFrom(src => src.Required)) .ForMember(dest => dest.ShowInDiscoveryDocument, opt => opt.MapFrom(src => src.ShowInDiscoveryDocument)) .AfterMap((src, dest) => { dest.Claims = claimsTypeSorter.SortClaimTypes(dest.Claims); }) .ReverseMap() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id)) .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name)) .ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description)) .ForMember(dest => dest.Claims, opt => opt.MapFrom(src => src.Claims)) .ForMember(dest => dest.Required, opt => opt.MapFrom(src => src.Required)) .ForMember(dest => dest.ShowInDiscoveryDocument, opt => opt.MapFrom(src => src.ShowInDiscoveryDocument)) .AfterMap((src, dest) => { dest.Claims = claimsTypeSorter.SortClaimTypes(dest.Claims); }); CreateMap <ScopeViewModel, Scope>() .ForMember(dest => dest.DisplayName, opt => opt.MapFrom(src => src.Name)) .ForMember(dest => dest.Required, opt => opt.MapFrom(src => src.Required)) .ForMember(dest => dest.ShowInDiscoveryDocument, opt => opt.MapFrom(src => src.ShowInDiscoveryDocument)) .ForMember(dest => dest.Emphasize, opt => opt.Ignore()) .ForMember(dest => dest.UserClaims, opt => opt.Ignore()) .ConstructUsing(src => new Scope(src.Name, src.Claims.Select(x => x.Name))); CreateMap <ScopeModel, Scope>() .ForMember(dest => dest.DisplayName, opt => opt.MapFrom(src => src.Name)) .ForMember(dest => dest.Required, opt => opt.MapFrom(src => src.Required)) .ForMember(dest => dest.ShowInDiscoveryDocument, opt => opt.MapFrom(src => src.ShowInDiscoveryDocument)) .ForMember(dest => dest.Emphasize, opt => opt.Ignore()) .ForMember(dest => dest.UserClaims, opt => opt.Ignore()) .ConstructUsing(src => new Scope(src.Name, src.Claims.Select(x => x.Name))); }
public UserProfile(IRoleSorter roleSorter, IResourcePermissionSorter resourcePermissionSorter, IResourcePermissionTypeActionSorter resourcePermissionTypeActionSorter, IClaimTypeSorter claimTypeSorter, IUserDataSorter userDataSorter, IContactSorter contactSorter, IClaimSorter claimSorter) { CreateMap <UserInfoModel, UserViewModel>() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id)) .ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.Username)) .ForMember(dest => dest.TwoFactorEnabled, opt => opt.MapFrom(src => src.TwoFactorEnabled)) .ForMember(dest => dest.LockoutEndDateUtc, opt => opt.MapFrom(src => src.LockoutEndDateUtc)) .ForMember(dest => dest.LockoutEnabled, opt => opt.MapFrom(src => src.LockoutEnabled)) .ForMember(dest => dest.AccessFailedCount, opt => opt.MapFrom(src => src.AccessFailedCount)) .ForMember(dest => dest.TwoFactorProvider, opt => opt.MapFrom(src => src.TwoFactorProvider)) .ForMember(dest => dest.LastChange, opt => opt.MapFrom(src => src.LastChange)) .ForMember(dest => dest.VerificationCode, opt => opt.MapFrom(src => src.VerificationCode)) .ForMember(dest => dest.VerificationCodeCreateTime, opt => opt.MapFrom(src => src.VerificationCodeCreateTime)); CreateMap <UserModel, UserViewModel>() .IncludeBase <UserInfoModel, UserViewModel>() .ForMember(dest => dest.FirstName, opt => opt.MapFrom(new UserDataStringValueResolver <UserViewModel>(UserDataTypes.FirstName))) .ForMember(dest => dest.LastName, opt => opt.MapFrom(new UserDataStringValueResolver <UserViewModel>(UserDataTypes.LastName))) .ForMember(dest => dest.Email, opt => opt.MapFrom(new UserContactValueResolver <UserViewModel>(ContactTypeEnumModel.Email))) .ForMember(dest => dest.EmailLevelOfAssurance, opt => opt.MapFrom(new UserContactLevelOfAssuranceResolver <UserViewModel>(ContactTypeEnumModel.Email))) .ForMember(dest => dest.EmailConfirmCode, opt => opt.MapFrom(new UserContactConfirmCodeResolver <UserViewModel>(ContactTypeEnumModel.Email))) .ForMember(dest => dest.SecurityStamp, opt => opt.MapFrom(src => src.SecurityStamp)) .ForMember(dest => dest.PhoneNumber, opt => opt.MapFrom(new UserContactValueResolver <UserViewModel>(ContactTypeEnumModel.Phone))) .ForMember(dest => dest.PhoneLevelOfAssurance, opt => opt.MapFrom(new UserContactLevelOfAssuranceResolver <UserViewModel>(ContactTypeEnumModel.Phone))) .ForMember(dest => dest.PhoneNumberConfirmCode, opt => opt.MapFrom(new UserContactConfirmCodeResolver <UserViewModel>(ContactTypeEnumModel.Phone))) .ForMember(dest => dest.TwoFactorLogins, opt => opt.MapFrom(src => src.TwoFactorLogins)) .ForMember(dest => dest.Roles, opt => opt.MapFrom(src => src.Roles)) .ForMember(dest => dest.ResourcePermissions, opt => opt.MapFrom(src => src.ResourcePermissions)) .ForMember(dest => dest.ResourcePermissionTypeActions, opt => opt.MapFrom(src => src.ResourcePermissionTypeActions)) .ForMember(dest => dest.SecondName, opt => opt.MapFrom(new UserDataStringValueResolver <UserViewModel>(CustomUserDataTypes.SecondName))) .ForMember(dest => dest.FullName, opt => opt.MapFrom(new UserDataStringValueResolver <UserViewModel>(CustomUserDataTypes.FullName))) .ForMember(dest => dest.Title, opt => opt.MapFrom(new TitleUserDataResolver <UserViewModel>(CustomUserDataTypes.Title))) .ForMember(dest => dest.Prefix, opt => opt.MapFrom(new UserDataStringValueResolver <UserViewModel>(CustomUserDataTypes.Prefix))) .ForMember(dest => dest.Suffix, opt => opt.MapFrom(new UserDataStringValueResolver <UserViewModel>(CustomUserDataTypes.Suffix))) .ForMember(dest => dest.TwoFactorProviders, opt => opt.Ignore()) .AfterMap((src, dest) => { dest.Roles = roleSorter.SortRoles(dest.Roles); dest.ResourcePermissions = resourcePermissionSorter.SortResourcePermissions(dest.ResourcePermissions); dest.ResourcePermissionTypeActions = resourcePermissionTypeActionSorter.SortResourcePermissionTypeActions(dest.ResourcePermissionTypeActions); }); CreateMap <UserViewModel, UserInfoModel>() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id)) .ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.Username)) .ForMember(dest => dest.SecurityStamp, opt => opt.MapFrom(src => src.SecurityStamp)) .ForMember(dest => dest.TwoFactorEnabled, opt => opt.MapFrom(src => src.TwoFactorEnabled)) .ForMember(dest => dest.LockoutEndDateUtc, opt => opt.MapFrom(src => src.LockoutEndDateUtc)) .ForMember(dest => dest.LockoutEnabled, opt => opt.MapFrom(src => src.LockoutEnabled)) .ForMember(dest => dest.AccessFailedCount, opt => opt.MapFrom(src => src.AccessFailedCount)) .ForMember(dest => dest.TwoFactorProvider, opt => opt.MapFrom(src => src.TwoFactorProvider)) .ForMember(dest => dest.VerificationCode, opt => opt.MapFrom(src => src.VerificationCode)) .ForMember(dest => dest.VerificationCodeCreateTime, opt => opt.MapFrom(src => src.VerificationCodeCreateTime)) .ForMember(dest => dest.LastChange, opt => opt.MapFrom(src => src.LastChange)) .ConstructUsingServiceLocator(); CreateMap <UserViewModel, UserModel>() .IncludeBase <UserViewModel, UserInfoModel>() .ForMember(dest => dest.TwoFactorLogins, opt => opt.MapFrom(src => src.TwoFactorLogins)) .ForMember(dest => dest.Roles, opt => opt.MapFrom(src => src.Roles)) .ForMember(dest => dest.ResourcePermissions, opt => opt.MapFrom(src => src.ResourcePermissions)) .ForMember(dest => dest.ResourcePermissionTypeActions, opt => opt.MapFrom(src => src.ResourcePermissionTypeActions)) .ForMember(dest => dest.UserClaims, opt => opt.MapFrom(src => src.UserClaims)) .ForMember(dest => dest.UserData, opt => opt.MapFrom <UserDataToListResolver <UserViewModel> >()) .ForMember(dest => dest.UserContacts, opt => opt.MapFrom <UserContactToListResolver <UserViewModel> >()) .ForMember(dest => dest.ExternalIdentities, opt => opt.Ignore()) .ForMember(dest => dest.PasswordHash, opt => opt.Ignore()) .ForMember(dest => dest.PasswordResetToken, opt => opt.Ignore()) .ForMember(dest => dest.PasswordResetTokenCreateTime, opt => opt.Ignore()) .AfterMap((src, dest) => { dest.Roles = roleSorter.SortRoles(dest.Roles); dest.ResourcePermissions = resourcePermissionSorter.SortResourcePermissions(dest.ResourcePermissions); dest.ResourcePermissionTypeActions = resourcePermissionTypeActionSorter.SortResourcePermissionTypeActions(dest.ResourcePermissionTypeActions); dest.UserClaims = claimSorter.SortClaims(dest.UserClaims); dest.UserData = userDataSorter.SortUserData(dest.UserData); dest.UserContacts = contactSorter.SortContacts(dest.UserContacts); }) .ConstructUsingServiceLocator(); CreateMap <UserModel, ApplicationUser>() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id)) .ForMember(dest => dest.MasterUserId, opt => opt.MapFrom(new MasterUserIdDataResolver <ApplicationUser>(CustomUserDataTypes.MasterUserId))) .ForMember(dest => dest.UserName, opt => opt.MapFrom(src => src.Username)) .ForMember(dest => dest.Email, opt => opt.MapFrom(new UserContactValueResolver <ApplicationUser>(ContactTypeEnumModel.Email))) .ForMember(dest => dest.EmailConfirmed, opt => opt.MapFrom(new UserContactConfirmResolver <ApplicationUser>(ContactTypeEnumModel.Email))) .ForMember(dest => dest.EmailConfirmCode, opt => opt.MapFrom(new UserContactConfirmCodeResolver <ApplicationUser>(ContactTypeEnumModel.Email))) .ForMember(dest => dest.PasswordHash, opt => opt.MapFrom(src => src.PasswordHash)) .ForMember(dest => dest.SecurityStamp, opt => opt.MapFrom(src => src.SecurityStamp)) .ForMember(dest => dest.PhoneNumber, opt => opt.MapFrom(new UserContactValueResolver <ApplicationUser>(ContactTypeEnumModel.Phone))) .ForMember(dest => dest.PhoneNumberConfirmed, opt => opt.MapFrom(new UserContactConfirmResolver <ApplicationUser>(ContactTypeEnumModel.Phone))) .ForMember(dest => dest.PhoneNumberConfirmCode, opt => opt.MapFrom(new UserContactConfirmCodeResolver <ApplicationUser>(ContactTypeEnumModel.Phone))) .ForMember(dest => dest.TwoFactorEnabled, opt => opt.MapFrom(src => src.TwoFactorEnabled)) .ForMember(dest => dest.LockoutEnd, opt => opt.MapFrom(src => src.LockoutEndDateUtc)) .ForMember(dest => dest.LockoutEnabled, opt => opt.MapFrom(src => src.LockoutEnabled)) .ForMember(dest => dest.AccessFailedCount, opt => opt.MapFrom(src => src.AccessFailedCount)) .ForMember(dest => dest.TwoFactorLogins, opt => opt.MapFrom(src => src.TwoFactorLogins)) .ForMember(dest => dest.TwoFactorProvider, opt => opt.MapFrom(src => src.TwoFactorProvider)) .ForMember(dest => dest.LastChange, opt => opt.MapFrom(src => src.LastChange)) .ForMember(dest => dest.Roles, opt => opt.MapFrom(src => src.Roles)) .ForMember(dest => dest.ResourcePermissions, opt => opt.MapFrom(src => src.ResourcePermissions)) .ForMember(dest => dest.ResourcePermissionTypeActions, opt => opt.MapFrom(src => src.ResourcePermissionTypeActions)) .ForMember(dest => dest.VerificationCode, opt => opt.MapFrom(src => src.VerificationCode)) .ForMember(dest => dest.VerificationCodeCreateTime, opt => opt.MapFrom(src => src.VerificationCodeCreateTime)) .ForMember(dest => dest.ExternalUserLogins, opt => opt.MapFrom(src => src.ExternalUserLogins)) .ForMember(dest => dest.UserData, opt => opt.MapFrom(src => src.UserData)) .ForMember(dest => dest.AuthenticatorKey, opt => opt.Ignore()) .ForMember(dest => dest.Permissions, opt => opt.Ignore()) .ForMember(dest => dest.NormalizedUserName, opt => opt.Ignore()) .ForMember(dest => dest.NormalizedEmail, opt => opt.Ignore()) .ForMember(dest => dest.ConcurrencyStamp, opt => opt.Ignore()) .AfterMap((src, dest) => { if (src.Roles == null) { dest.Permissions = null; return; } var permissionNames = new HashSet <string>(); foreach (var role in src.Roles) { foreach (var permission in role.Permissions) { permissionNames.Add(permission.Name); } } dest.Permissions = permissionNames.OrderBy(x => x).ToList(); dest.Roles = roleSorter.SortRoles(dest.Roles); dest.ResourcePermissions = resourcePermissionSorter.SortResourcePermissions(dest.ResourcePermissions); dest.ResourcePermissionTypeActions = resourcePermissionTypeActionSorter.SortResourcePermissionTypeActions(dest.ResourcePermissionTypeActions); dest.UserData = userDataSorter.SortUserData(dest.UserData); }); CreateMap <ApplicationUser, UserModel>() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id)) .ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.UserName)) .ForMember(dest => dest.SecurityStamp, opt => opt.MapFrom(src => src.SecurityStamp)) .ForMember(dest => dest.TwoFactorEnabled, opt => opt.MapFrom(src => src.TwoFactorEnabled)) .ForMember(dest => dest.LockoutEndDateUtc, opt => opt.MapFrom(src => src.LockoutEnd)) .ForMember(dest => dest.LockoutEnabled, opt => opt.MapFrom(src => src.LockoutEnabled)) .ForMember(dest => dest.AccessFailedCount, opt => opt.MapFrom(src => src.AccessFailedCount)) .ForMember(dest => dest.TwoFactorLogins, opt => opt.MapFrom(src => src.TwoFactorLogins)) .ForMember(dest => dest.Roles, opt => opt.MapFrom(src => src.Roles)) .ForMember(dest => dest.ResourcePermissions, opt => opt.MapFrom(src => src.ResourcePermissions)) .ForMember(dest => dest.ResourcePermissionTypeActions, opt => opt.MapFrom(src => src.ResourcePermissionTypeActions)) .ForMember(dest => dest.TwoFactorProvider, opt => opt.MapFrom(src => src.TwoFactorProvider)) .ForMember(dest => dest.UserClaims, opt => opt.MapFrom(src => src.UserClaims)) .ForMember(dest => dest.VerificationCode, opt => opt.MapFrom(src => src.VerificationCode)) .ForMember(dest => dest.VerificationCodeCreateTime, opt => opt.MapFrom(src => src.VerificationCodeCreateTime)) .ForMember(dest => dest.UserData, opt => opt.MapFrom(src => src.UserData)) .ForMember(dest => dest.UserContacts, opt => opt.MapFrom <UserContactToListResolver <ApplicationUser> >()) .ForMember(dest => dest.LastChange, opt => opt.MapFrom(src => src.LastChange)) .ForMember(dest => dest.ExternalIdentities, opt => opt.Ignore()) .ForMember(dest => dest.PasswordResetToken, opt => opt.Ignore()) .ForMember(dest => dest.PasswordResetTokenCreateTime, opt => opt.Ignore()) .AfterMap((src, dest) => { dest.Roles = roleSorter.SortRoles(dest.Roles); dest.ResourcePermissions = resourcePermissionSorter.SortResourcePermissions(dest.ResourcePermissions); dest.ResourcePermissionTypeActions = resourcePermissionTypeActionSorter.SortResourcePermissionTypeActions(dest.ResourcePermissionTypeActions); dest.UserClaims = claimSorter.SortClaims(dest.UserClaims); dest.UserData = userDataSorter.SortUserData(dest.UserData); dest.UserContacts = contactSorter.SortContacts(dest.UserContacts); }); CreateMap <UserModel, UserData>() .ForMember(dest => dest.FirstName, opt => opt.MapFrom(new UserDataStringValueResolver <UserData>(UserDataTypes.FirstName))) .ForMember(dest => dest.LastName, opt => opt.MapFrom(new UserDataStringValueResolver <UserData>(UserDataTypes.LastName))) .ForMember(dest => dest.FullName, opt => opt.Ignore()) .ForMember(dest => dest.EmailAddress, opt => opt.MapFrom(new UserContactValueResolver <UserData>(ContactTypeEnumModel.Email))) .ForMember(dest => dest.PhoneNumber, opt => opt.MapFrom(new UserContactValueResolver <UserData>(ContactTypeEnumModel.Phone))) .ForMember(dest => dest.Muid, opt => opt.Ignore()); }
public ResourceProfile(IClaimTypeSorter claimsTypeSorter, IScopeSorter scopesSorter, IApiSecretSorter secretSorter) { CreateMap <ResourceModel, ResourceViewModel>() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id)) .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name)) .ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description)) .ForMember(dest => dest.Claims, opt => opt.MapFrom(src => src.Claims)) .ForMember(dest => dest.Required, opt => opt.MapFrom(src => src.Required)) .ForMember(dest => dest.ShowInDiscoveryDocument, opt => opt.MapFrom(src => src.ShowInDiscoveryDocument)) .AfterMap((src, dest) => { dest.Claims = claimsTypeSorter.SortClaimTypes(dest.Claims); }) .ReverseMap() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id)) .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name)) .ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description)) .ForMember(dest => dest.Claims, opt => opt.MapFrom(src => src.Claims)) .ForMember(dest => dest.Required, opt => opt.MapFrom(src => src.Required)) .ForMember(dest => dest.ShowInDiscoveryDocument, opt => opt.MapFrom(src => src.ShowInDiscoveryDocument)) .AfterMap((src, dest) => { dest.Claims = claimsTypeSorter.SortClaimTypes(dest.Claims); }); CreateMap <ApiResourceModel, ApiResourceViewModel>() .IncludeBase <ResourceModel, ResourceViewModel>() .ForMember(dest => dest.Scopes, opt => opt.MapFrom(src => src.Scopes)) .ForMember(dest => dest.ApiSecrets, opt => opt.MapFrom(src => src.ApiSecrets)) .AfterMap((src, dest) => { dest.Scopes = scopesSorter.SortScopes(dest.Scopes); dest.ApiSecrets = secretSorter.SortApiSecrets(dest.ApiSecrets); }); CreateMap <ApiResourceViewModel, ApiResourceModel>() .IncludeBase <ResourceViewModel, ResourceModel>() .ForMember(dest => dest.Scopes, opt => opt.MapFrom(src => src.Scopes)) .ForMember(dest => dest.ApiSecrets, opt => opt.MapFrom(src => src.ApiSecrets)) .AfterMap((src, dest) => { dest.Scopes = scopesSorter.SortScopes(dest.Scopes); dest.ApiSecrets = secretSorter.SortApiSecrets(dest.ApiSecrets); }); CreateMap <ApiResourceViewModel, ApiResource>() .ForMember(dest => dest.Enabled, opt => opt.Ignore()) .ForMember(dest => dest.DisplayName, opt => opt.Ignore()) .ForMember(dest => dest.UserClaims, opt => opt.Ignore()) .ForMember(dest => dest.Properties, opt => opt.Ignore()) .ForMember(dest => dest.Scopes, opt => opt.MapFrom(src => src.Scopes)) .ConstructUsing(src => new ApiResource(src.Name, src.Claims.Select(x => x.Name))); CreateMap <IdentityResourceModel, IdentityResourceViewModel>() .IncludeBase <ResourceModel, ResourceViewModel>(); CreateMap <IdentityResourceViewModel, IdentityResourceModel>() .IncludeBase <ResourceViewModel, ResourceModel>(); CreateMap <IdentityResourceViewModel, IdentityResource>() .ForMember(dest => dest.Enabled, opt => opt.Ignore()) .ForMember(dest => dest.Emphasize, opt => opt.Ignore()) .ForMember(dest => dest.DisplayName, opt => opt.Ignore()) .ForMember(dest => dest.UserClaims, opt => opt.Ignore()) .ForMember(dest => dest.Properties, opt => opt.Ignore()) .ConstructUsing(src => new IdentityResource(src.Name, src.Claims.Select(x => x.Name))); CreateMap <ApiResourceModel, ApiResource>() .ForMember(dest => dest.Enabled, opt => opt.Ignore()) .ForMember(dest => dest.DisplayName, opt => opt.Ignore()) .ForMember(dest => dest.UserClaims, opt => opt.Ignore()) .ForMember(dest => dest.Properties, opt => opt.Ignore()) .ForMember(dest => dest.Scopes, opt => opt.MapFrom(src => src.Scopes)) .ConstructUsing(src => new ApiResource(src.Name, src.Claims.Select(x => x.Name))); CreateMap <IdentityResourceModel, IdentityResource>() .ForMember(dest => dest.Enabled, opt => opt.Ignore()) .ForMember(dest => dest.Emphasize, opt => opt.Ignore()) .ForMember(dest => dest.DisplayName, opt => opt.Ignore()) .ForMember(dest => dest.UserClaims, opt => opt.Ignore()) .ForMember(dest => dest.Properties, opt => opt.Ignore()) .ConstructUsing(src => new IdentityResource(src.Name, src.Claims.Select(x => x.Name))); }