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; }); }
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); } } }
public void InsertUserRole(UserRole userRole) { if (userRole == null) throw new ArgumentNullException("userRole"); _userRoleRepository.Insert(userRole); //event notification //_eventPublisher.EntityInserted(userRole); }
public void UpdateUserRole(UserRole userRole) { if (userRole == null) throw new ArgumentNullException("userRole"); _userRoleRepository.Update(userRole); //event notification // _eventPublisher.EntityUpdated(customerRole); }
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); }