Ejemplo n.º 1
0
        public bool Authorize(string permissionRecordSystemName, UserRole role)
        {
            if (String.IsNullOrEmpty(permissionRecordSystemName))
                return false;
            var key = string.Format(PERMISSIONS_ALLOWED_KEY, role.Id, permissionRecordSystemName);
            return _cacheManager.Get(key, () =>
            {
                foreach (var pr in role.PermissionRecords)
                    if (pr.SystemName.Equals(permissionRecordSystemName, StringComparison.InvariantCultureIgnoreCase))
                        return true;

                return false;
            });
        }
Ejemplo n.º 2
0
        public void InstallPermissions(IPermissionProvider permissionProvider)
        {
            //install new permissions
            var permissions = permissionProvider.GetPermissions();
            foreach (var permission in permissions)
            {
                var permission1 = GetPermissionRecordBySystemName(permission.SystemName);
                if (permission1 == null)
                {
                    //new permission (install it)
                    permission1 = new PermissionRecord
                    {
                        Name = permission.Name,
                        SystemName = permission.SystemName,
                        Category = permission.Category,
                    };

                    //这里有点不合理 难道每次都要循环一次?
                    //default customer role mappings
                    var defaultPermissions = permissionProvider.GetDefaultPermissions();
                    foreach (var defaultPermission in defaultPermissions)
                    {
                        var customerRole = _userService.GetUserRoleBySystemName(defaultPermission.UserRoleSystemName);
                        if (customerRole == null)
                        {
                            //new role (save it)
                            customerRole = new UserRole
                            {
                                Name = defaultPermission.UserRoleSystemName,
                                Active = true,
                                SystemName = defaultPermission.UserRoleSystemName
                            };
                            _userService.InsertUserRole(customerRole);
                        }


                        var defaultMappingProvided = (from p in defaultPermission.PermissionRecords
                                                      where p.SystemName == permission1.SystemName
                                                      select p).Any();
                        var mappingExists = (from p in customerRole.PermissionRecords
                                             where p.SystemName == permission1.SystemName
                                             select p).Any();
                        if (defaultMappingProvided && !mappingExists)
                        {
                            permission1.UserRoles.Add(customerRole);
                        }
                    }

                    //save new permission
                    InsertPermissionRecord(permission1);

                    //save localization 本地化
                   // permission1.SaveLocalizedPermissionName(_localizationService, _languageService);
                }
            }
        }
Ejemplo n.º 3
0
       public void InsertUserRole(UserRole userRole)
       {
           if (userRole == null)
               throw new ArgumentNullException("userRole");

           _userRoleRepository.Insert(userRole);

           //event notification
           //_eventPublisher.EntityInserted(userRole);
       }
Ejemplo n.º 4
0
       public void UpdateUserRole(UserRole userRole)
       {
           if (userRole == null)
               throw new ArgumentNullException("userRole");

           _userRoleRepository.Update(userRole);

           //event notification
          // _eventPublisher.EntityUpdated(customerRole);
       }
Ejemplo n.º 5
0
       public void DeleteUserRole(UserRole role)
       {
           if (role == null)
               throw new ArgumentNullException("role");

           if (role.IsSystemRole)
               throw new PortalException("系统用户不能删除");

           _userRoleRepository.Delete(role);

          // _cacheManager.RemoveByPattern(UserrolesBySystemnameKey);

         //  _eventPublisher.EntityDeleted(customerRole);

       }