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);
        }
Example #2
0
        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;
        }