public SCUpdateObjectAclExecutor(SCOperationType opType, SCAclContainer container) : base(opType) { container.NullCheck("container"); this._Container = container; }
public SCUpdateConditionsExecutor(SCOperationType opType, SCConditionOwner owner) : base(opType) { owner.NullCheck("owner"); this._Owner = owner; }
private void CheckPermissions(SCOperationType opType, SchemaDefine schemaInfo, string permissionName, params string[] containerIDs) { if (NeedCheckPermissionAndCurrentUserIsNotSupervisor && DeluxePrincipal.Current.HasPermissions(permissionName, containerIDs) == false) { throw SCAclPermissionCheckException.CreateException(opType, schemaInfo, permissionName); } }
public SCMoveObjectExecutor(SCOperationType opType, SCOrganization originalOrg, SCBase obj, SCOrganization targetOrg) : base(opType) { obj.NullCheck("obj"); targetOrg.NullCheck("targetOrg"); obj.ClearRelativeData(); targetOrg.ClearRelativeData(); if (originalOrg != null) { originalOrg.ClearRelativeData(); } this._Object = obj; this._OriginalOrganization = originalOrg; this._TargetOrganization = targetOrg; this._NeedChangeOwner = PrepareNeedChangeOwner(originalOrg, targetOrg, obj); if (originalOrg != null && originalOrg.ID == targetOrg.ID) { this._RelationExisted = true; } else { this._OriginalRelation = PreprareOriginalRelation(originalOrg, obj); this._TargetRelation = PrepareTargetRelation(targetOrg, obj); this._NeedGenerateFullPaths = (obj is ISCRelationContainer) && (((ISCRelationContainer)obj).GetCurrentChildrenCount() > 0); } }
public SCOrganizationRelativeExecutor(SCOperationType opType, SCOrganization parent, SCBase data) : base(opType, data) { parent.NullCheck("organization"); data.ClearRelativeData(); parent.ClearRelativeData(); this._Parent = parent; this._Relation = PrepareRelationObject(parent, data); if (this.OperationType == SCOperationType.AddOrganization) { this._AclContainer = PrepareAclContainer(parent, data); } if (data is SCUser) { this._TargetParentRelations = data.CurrentParentRelations; if (this.OperationType == SCOperationType.AddUser && this._TargetParentRelations.Count == 0) { SCUser user = (SCUser)data; user.OwnerID = parent.ID; user.OwnerName = parent.Properties.GetValue("Name", string.Empty); } } }
public SCOrganizationRelativeExecutor(SCOperationType opType, SCOrganization parent, SCBase data) : base(opType, data) { parent.NullCheck("organization"); data.ClearRelativeData(); parent.ClearRelativeData(); this._Parent = parent; this._Relation = PrepareRelationObject(parent, data); if (this.OperationType == SCOperationType.AddOrganization) this._AclContainer = PrepareAclContainer(parent, data); if (data is SCUser) { this._TargetParentRelations = data.CurrentParentRelations; if (this.OperationType == SCOperationType.AddUser && this._TargetParentRelations.Count == 0) { SCUser user = (SCUser)data; user.OwnerID = parent.ID; user.OwnerName = parent.Properties.GetValue("Name", string.Empty); } } }
public SCMoveObjectExecutor(SCOperationType opType, SCOrganization originalOrg, SCBase obj, SCOrganization targetOrg) : base(opType) { obj.NullCheck("obj"); targetOrg.NullCheck("targetOrg"); obj.ClearRelativeData(); targetOrg.ClearRelativeData(); if (originalOrg != null) originalOrg.ClearRelativeData(); this._Object = obj; this._OriginalOrganization = originalOrg; this._TargetOrganization = targetOrg; this._NeedChangeOwner = PrepareNeedChangeOwner(originalOrg, targetOrg, obj); if (originalOrg != null && originalOrg.ID == targetOrg.ID) { this._RelationExisted = true; } else { this._OriginalRelation = PreprareOriginalRelation(originalOrg, obj); this._TargetRelation = PrepareTargetRelation(targetOrg, obj); this._NeedGenerateFullPaths = (obj is ISCRelationContainer) && (((ISCRelationContainer)obj).GetCurrentChildrenCount() > 0); } }
public SCReplaceAclRecursivelyExecutor(SCOperationType opType, ISCAclContainer parent) : base(opType) { parent.NullCheck("parent"); this._Parent = parent; this.AutoStartTransaction = false; }
public SCObjectExecutor(SCOperationType opType, SCBase data) : base(opType) { data.NullCheck("data"); data.ClearRelativeData(); this._Data = data; }
private void CheckOrganizationChildrenPermissions(SCOperationType opType, string permissionName, string childID) { SchemaObjectBase child = SchemaObjectAdapter.Instance.Load(childID); if (child != null) { CheckOrganizationChildrenPermissions(opType, permissionName, child); } }
public void AfterExecute(SCOperationType operationType) { SCOperationSnapshot snapshot = new SCOperationSnapshot() { OperationType = operationType }; SCOperationSnapshotAdapter.Instance.Update(snapshot); }
private void CheckSupervisorPermissions(SCOperationType opType) { if (NeedCheckPermissionAndCurrentUserIsNotSupervisor) { string opDesp = EnumItemDescriptionAttribute.GetDescription(opType); throw new SCAclPermissionCheckException(string.Format("您不是超级管理员,不能执行\"{0}\"操作", opDesp)); } }
public SCUpdateObjectImageExecutor(SCOperationType opType, SchemaObjectBase obj, string propertyName, ImageProperty image) : base(opType) { obj.NullCheck("obj"); propertyName.IsNullOrEmpty().TrueThrow("propertyName不能为空!"); this._Object = obj; this._PropertyName = propertyName; this._Image = image; }
private void CheckApplicationMemberPermissions(SCOperationType opType, string permissionName, ISCApplicationMember member) { if (this.NeedCheckPermissionAndCurrentUserIsNotSupervisor) { SCApplication application = member.CurrentApplication; if (application != null) { CheckPermissions(opType, application.Schema, permissionName, application.ID); } } }
/// <summary> /// 修改对象的Owner信息 /// </summary> /// <param name="opType">操作类型</param> /// <param name="obj">需要调整Owner的对象</param> /// <param name="targetOrg">调整后的Owner</param> public SCChangeOwnerExecutor(SCOperationType opType, SCBase obj, SCOrganization targetOrg) : base(opType) { obj.NullCheck("obj"); targetOrg.NullCheck("targetOrg"); obj.ClearRelativeData(); targetOrg.ClearRelativeData(); this._Object = obj; this._TargetOrganization = targetOrg; }
private void CheckApplicationMemberPermissions(SCOperationType opType, string permissionName, string memberID) { if (this.NeedCheckPermissionAndCurrentUserIsNotSupervisor) { ISCApplicationMember member = SchemaObjectAdapter.Instance.Load(memberID) as ISCApplicationMember; if (member != null) { CheckApplicationMemberPermissions(opType, permissionName, member); } } }
public SCMemberRelativeExecutorBase(SCOperationType opType, SchemaObjectBase container, SCBase member) : base(opType, member) { container.NullCheck("container"); container.ClearRelativeData(); if (member != null) member.ClearRelativeData(); this._Container = container; this._Relation = PrepareRelationObject(container, member); }
private void CheckOrganizationChildrenPermissions(SCOperationType opType, string permissionName, SchemaObjectBase child) { SchemaObjectBase parent = child.CurrentParents.FirstOrDefault(); if (parent != null) { CheckPermissions(opType, parent.Schema, permissionName, parent.ID); } else { CheckSupervisorPermissions(opType); } }
public SCJoinRoleAndPermissionExecutor(SCOperationType opType, SCRole role, SCPermission permission) : base(opType) { role.NullCheck("role"); permission.NullCheck("permission"); role.ClearRelativeData(); permission.ClearRelativeData(); this._Relation = PrepareRelationObject(role, permission); this._Role = role; this._Permission = permission; }
public SchemaObjectBase DeleteUser(SCUser user, SCOrganization parent, bool deletedByContainer) { SchemaObjectStatus targetStatus = deletedByContainer ? SchemaObjectStatus.DeletedByContainer : SchemaObjectStatus.Deleted; SCOperationType op = SCOperationType.None; SCExecutorBase executor = null; if (parent == null) { op = SCOperationType.DeleteUser; if (this._NeedCheckPermissions) { CheckPermissions(op, SchemaDefine.GetSchema("Organizations"), "DeleteChildren", user.OwnerID); } user.Status = targetStatus; executor = new SCObjectExecutor(op, user) { NeedDeleteRelations = true, NeedValidation = false, NeedDeleteMemberRelations = this.NeedValidationAndStatusCheck, NeedStatusCheck = this.NeedValidationAndStatusCheck }; } else { op = SCOperationType.RemoveUserFromOrganization; if (this._NeedCheckPermissions) { CheckPermissions(op, parent.Schema, "DeleteChildren", parent.ID); } executor = new SCOrganizationRelativeExecutor(op, parent, user) { OverrideExistedRelation = true, NeedValidation = false, NeedStatusCheck = this.NeedValidationAndStatusCheck, NeedParentStatusCheck = this.NeedValidationAndStatusCheck }; if (((SCOrganizationRelativeExecutor)executor).Relation != null) { ((SCOrganizationRelativeExecutor)executor).Relation.Status = targetStatus; } } SchemaObjectBase result = null; ExecuteWithActions(op, () => SCActionContext.Current.DoActions(() => result = (SchemaObjectBase)executor.Execute())); return(result); }
public SCMemberRelativeExecutorBase(SCOperationType opType, SchemaObjectBase container, SCBase member) : base(opType, member) { container.NullCheck("container"); container.ClearRelativeData(); if (member != null) { member.ClearRelativeData(); } this._Container = container; this._Relation = PrepareRelationObject(container, member); }
public void AfterExecute(SCOperationType operationType) { switch (operationType) { case SCOperationType.UpdateObjectAcl: case SCOperationType.ReplaceAclRecursively: //内部授权操作,不影响一般查询的缓存 break; case SCOperationType.UpdateObjectImage: //图像操作也不影响缓存 break; default: SCCacheHelper.InvalidateAllCache(); break; } }
public static SCOperationLog ToOperationLog(this SCBase data, SCOperationType opType) { data.NullCheck("data"); SCOperationLog log = SCOperationLog.CreateLogFromEnvironment(); log.ResourceID = data.ID; log.SchemaType = data.SchemaType; log.OperationType = opType; log.Category = data.Schema.Category; log.Subject = string.Format("{0}: {1}", EnumItemDescriptionAttribute.GetDescription(opType), data.Name); log.SearchContent = data.ToFullTextString(); return(log); }
public static SCOperationLog ToOperationLog(this SCBase data, SCOperationType opType) { data.NullCheck("data"); SCOperationLog log = SCOperationLog.CreateLogFromEnvironment(); log.ResourceID = data.ID; log.SchemaType = data.SchemaType; log.OperationType = opType; log.Category = data.Schema.Category; log.Subject = string.Format("{0}: {1}", EnumItemDescriptionAttribute.GetDescription(opType), data.Name); log.SearchContent = data.ToFullTextString(); return log; }
/// <summary> /// /// </summary> /// <param name="opType"></param> /// <param name="permissionName"></param> public static SCAclPermissionCheckException CreateException(SCOperationType opType, SchemaDefine schemaInfo, string permissionName) { string opDesp = EnumItemDescriptionAttribute.GetDescription(opType); SCAclPermissionItem permissionInfo = schemaInfo.PermissionSet[permissionName]; string permissionDesp = string.Empty; if (permissionInfo != null) { permissionDesp = permissionInfo.Description; if (permissionDesp.IsNullOrEmpty()) permissionDesp = permissionInfo.Name; } return new SCAclPermissionCheckException(string.Format("不能执行\"{0}\"操作,您没有\"{0}\"权限", opDesp, permissionDesp)); }
private void CheckUpdateAclPermissions(SCOperationType opType, string containerID) { if (this.NeedCheckPermissionAndCurrentUserIsNotSupervisor) { SchemaObjectBase containerObj = SchemaObjectAdapter.Instance.Load(containerID); if (containerObj != null) { if (containerObj is ISCApplicationMember) { CheckApplicationMemberPermissions(opType, "UpdateRoles", (ISCApplicationMember)containerObj); } else { CheckOrganizationChildrenPermissions(opType, "EditPermissionsOfChildren", containerObj); } } } }
private void ExecuteWithActions(SCOperationType operationType, Action action) { SCDataOperationLockContext.Current.DoAddLockAction(this._AddLock, EnumItemDescriptionAttribute.GetDescription(operationType), () => { if (this._NeedExecuteActions && action != null) { SCObjectOperationActionCollection actions = SCObjectOperationActionSettings.GetConfig().GetActions(); actions.BeforeExecute(operationType); action(); actions.AfterExecute(operationType); } else { action(); } }); }
/// <summary> /// /// </summary> /// <param name="opType"></param> /// <param name="permissionName"></param> public static SCAclPermissionCheckException CreateException(SCOperationType opType, SchemaDefine schemaInfo, string permissionName) { string opDesp = EnumItemDescriptionAttribute.GetDescription(opType); SCAclPermissionItem permissionInfo = schemaInfo.PermissionSet[permissionName]; string permissionDesp = string.Empty; if (permissionInfo != null) { permissionDesp = permissionInfo.Description; if (permissionDesp.IsNullOrEmpty()) { permissionDesp = permissionInfo.Name; } } return(new SCAclPermissionCheckException(string.Format("不能执行\"{0}\"操作,您没有\"{0}\"权限", opDesp, permissionDesp))); }
private void ExecuteWithActions(SCOperationType operationType, Action action) { SCDataOperationLockContext.Current.DoAddLockAction(this._AddLock, EnumItemDescriptionAttribute.GetDescription(operationType), () => { if (this._NeedExecuteActions && action != null) { SCObjectOperationActionCollection actions = SCObjectOperationActionSettings.GetConfig().GetActions(); actions.BeforeExecute(operationType); action(); actions.AfterExecute(operationType); } else action(); }); }
private void CheckPermissions(SCOperationType opType, SchemaDefine schemaInfo, string permissionName, params string[] containerIDs) { if (NeedCheckPermissionAndCurrentUserIsNotSupervisor && DeluxePrincipal.Current.HasPermissions(permissionName, containerIDs) == false) throw SCAclPermissionCheckException.CreateException(opType, schemaInfo, permissionName); }
private void CheckOrganizationChildrenPermissions(SCOperationType opType, string permissionName, SchemaObjectBase child) { SchemaObjectBase parent = child.CurrentParents.FirstOrDefault(); if (parent != null) CheckPermissions(opType, parent.Schema, permissionName, parent.ID); else CheckSupervisorPermissions(opType); }
/// <summary> /// 执行之后 /// </summary> /// <param name="operationType"></param> public void AfterExecute(SCOperationType operationType) { this.ForEach(action => action.AfterExecute(operationType)); }
protected SCExecutorBase(SCOperationType opType) { this.OperationType = opType; }
/// <summary> /// 执行之前 /// </summary> /// <param name="obj">一个<see cref="SchemaObjectBase"/>实例</param> public void BeforeExecute(SCOperationType operationType) { this.ForEach(action => action.BeforeExecute(operationType)); }
private void CheckUpdateAclPermissions(SCOperationType opType, string containerID) { if (this.NeedCheckPermissionAndCurrentUserIsNotSupervisor) { SchemaObjectBase containerObj = SchemaObjectAdapter.Instance.Load(containerID); if (containerObj != null) { if (containerObj is ISCApplicationMember) CheckApplicationMemberPermissions(opType, "UpdateRoles", (ISCApplicationMember)containerObj); else CheckOrganizationChildrenPermissions(opType, "EditPermissionsOfChildren", containerObj); } } }
public SCStatusCheckException(SchemaObjectBase relativeObject, SCOperationType opType) : base(string.Format("对象\"{0}\"的状态不是正常状态,不能执行{1}操作", relativeObject.ToSimpleObject().Name, EnumItemDescriptionAttribute.GetDescription(opType))) { this._RelativeObject = relativeObject; this._OperationType = opType; }
public SCMoveObjectToOrganizationExecutor(SCOperationType opType, SCOrganization parent, SCBase data) : base(opType, parent, data) { }
public void BeforeExecute(SCOperationType operationType) { }
private void CheckApplicationMemberPermissions(SCOperationType opType, string permissionName, ISCApplicationMember member) { if (this.NeedCheckPermissionAndCurrentUserIsNotSupervisor) { SCApplication application = member.CurrentApplication; if (application != null) CheckPermissions(opType, application.Schema, permissionName, application.ID); } }
public SCMemberRelativeExecutor(SCOperationType opType, SchemaObjectBase container, SCBase member) : base(opType, container, member) { }