public static SCPermissionCollection GetPermissions(this DataTable table, SCPermissionCollection existedPermissions) { Dictionary <string, SCPermission> existedDict = existedPermissions.ToDictionaryByCodeName(); SCPermissionCollection permissions = new SCPermissionCollection(); if (table != null && table.Columns.Contains("权限点/数据权限")) { foreach (DataRow row in table.Rows) { string permissionName = row["权限点/数据权限"].ToString(); if (permissionName.IsNotEmpty()) { SCPermission permission = null; if (existedDict.TryGetValue(permissionName, out permission) == false) { permission = new SCPermission(); InitProperties(permission, permissionName); } permissions.Add(permission); } } } return(permissions); }
public void JoinRoleAndPermissionTest() { SCApplication application = SCObjectGenerator.PrepareApplicationObject(); SCObjectOperations.Instance.AddApplication(application); SCRole role = SCObjectGenerator.PrepareRoleObject(); SCObjectOperations.Instance.AddRole(role, application); SCPermission permission = SCObjectGenerator.PreparePermissionObject(); SCObjectOperations.Instance.AddPermission(permission, application); SCRelationObject relation = SCObjectOperations.Instance.JoinRoleAndPermission(role, permission); role.ClearRelativeData(); Assert.IsTrue(role.CurrentPermissions.ContainsKey(permission.ID)); Assert.IsTrue(permission.CurrentRoles.ContainsKey(role.ID)); SCObjectOperations.Instance.DisjoinRoleAndPermission(role, permission); role.ClearRelativeData(); permission.ClearRelativeData(); Assert.IsFalse(role.CurrentPermissions.ContainsKey(permission.ID)); Assert.IsFalse(permission.CurrentRoles.ContainsKey(role.ID)); }
public void SCQueryPermissionsByUserIDsSnapshotTest() { SCApplication application = SCObjectGenerator.PrepareApplicationObject(); SCObjectOperations.Instance.AddApplication(application); SCRole role = SCObjectGenerator.PrepareRoleObject(); SCObjectOperations.Instance.AddRole(role, application); SCPermission permission = SCObjectGenerator.PreparePermissionObject(); SCObjectOperations.Instance.AddPermission(permission, application); SCRelationObject relation = SCObjectOperations.Instance.JoinRoleAndPermission(role, permission); SCUser user1 = SCObjectGenerator.PrepareUserObject("RU1", "User1", "RoleUser1"); SCObjectOperations.Instance.AddUser(user1, SCOrganization.GetRoot()); SCObjectOperations.Instance.AddMemberToRole(user1, role); SchemaObjectCollection result = SCSnapshotAdapter.Instance.QueryPermissionsByUserIDs(new string[] { user1.ID }, false, DateTime.MinValue); Assert.IsTrue(result.Count > 0); Console.WriteLine(result[0].Properties.GetValue("Name", string.Empty)); Assert.AreEqual(permission.ID, result[0].ID); }
public void DeletePermissionTest() { SCApplication application = SCObjectGenerator.PrepareApplicationObject(); SCObjectOperations.Instance.AddApplication(application); SCRole role = SCObjectGenerator.PrepareRoleObject(); SCObjectOperations.Instance.AddRole(role, application); SCPermission permission = SCObjectGenerator.PreparePermissionObject(); SCObjectOperations.Instance.AddPermission(permission, application); SCRelationObject relation = SCObjectOperations.Instance.JoinRoleAndPermission(role, permission); SCObjectOperations.Instance.DeletePermission(permission); application.ClearRelativeData(); role.ClearRelativeData(); Console.WriteLine("Role permission count {0}, applicaiton permission count {1}", role.CurrentPermissions.Count, application.CurrentPermissions.Count); Assert.AreEqual(0, role.CurrentPermissions.Count); Assert.AreEqual(0, application.CurrentPermissions.Count); }
public static SCPermission PreparePermissionObject() { SCPermission permission = new SCPermission(); permission.ID = UuidHelper.NewUuidString(); permission.Name = "Great Permission"; permission.CodeName = permission.ID; return(permission); }
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 void AddPermissionTest() { Trace.CorrelationManager.ActivityId = UuidHelper.NewUuid(); SCApplication application = SCObjectGenerator.PrepareApplicationObject(); SCObjectOperations.Instance.AddApplication(application); SCPermission permission = SCObjectGenerator.PreparePermissionObject(); SCObjectOperations.Instance.AddPermission(permission, application); application.CurrentPermissions.ContainsKey(permission.ID); }
public SchemaObjectBase AddPermission(SCPermission permission, SCApplication application) { SCMemberRelativeExecutor executor = new SCMemberRelativeExecutor(SCOperationType.AddPermission, application, permission) { NeedValidation = this.NeedValidationAndStatusCheck, SaveTargetData = true, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) { CheckPermissions(SCOperationType.AddPermission, application.Schema, "AddPermissions", application.ID); } SCMemberRelation result = null; ExecuteWithActions(SCOperationType.AddPermission, () => SCActionContext.Current.DoActions(() => result = (SCMemberRelation)executor.Execute())); return(result); }
public SchemaObjectBase UpdatePermission(SCPermission permission) { SCObjectExecutor executor = new SCObjectExecutor(SCOperationType.UpdatePermission, permission) { NeedValidation = this.NeedValidationAndStatusCheck, NeedStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) { CheckApplicationMemberPermissions(SCOperationType.UpdatePermission, "UpdatePermissions", permission); } SchemaObjectBase result = null; ExecuteWithActions(SCOperationType.UpdatePermission, () => SCActionContext.Current.DoActions(() => result = (SchemaObjectBase)executor.Execute())); return(result); }
public SCRelationObject JoinRoleAndPermission(SCRole role, SCPermission permission) { SCJoinRoleAndPermissionExecutor executor = new SCJoinRoleAndPermissionExecutor(SCOperationType.JoinRoleAndPermission, role, permission) { NeedStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) { CheckApplicationMemberPermissions(SCOperationType.JoinRoleAndPermission, "EditRelationOfRolesAndPermissions", permission); } SCRelationObject result = null; ExecuteWithActions(SCOperationType.JoinRoleAndPermission, () => SCActionContext.Current.DoActions(() => result = (SCRelationObject)executor.Execute())); return(result); }
private static void PrepareTestApplicationData() { SCApplication app1 = PrepareSCObject <SCApplication>("应用1", "应用1"); SCObjectOperations.Instance.AddApplication(app1); SCRole role11 = PrepareSCObject <SCRole>("应用1角色1", "应用1角色1"); SCObjectOperations.Instance.AddRole(role11, app1); SCRole role12 = PrepareSCObject <SCRole>("应用1角色2", "应用1角色2"); SCObjectOperations.Instance.AddRole(role12, app1); SCPermission permission11 = PrepareSCObject <SCPermission>("应用1权限1", "应用1权限1"); SCObjectOperations.Instance.AddPermission(permission11, app1); SCPermission permission12 = PrepareSCObject <SCPermission>("应用1权限2", "应用1权限2"); SCObjectOperations.Instance.AddPermission(permission12, app1); SCApplication app2 = PrepareSCObject <SCApplication>("应用2", "应用2"); SCObjectOperations.Instance.AddApplication(app2); SCRole role21 = PrepareSCObject <SCRole>("应用2角色1", "应用2角色1"); SCObjectOperations.Instance.AddRole(role21, app2); SCRole role22 = PrepareSCObject <SCRole>("应用2角色2", "应用2角色2"); SCObjectOperations.Instance.AddRole(role22, app2); SCPermission permission21 = PrepareSCObject <SCPermission>("应用2权限1", "应用2权限1"); SCObjectOperations.Instance.AddPermission(permission21, app2); SCPermission permission22 = PrepareSCObject <SCPermission>("应用2权限2", "应用2权限2"); SCObjectOperations.Instance.AddPermission(permission22, app2); }
public SchemaObjectBase DeletePermission(SCPermission permission) { SCObjectExecutor executor = new SCObjectExecutor(SCOperationType.DeletePermission, permission) { NeedValidation = false, NeedDeleteMemberRelations = true, NeedDeleteRelations = true, NeedStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) { CheckApplicationMemberPermissions(SCOperationType.DeletePermission, "DeletePermissions", permission); } permission.Status = SchemaObjectStatus.Deleted; SchemaObjectBase result = null; ExecuteWithActions(SCOperationType.DeletePermission, () => SCActionContext.Current.DoActions(() => result = (SchemaObjectBase)executor.Execute())); return(result); }
public static SCRolesAndPermissions GetRolesAndPermissions(this DataTable table, SCPermissionCollection existedPermissions) { table.NullCheck("table"); SCRoleCollection roles = new SCRoleCollection(); SCPermissionCollection permissions = table.GetPermissions(existedPermissions); if (table.Columns.Contains("权限点/数据权限") && table.Columns.Count > StartColumn) { for (int i = StartColumn; i < table.Columns.Count; i++) { string roleName = table.Columns[i].ColumnName; SCRole role = roles.Append(InitProperties(new SCRole(), roleName)); foreach (DataRow row in table.Rows) { string permissionName = row["权限点/数据权限"].ToString(); if (permissionName.IsNotEmpty()) { SCPermission permission = permissions.Find(p => string.Compare(permissionName, p.CodeName, true) == 0); if (permission != null) { string cellValue = row[roleName].ToString(); if (cellValue.IsNullOrEmpty() || cellValue.Trim().IsNullOrEmpty() || cellValue.Trim().ToUpper() == "N") { continue; } role.CurrentPermissions.Append(permission); } } } } } return(new SCRolesAndPermissions(roles, permissions)); }
public SCRelationObject DisjoinRoleAndPermission(SCRole role, SCPermission permission) { SCJoinRoleAndPermissionExecutor executor = new SCJoinRoleAndPermissionExecutor(SCOperationType.DisjoinRoleAndPermission, role, permission) { OverrideExistedRelation = true, NeedStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) { CheckApplicationMemberPermissions(SCOperationType.DisjoinRoleAndPermission, "EditRelationOfRolesAndPermissions", permission); } executor.Relation.Status = SchemaObjectStatus.Deleted; SCRelationObject result = null; ExecuteWithActions(SCOperationType.DisjoinRoleAndPermission, () => SCActionContext.Current.DoActions(() => result = (SCRelationObject)executor.Execute())); return(result); }
private SCRelationObject PrepareRelationObject(SCRole role, SCPermission permission) { SCRelationObject relation = SchemaRelationObjectAdapter.Instance.Load(role.ID, permission.ID); if (relation == null) { relation = new SCRelationObject(role, permission); } else { if (relation.Status == SchemaObjectStatus.Normal) { this._RelationExisted = true; } else { relation.Status = SchemaObjectStatus.Normal; } } return(relation); }
public SCRelationObject DisjoinRoleAndPermission(SCRole role, SCPermission permission) { SCJoinRoleAndPermissionExecutor executor = new SCJoinRoleAndPermissionExecutor(SCOperationType.DisjoinRoleAndPermission, role, permission) { OverrideExistedRelation = true, NeedStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) CheckApplicationMemberPermissions(SCOperationType.DisjoinRoleAndPermission, "EditRelationOfRolesAndPermissions", permission); executor.Relation.Status = SchemaObjectStatus.Deleted; SCRelationObject result = null; ExecuteWithActions(SCOperationType.DisjoinRoleAndPermission, () => SCActionContext.Current.DoActions(() => result = (SCRelationObject)executor.Execute())); return result; }
public SCRelationObject JoinRoleAndPermission(SCRole role, SCPermission permission) { SCJoinRoleAndPermissionExecutor executor = new SCJoinRoleAndPermissionExecutor(SCOperationType.JoinRoleAndPermission, role, permission) { NeedStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) CheckApplicationMemberPermissions(SCOperationType.JoinRoleAndPermission, "EditRelationOfRolesAndPermissions", permission); SCRelationObject result = null; ExecuteWithActions(SCOperationType.JoinRoleAndPermission, () => SCActionContext.Current.DoActions(() => result = (SCRelationObject)executor.Execute())); return result; }
public SchemaObjectBase DeletePermission(SCPermission permission) { SCObjectExecutor executor = new SCObjectExecutor(SCOperationType.DeletePermission, permission) { NeedValidation = false, NeedDeleteMemberRelations = true, NeedDeleteRelations = true, NeedStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) CheckApplicationMemberPermissions(SCOperationType.DeletePermission, "DeletePermissions", permission); permission.Status = SchemaObjectStatus.Deleted; SchemaObjectBase result = null; ExecuteWithActions(SCOperationType.DeletePermission, () => SCActionContext.Current.DoActions(() => result = (SchemaObjectBase)executor.Execute())); return result; }
public SchemaObjectBase UpdatePermission(SCPermission permission) { SCObjectExecutor executor = new SCObjectExecutor(SCOperationType.UpdatePermission, permission) { NeedValidation = this.NeedValidationAndStatusCheck, NeedStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) CheckApplicationMemberPermissions(SCOperationType.UpdatePermission, "UpdatePermissions", permission); SchemaObjectBase result = null; ExecuteWithActions(SCOperationType.UpdatePermission, () => SCActionContext.Current.DoActions(() => result = (SchemaObjectBase)executor.Execute())); return result; }
public SchemaObjectBase AddPermission(SCPermission permission, SCApplication application) { SCMemberRelativeExecutor executor = new SCMemberRelativeExecutor(SCOperationType.AddPermission, application, permission) { NeedValidation = this.NeedValidationAndStatusCheck, SaveTargetData = true, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) CheckPermissions(SCOperationType.AddPermission, application.Schema, "AddPermissions", application.ID); SCMemberRelation result = null; ExecuteWithActions(SCOperationType.AddPermission, () => SCActionContext.Current.DoActions(() => result = (SCMemberRelation)executor.Execute())); return result; }
private SCRelationObject PrepareRelationObject(SCRole role, SCPermission permission) { SCRelationObject relation = SchemaRelationObjectAdapter.Instance.Load(role.ID, permission.ID); if (relation == null) relation = new SCRelationObject(role, permission); else { if (relation.Status == SchemaObjectStatus.Normal) this._RelationExisted = true; else relation.Status = SchemaObjectStatus.Normal; } return relation; }
public List <AdditionOperation> GetAditionOperations(string id) { List <AdditionOperation> list = new List <AdditionOperation>(); if (string.IsNullOrEmpty(id) == false) { var obj = SchemaObjectAdapter.Instance.Load(id); if (obj.Status == SchemaObjectStatus.Normal) { if (obj is SCUser) { var relation = obj.CurrentParentRelations.Find(m => m.Status == SchemaObjectStatus.Normal && m.Default && Util.IsOrganization(m.ParentSchemaType)); if (relation != null) { list.Add(new AdditionOperation("转到缺省组织", false, GetClientUrl("~/lists/OUExplorer.aspx?ou=" + relation.ParentID), "_blank")); } string ownerId = ((SCUser)obj).OwnerID; if (string.IsNullOrEmpty(ownerId) == false) { list.Add(new AdditionOperation("转到所有者", false, GetClientUrl("~/lists/OUExplorer.aspx?ou=" + ownerId), "_blank")); } } else if (obj is SCGroup) { SCGroup grp = (SCGroup)obj; var parents = grp.CurrentParentRelations; var relation = parents.Find(m => m.Status == SchemaObjectStatus.Normal && Util.IsOrganization(m.ParentSchemaType)); if (relation != null) { list.Add(new AdditionOperation("转到组织", false, GetClientUrl("~/lists/OUExplorer.aspx?ou=" + relation.ParentID), "_blank")); } } else if (obj is SCRole) { SCRole role = (SCRole)obj; list.Add(new AdditionOperation("打开应用", false, GetClientUrl("~/lists/AllApps.aspx?id=" + role.CurrentApplication.ID), "_blank")); list.Add(new AdditionOperation("定位", true, GetClientUrl("~/lists/AppRoles.aspx?app=" + role.CurrentApplication.ID) + "&id=" + role.ID, "_blank")); //if (this.GetEditRoleMembersEnabled(role.CurrentApplication.ID)) //{ // list.Add(new AdditionOperation("角色矩阵", true, GetClientUrl("/MCSWebApp/WorkflowDesigner/MatrixModalDialog/RolePropertyExtension.aspx?AppID=" + role.CurrentApplication.ID + "&roleID=" + role.ID))); //} list.Add(new AdditionOperation("角色功能定义", true, GetClientUrl("~/dialogs/RoleDefinition.aspx?role=" + role.ID))); } else if (obj is SCPermission) { SCPermission permission = (SCPermission)obj; list.Add(new AdditionOperation("打开应用", false, GetClientUrl("~/lists/AllApps.aspx?id=" + permission.CurrentApplication.ID), "_blank")); list.Add(new AdditionOperation("定位", true, GetClientUrl("~/lists/AppFunctions.aspx?app=" + permission.CurrentApplication.ID) + "&id=" + permission.ID, "_blank")); } else if (obj is SCOrganization) { var relation = obj.CurrentParentRelations.Find(m => m.Status == SchemaObjectStatus.Normal && Util.IsOrganization(m.ParentSchemaType)); if (relation != null) { list.Add(new AdditionOperation("转到上级组织", false, GetClientUrl("~/lists/OUExplorer.aspx?ou=" + relation.ParentID), "_blank")); } } else if (obj is SCApplication) { list.Add(new AdditionOperation("定位", false, GetClientUrl("~/lists/AllApps.aspx?id=" + obj.ID), "_blank")); } } } return(list); }