public UserAdminstrationService(IUserRepository userRepository, IRoleRepository roleRepository, UbikUserManager<UbikUser> userManager, UbikRoleManager<UbikRole> roleManager, IViewModelCommand<RoleSaveModel> roleCommand, IViewModelCommand<NewUserSaveModel> newUserCommand, IDbContextScopeFactory dbContextScopeFactory, IEnumerable<IResourceAuthProvider> authProviders, ICacheProvider cache, IViewModelCommand<UserSaveModel> userCommand) { _userRepo = userRepository; _roleRepo = roleRepository; _userManager = userManager; _roleManager = roleManager; _roleCommand = roleCommand; _newUserCommand = newUserCommand; _dbContextScopeFactory = dbContextScopeFactory; _authProviders = authProviders; _cache = cache; _userCommand = userCommand; _userBuilder = new UserViewModelBuilder(RoleViewModels); _newUserBuilder = new NewUserViewModelBuilder(RoleViewModels); _roleBuilder = new RoleViewModelBuilder(RoleViewModels); }
public static IEnumerable<RoleViewModel> RoleModelsCheckDB( this IEnumerable<IResourceAuthProvider> authProviders, UbikRoleManager<UbikRole> roleManager) { var resourceAuthProviders = authProviders as IResourceAuthProvider[] ?? authProviders.ToArray(); var systemRoleViewModels = resourceAuthProviders.RoleModels().ToList(); var roleViewModels = new List<RoleViewModel>(systemRoleViewModels); var dbRoles = roleManager.AllRoles().Result.ToList(); roleViewModels.AddRange(from applicationRole in dbRoles where systemRoleViewModels.All(x => x.Name != applicationRole.Name) select new RoleViewModel { Name = applicationRole.Name, RoleId = applicationRole.Id, Claims = applicationRole.Claims.Select(dbClaim => new RoleClaimViewModel() { Type = dbClaim.ClaimType, Value = dbClaim.ClaimValue }), IsPersisted = true, IsSytemRole = false }); foreach (var dbRole in dbRoles) { var found = roleViewModels.FirstOrDefault(x => x.Name == dbRole.Name && x.IsSytemRole); if (found != null) found.RoleId = dbRole.Id; } foreach (var roleViewModel in roleViewModels) { if (roleViewModel.AvailableClaims == null) { var avalableClaims = authProviders.AvailableSystemClaims(); foreach (var roleClaimRowViewModel in avalableClaims) { roleClaimRowViewModel.IsSelected = roleViewModel.Claims.Any(x => x.Type == roleClaimRowViewModel.Type && x.Value == roleClaimRowViewModel.Value); } roleViewModel.AvailableClaims = avalableClaims.ToArray(); } } return roleViewModels; }