public bool EditAdminUnit(AdminUnit adminUnit)
        {
            _unitOfWork.AdminUnitRepository.Edit(adminUnit);

            _unitOfWork.Save();
            return true;
        }
        public bool DeleteAdminUnit(AdminUnit adminUnit)
        {
            if (adminUnit == null) return false;
            _unitOfWork.AdminUnitRepository.Delete(adminUnit);

            _unitOfWork.Save();
            return true;
        }
Exemple #3
0
 public ActionResult Edit(int id, AdminUnit unit)
 {
     if (ModelState.IsValid)
     {
         _adminUnitService.EditAdminUnit(unit);
         return(Json(new { success = true }));
     }
     return(PartialView("Edit", unit));
 }
Exemple #4
0
        public void FindAdminUnitByIdTest()
        {
            string AdminUnitName = "Tigray";
            // Try finding a product by id
            AdminUnit actual = this.MockAdminUnitsRepository.FindById(2);

            Assert.IsNotNull(actual);                           // Test if null
            Assert.IsInstanceOfType(actual, typeof(AdminUnit)); // Test type
            Assert.AreEqual(AdminUnitName, actual.Name);        // Verify it is the right product
        }
		public AURoleMemberExecutor(AUOperationType opType, AUSchemaRole role, AdminUnit unit, SCUser[] users)
			: base(opType)
		{
			role.NullCheck("role");
			users.NullCheck("users");
			unit.NullCheck("unit");
			this.schemaRole = role;
			this.users = users;
			this.unit = unit;
		}
Exemple #6
0
        public void CreateAdminUnitTest1()
        {
            int       adminUnitID = 0;    // TODO: Initialize to an appropriate value
            AdminUnit expected    = null; // TODO: Initialize to an appropriate value
            AdminUnit actual;

            actual = AdminUnit.CreateAdminUnit(adminUnitID);
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }
 public static AdminUnitViewModel BindAdminUnitViewModel(AdminUnit adminUnit)
 {
     return(new AdminUnitViewModel()
     {
         AdminUnitID = adminUnit.AdminUnitID,
         AdminUnitName = adminUnit.Name,
         AdminUnitTypeID = adminUnit.AdminUnitTypeID ?? 0,
         ParentID = adminUnit.ParentID ?? 0
     });
 }
Exemple #8
0
 public bool DeleteAdminUnit(AdminUnit adminUnit)
 {
     if (adminUnit == null)
     {
         return(false);
     }
     _unitOfWork.AdminUnitRepository.Delete(adminUnit);
     _unitOfWork.Save();
     return(true);
 }
 public static AdminUnit BindAdminUnit(AdminUnitViewModel adminUnitViewModel, AdminUnit adminUnit = null)
 {
     return(adminUnit ?? new AdminUnit()
     {
         AdminUnitID = adminUnitViewModel.AdminUnitID,
         Name = adminUnitViewModel.AdminUnitName,
         AdminUnitTypeID = adminUnitViewModel.AdminUnitTypeID,
         ParentID = adminUnitViewModel.ParentID
     });
 }
 public AURoleMemberExecutor(AUOperationType opType, AUSchemaRole role, AdminUnit unit, SCUser[] users)
     : base(opType)
 {
     role.NullCheck("role");
     users.NullCheck("users");
     unit.NullCheck("unit");
     this.schemaRole = role;
     this.users      = users;
     this.unit       = unit;
 }
Exemple #11
0
        public void NameTest()
        {
            AdminUnit target   = new AdminUnit(); // TODO: Initialize to an appropriate value
            string    expected = string.Empty;    // TODO: Initialize to an appropriate value
            string    actual;

            target.Name = expected;
            actual      = target.Name;
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }
Exemple #12
0
        public void AdminUnit1Test()
        {
            AdminUnit target = new AdminUnit();           // TODO: Initialize to an appropriate value
            EntityCollection <AdminUnit> expected = null; // TODO: Initialize to an appropriate value
            EntityCollection <AdminUnit> actual;

            target.AdminUnit1 = expected;
            actual            = target.AdminUnit1;
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }
Exemple #13
0
        public void AdminUnitIDTest()
        {
            AdminUnit target   = new AdminUnit(); // TODO: Initialize to an appropriate value
            int       expected = 0;               // TODO: Initialize to an appropriate value
            int       actual;

            target.AdminUnitID = expected;
            actual             = target.AdminUnitID;
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }
Exemple #14
0
        public void AdminUnitTypeReferenceTest()
        {
            AdminUnit target = new AdminUnit();              // TODO: Initialize to an appropriate value
            EntityReference <AdminUnitType> expected = null; // TODO: Initialize to an appropriate value
            EntityReference <AdminUnitType> actual;

            target.AdminUnitTypeReference = expected;
            actual = target.AdminUnitTypeReference;
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }
Exemple #15
0
        public void ReplaceUsersInRole(SCUser[] users, AdminUnit unit, AUSchemaRole role)
        {
            CheckUnitPermission(AUOperationType.RemoveUserFromRole, "EditRoleMembers", unit);

            AURoleMemberExecutor executor = new AURoleMemberExecutor(AUOperationType.RemoveUserFromRole, role, unit, users)
            {
                NeedStatusCheck          = this.NeedValidationAndStatusCheck,
                NeedContainerStatusCheck = this.NeedValidationAndStatusCheck
            };

            ExecuteWithActions(AUOperationType.RemoveUserFromRole, () => SCActionContext.Current.DoActions(() => executor.Execute()));
        }
        public void CanDoDeletePostBack()
        {
            //ACT
            var adminUnit = new AdminUnit {
                AdminUnitID = 1, Name = "Region", ParentID = null, AdminUnitTypeID = 2
            };
            dynamic result = _adminUnitController.Delete(1, adminUnit) as JsonResult;

            //ASSERT
            Assert.IsNotNull(result);
            Assert.AreEqual("AdminUnit/Index", result.redirect);
        }
Exemple #17
0
 public ActionResult Delete(int id, AdminUnit unit)
 {
     try
     {
         _adminUnitService.DeleteAdminUnit(unit);
         return(RedirectToAction("Index"));
     }
     catch
     {
         return(View("Delete"));
     }
 }
Exemple #18
0
        public void AddAdminUnit(ClientAdminUnit unit, ClientAdminUnit parent)
        {
            EnsureID(unit);

            if (parent != null)
            {
                CheckIDProvided(parent);
            }

            AdminUnit auParent = parent != null ? (AdminUnit)parent.ToSchemaObject(true) : null;

            this.Facade.AddAdminUnit((AdminUnit)unit.ToSchemaObject(false), auParent);
        }
        public void CanDoEditPostback()
        {
            //ACT
            var adminUnit = new AdminUnit {
                AdminUnitID = 1, Name = "Region", ParentID = null, AdminUnitTypeID = 2
            };
            var jsonResult = _adminUnitController.Edit(1, adminUnit) as JsonResult;

            //ASSERT
            Assert.IsNotNull(jsonResult);
            dynamic data = jsonResult.Data;

            Assert.AreEqual(true, data.success);
        }
Exemple #20
0
        public void UpdateAdminUnit(AdminUnit unit)
        {
            CheckUnitPermission(AUOperationType.AddAdminUnit, "EditProperty", unit);

            AUObjectExecutor executor = new AUObjectExecutor(AUOperationType.UpdateAdminUnit, unit)
            {
                NeedValidation  = this.NeedValidationAndStatusCheck,
                NeedStatusCheck = this.NeedValidationAndStatusCheck
            };

            ExecuteWithActions(AUOperationType.UpdateAdminUnit, () => SCActionContext.Current.DoActions(() =>
            {
                executor.Execute();
            }));
        }
Exemple #21
0
        private static SchemaObjectBase GetUnitParent(AdminUnit unit, bool allowNull)
        {
            SchemaObjectBase parent = null;
            var parentRelaion       = unit.GetCurrentVeryParentRelation();

            if (parentRelaion != null)
            {
                AUCommon.DoDbAction(() => { parent = parentRelaion.Parent; });
            }
            else if (allowNull == false)
            {
                throw new AUObjectException("此管理单元没有任何父级,这可能是数据存在错误或此管理单元未添加到系统。");
            }

            return(parent);
        }
        private SCAclContainer PrepareAclContainer(AdminUnit parent, AdminUnit currentData)
        {
            SCAclContainer result = null;

            if (currentData is ISCAclContainer)
            {
                result = new SCAclContainer(currentData);
                if (parent != null)
                {
                    AUCommon.DoDbAction(() =>
                        result.Members.CopyFrom(AUAclAdapter.Instance.LoadByContainerID(parent.ID, DateTime.MinValue)));
                }
            }

            return result;
        }
        private SCAclContainer PrepareAclContainer(AdminUnit parent, AdminUnit currentData)
        {
            SCAclContainer result = null;

            if (currentData is ISCAclContainer)
            {
                result = new SCAclContainer(currentData);
                if (parent != null)
                {
                    AUCommon.DoDbAction(() =>
                                        result.Members.CopyFrom(AUAclAdapter.Instance.LoadByContainerID(parent.ID, DateTime.MinValue)));
                }
            }

            return(result);
        }
        public AdminUnitExecutor(AUOperationType opType, AdminUnit parent, AdminUnit child)
            : base(opType, child)
        {
            child.NullCheck("child");
            child.ClearRelativeData();
            if (parent != null)
                parent.ClearRelativeData();

            if (!(opType != AUOperationType.AddAdminUnit | opType != AUOperationType.RemoveAdminUnit))
                throw new ApplicationException("此Executor不支持" + opType + "操作");

            this.inputParent = parent;

            if (this.OperationType == AUOperationType.AddAdminUnit)
                this.aclContainer = PrepareAclContainer(parent, child);
        }
Exemple #25
0
        public void UpdateScopeCondition(AUAdminScope scope, SCCondition condition)
        {
            AdminUnit unit = scope.GetOwnerUnit();

            CheckUnitPermission(AUOperationType.AddAdminUnit, "EditAdminScope", unit);

            if (condition.OwnerID != scope.ID)
            {
                throw new AUObjectValidationException("条件的OwnerID必须是Scope的ID");
            }

            AUUpdateConditionsExecutor executor = new AUUpdateConditionsExecutor(AUOperationType.UpdateScopeCondition, scope, condition)
            {
            };

            ExecuteWithActions(AUOperationType.UpdateScopeCondition, () => SCActionContext.Current.DoActions(() => executor.Execute()));
        }
Exemple #26
0
        public void AddObjectToScope(AUAdminScopeItem item, AUAdminScope scope)
        {
            AdminUnit unit = scope.GetOwnerUnit();

            CheckUnitPermission(AUOperationType.AddAdminUnit, "EditAdminScope", unit);

            AUMemberRelativeExecutor executor = new AUMemberRelativeExecutor(AUOperationType.AddAUScopeItem, scope, item)
            {
                SaveTargetData           = false,
                NeedValidation           = this.NeedValidationAndStatusCheck,
                NeedContainerStatusCheck = this.NeedValidationAndStatusCheck,
            };

            ExecuteWithActions(AUOperationType.AddAUScopeItem, () => SCActionContext.Current.DoActions(() =>
            {
                executor.Execute();
            }));
        }
Exemple #27
0
        private void CheckUpdateAclPermissions(AUOperationType opType, string containerID)
        {
            if (this.NeedCheckPermissionAndCurrentUserIsNotSupervisor)
            {
                AdminUnit unit = null;

                AUCommon.DoDbAction(() =>
                {
                    unit = (AdminUnit)PC.Adapters.SchemaObjectAdapter.Instance.Load(containerID);
                });

                if (unit == null || unit.Status != SchemaObjectStatus.Normal)
                {
                    throw new AUObjectException("指定的管理单元不存在");
                }

                CheckUnitPermission(opType, "EditSubUnitAcl", unit);
            }
        }
Exemple #28
0
        private static bool CheckAddSubPermission(AUSchema schema, AdminUnit targetUnit)
        {
            bool result = false;

            result = AU.AUPermissionHelper.IsSupervisor(DeluxePrincipal.Current);
            if (result == false)
            {
                if (string.IsNullOrEmpty(schema.MasterRole) == false)
                {
                    result = DeluxePrincipal.Current.IsInRole(schema.MasterRole);

                    if (result == false && targetUnit != null)
                    {
                        var permissions = AU.Adapters.AUAclAdapter.Instance.LoadCurrentContainerAndPermissions(DeluxeIdentity.CurrentUser.ID, new string[] { targetUnit.ID });

                        result = Util.ContainsPermission(permissions, targetUnit.ID, "AddSubUnit");
                    }
                }
            }

            return(result);
        }
Exemple #29
0
        public void AddAdminUnit(AdminUnit unit, AdminUnit parent)
        {
            if (parent == null)
            {
                CheckAUSchemaPermission(unit.GetUnitSchema());
            }
            else
            {
                CheckUnitPermission(AUOperationType.AddAdminUnit, "AddSubUnit", parent);
            }

            AdminUnitExecutor executor = new Executors.AdminUnitExecutor(AUOperationType.AddAdminUnit, parent, unit)
            {
                NeedValidation        = this.NeedValidationAndStatusCheck,
                NeedParentStatusCheck = this.NeedValidationAndStatusCheck,
            };

            ExecuteWithActions(AUOperationType.AddAdminUnit, () => SCActionContext.Current.DoActions(() =>
            {
                executor.Execute();
            }));
        }
        public AdminUnitExecutor(AUOperationType opType, AdminUnit parent, AdminUnit child)
            : base(opType, child)
        {
            child.NullCheck("child");
            child.ClearRelativeData();
            if (parent != null)
            {
                parent.ClearRelativeData();
            }

            if (!(opType != AUOperationType.AddAdminUnit | opType != AUOperationType.RemoveAdminUnit))
            {
                throw new ApplicationException("此Executor不支持" + opType + "操作");
            }

            this.inputParent = parent;

            if (this.OperationType == AUOperationType.AddAdminUnit)
            {
                this.aclContainer = PrepareAclContainer(parent, child);
            }
        }
Exemple #31
0
        public void AddAdminUnitWithMembers(ClientAdminUnit unit, ClientAdminUnit parent, ClientAURole[] roles, ClientAUAdminScope[] scopes)
        {
            roles.NullCheck("roles");
            scopes.NullCheck("scopes");
            CheckIDProvided(unit);

            AURole[] auRoles = new AURole[roles.Length];
            for (int i = roles.Length - 1; i >= 0; i--)
            {
                auRoles[i] = (AURole)roles[i].ToSchemaObject();
            }

            AUAdminScope[] auScopes = new AUAdminScope[scopes.Length];
            for (int i = scopes.Length - 1; i >= 0; i--)
            {
                auScopes[i] = (AUAdminScope)scopes[i].ToSchemaObject();
            }

            EnsureID(unit);
            AdminUnit auParent = parent != null ? (AdminUnit)parent.ToSchemaObject(true) : null;

            this.Facade.AddAdminUnitWithMembers((AdminUnit)unit.ToSchemaObject(false), auParent, auRoles, auScopes);
        }
Exemple #32
0
        public void AddUserToRole(SCUser user, AdminUnit unit, AUSchemaRole role)
        {
            CheckUnitPermission(AUOperationType.RemoveUserFromRole, "EditRoleMembers", unit);

            SchemaObjectBase r = Adapters.AUSnapshotAdapter.Instance.LoadAURole(role.ID, unit.ID, true, DateTime.MinValue);

            if (r == null)
            {
                throw new AUObjectValidationException("没有找到此管理单元的角色,请尝试重新添加此角色");
            }

            AUMemberRelativeExecutor executor = new Executors.AUMemberRelativeExecutor(AUOperationType.AddUserToRole, r, user)
            {
                SaveTargetData           = false,
                NeedValidation           = false,
                NeedContainerStatusCheck = this.NeedValidationAndStatusCheck,
            };

            ExecuteWithActions(AUOperationType.AddUserToRole, () => SCActionContext.Current.DoActions(() =>
            {
                executor.Execute();
            }));
        }
        private void DeterminPermission(AUSchema schema, AdminUnit unit)
        {
            bool editEnabled = TimePointContext.Current.UseCurrentTime;

            if (editEnabled)
            {
                if (Util.SuperVisiorMode == false)
                {
                    if (string.IsNullOrEmpty(schema.MasterRole) == false)
                    {
                        editEnabled = DeluxePrincipal.Current.IsInRole(schema.MasterRole);

                        if (editEnabled == false)
                        {
                            var permissions = AU.Adapters.AUAclAdapter.Instance.LoadCurrentContainerAndPermissions(DeluxeIdentity.CurrentUser.ID, new string[] { unit.ID });

                            editEnabled = Util.ContainsPermission(permissions, unit.ID, "EditAdminScope");;
                        }
                    }
                }
            }

            this.EditEnabled = editEnabled;
        }
Exemple #34
0
        public IEnumerable <TreeViewModel> GetTreeElts(int adminunitParentId, int hubId)
        {
            //TODO:Check if the  t.ShippingInstructionID.HasValue && t.ProjectCodeID.HasValue ...&& to || to accoumidate SI/PC allocation
            var UnclosedDispatchAllocations = _unitOfWork.DispatchAllocationRepository.FindBy(t =>
                                                                                              (t.ShippingInstructionID.HasValue ||
                                                                                               t.ProjectCodeID.HasValue) &&
                                                                                              hubId == t.HubID &&
                                                                                              t.IsClosed == false);



            AdminUnit adminUnit        = _unitOfWork.AdminUnitRepository.FindById(adminunitParentId);
            var       parentAdminUnits = _unitOfWork.AdminUnitRepository.FindBy(t => t.ParentID == adminunitParentId);

            if (adminUnit.AdminUnitType.AdminUnitTypeID == 1)//by region
            {
                return((from Unc in UnclosedDispatchAllocations
                        where Unc.FDP.AdminUnit.AdminUnit2.AdminUnit2.ParentID == adminunitParentId
                        group Unc by new { Unc.FDP.AdminUnit.AdminUnit2.AdminUnit2 } into b
                        select new TreeViewModel
                {
                    Name = b.Key.AdminUnit2.Name,
                    Value = b.Key.AdminUnit2.AdminUnitID,
                    Enabled = true,
                    Count = b.Count()
                }).Union(from ad in parentAdminUnits
                         select new TreeViewModel
                {
                    Name = ad.Name,
                    Value = ad.AdminUnitID,
                    Enabled = true,
                    Count = 0
                }
                         ));
            }
            else if (adminUnit.AdminUnitType.AdminUnitTypeID == 2)//by zone
            {
                return
                    ((from Unc in UnclosedDispatchAllocations
                      where Unc.FDP.AdminUnit.AdminUnit2.ParentID == adminunitParentId
                      group Unc by new { Unc.FDP.AdminUnit.AdminUnit2 } into b
                      select new TreeViewModel
                {
                    Name = b.Key.AdminUnit2.Name,
                    Value = b.Key.AdminUnit2.AdminUnitID,
                    Enabled = true,
                    Count = b.Count()
                }).Union(from ad in parentAdminUnits
                         select new TreeViewModel
                {
                    Name = ad.Name,
                    Value = ad.AdminUnitID,
                    Enabled = true,
                    Count = 0
                }
                         ));
            }
            else //if (adminUnit.AdminUnitType.AdminUnitTypeID == 4)//by woreda
            {
                return
                    ((from Unc in UnclosedDispatchAllocations
                      where Unc.FDP.AdminUnit.ParentID == adminunitParentId
                      group Unc by new { Unc.FDP.AdminUnit } into b
                      select new TreeViewModel
                {
                    Name = b.Key.AdminUnit.Name,
                    Value = b.Key.AdminUnit.AdminUnitID,
                    Enabled = true,
                    Count = b.Count()
                }).Union(from ad in parentAdminUnits
                         select new TreeViewModel
                {
                    Name = ad.Name,
                    Value = ad.AdminUnitID,
                    Enabled = true,
                    Count = 0
                }
                         ));
            }
        }
		/// <summary>
		/// 初始化
		/// </summary>
		/// <param name="opType">操作类型</param>
		/// <param name="obj">要移动的管理单元</param>
		/// <param name="target">目标管理单元 或为 null 表示移动到Schema </param>
		public MoveAUExecutor(AUOperationType opType, AdminUnit obj, AdminUnit target)
			: base(opType)
		{
			(this._Object = obj).NullCheck("obj");
			this._Target = target;
		}
Exemple #36
0
 public bool EditAdminUnit(AdminUnit adminUnit)
 {
     _unitOfWork.AdminUnitRepository.Edit(adminUnit);
     _unitOfWork.Save();
     return(true);
 }
Exemple #37
0
		public void ReplaceUsersInRole(SCUser[] users, AdminUnit unit, AUSchemaRole role)
		{
			CheckUnitPermission(AUOperationType.RemoveUserFromRole, "EditRoleMembers", unit);

			AURoleMemberExecutor executor = new AURoleMemberExecutor(AUOperationType.RemoveUserFromRole, role, unit, users)
			{
				NeedStatusCheck = this.NeedValidationAndStatusCheck,
				NeedContainerStatusCheck = this.NeedValidationAndStatusCheck
			};

			ExecuteWithActions(AUOperationType.RemoveUserFromRole, () => SCActionContext.Current.DoActions(() => executor.Execute()));
		}
Exemple #38
0
		private static SchemaObjectBase GetUnitParent(AdminUnit unit, bool allowNull)
		{
			SchemaObjectBase parent = null;
			var parentRelaion = unit.GetCurrentVeryParentRelation();
			if (parentRelaion != null)
				AUCommon.DoDbAction(() => { parent = parentRelaion.Parent; });
			else if (allowNull == false)
				throw new AUObjectException("此管理单元没有任何父级,这可能是数据存在错误或此管理单元未添加到系统。");

			return parent;
		}
Exemple #39
0
		public void DeleteAdminUnit(AdminUnit unit)
		{
			var parent = GetUnitParent(unit, false);

			if (parent is AdminUnit)
			{
				CheckUnitPermission(AUOperationType.RemoveAdminUnit, "DeleteSubUnit", (AdminUnit)parent);
			}
			else if (parent is AUSchema)
			{
				CheckAUSchemaPermission((AUSchema)parent);
			}

			AdminUnitExecutor executor = new AdminUnitExecutor(AUOperationType.RemoveAdminUnit, null, unit)
			{
				NeedValidation = this.NeedValidationAndStatusCheck,
				NeedParentStatusCheck = this.NeedValidationAndStatusCheck,
			};

			unit.Status = SchemaObjectStatus.Deleted;

			ExecuteWithActions(AUOperationType.AddAdminUnit, () => SCActionContext.Current.DoActions(() =>
			{
				executor.Execute();
			}));
		}
Exemple #40
0
		/// <summary>
		/// 移动管理单元
		/// </summary>
		/// <param name="unit">将被移动的管理单元</param>
		/// <param name="newParent">一个表示目标单元的<see cref="AdminUnit"/> ,或者为null,表示作为顶级管理单元</param>
		public void MoveAdminUnit(AdminUnit unit, AdminUnit newParent)
		{
			unit.NullCheck("unit");

			var parent = GetUnitParent(unit, false);

			if (parent is AUSchema)
				CheckAUSchemaPermission((AUSchema)parent);
			else
				CheckUnitPermission(AUOperationType.AddAdminUnit, "DeleteSubUnit", (AdminUnit)parent);

			if (newParent != null)
				CheckUnitPermission(AUOperationType.AddAdminUnit, "AddSubUnit", newParent);
			else
				CheckAUSchemaPermission(unit.GetUnitSchema());

			MoveAUExecutor executor = new MoveAUExecutor(AUOperationType.MoveAdminUnit, unit, newParent)
			{
				NeedStatusCheck = this.NeedValidationAndStatusCheck
			};

			ExecuteWithActions(AUOperationType.MoveAdminUnit, () => SCActionContext.Current.DoActions(() =>
			{
				executor.Execute();
			}));
		}
Exemple #41
0
		private void CheckUnitPermission(AUOperationType opType, string permissionName, AdminUnit unit)
		{
			unit.NullCheck("unit");
			if (unit.Status != SchemaObjectStatus.Normal)
				throw new AUStatusCheckException(unit, opType);

			if (this._NeedCheckPermissions)
			{
				if (unit == null || unit.Status != SchemaObjectStatus.Normal)
					throw new ArgumentException(string.Format("不存在参数 unit 指定的管理单元", "unit"));

				if (DeluxePrincipal.Current.HasPermissions(permissionName, new string[] { unit.ID }) == false)
				{
					//如果没有权限,检查是否超级管理员或者拥有架构权限
					if (AUPermissionHelper.IsSupervisor(DeluxePrincipal.Current) == false)
					{
						var schema = unit.GetUnitSchema();
						if (string.IsNullOrEmpty(schema.MasterRole) || DeluxePrincipal.Current.IsInRole(schema.MasterRole) == false)
							throw CreateAclException(opType, unit.Schema, permissionName);
					}
				}
			}
		}
Exemple #42
0
		public void AddAdminUnitWithMembers(AdminUnit unit, AdminUnit parent, AURole[] roles, AUAdminScope[] scopes)
		{
			if (parent == null)
				CheckAUSchemaPermission(unit.GetUnitSchema());
			else
				CheckUnitPermission(AUOperationType.AddAdminUnit, "AddSubUnit", parent);

			AdminUnitExecutor executor = new Executors.AdminUnitExecutor(AUOperationType.AddAdminUnit, parent, unit)
			{
				NeedValidation = this.NeedValidationAndStatusCheck,
				NeedParentStatusCheck = this.NeedValidationAndStatusCheck,
				InputRoles = roles,
				InputAdminScopes = scopes

			};

			ExecuteWithActions(AUOperationType.AddAdminUnit, () => SCActionContext.Current.DoActions(() =>
			{
				executor.Execute();
			}));
		}
		private SCRelationObject PrepareTargetRelation(SchemaObjectBase targetOrg, AdminUnit obj)
		{
			SCRelationObject relation = SchemaRelationObjectAdapter.Instance.Load(targetOrg.ID, obj.ID);

			if (relation == null)
			{
				relation = new SCRelationObject(targetOrg, obj) { Default = true };
			}
			else
			{
				if (relation.Status == SchemaObjectStatus.Normal)
					this._RelationExisted = true;
				else
				{
					relation.CalculateFullPathAndGlobalSort(targetOrg, obj);
					relation.Status = SchemaObjectStatus.Normal;
				}
			}

			return relation;
		}
Exemple #44
0
		public void UpdateAdminUnit(AdminUnit unit)
		{
			CheckUnitPermission(AUOperationType.AddAdminUnit, "EditProperty", unit);

			AUObjectExecutor executor = new AUObjectExecutor(AUOperationType.UpdateAdminUnit, unit)
			{
				NeedValidation = this.NeedValidationAndStatusCheck,
				NeedStatusCheck = this.NeedValidationAndStatusCheck
			};

			ExecuteWithActions(AUOperationType.UpdateAdminUnit, () => SCActionContext.Current.DoActions(() =>
			{
				executor.Execute();
			}));
		}
Exemple #45
0
		public void RemoveUserFromRole(SCUser user, AdminUnit unit, AUSchemaRole role)
		{
			CheckUnitPermission(AUOperationType.RemoveUserFromRole, "EditRoleMembers", unit);

			SchemaObjectBase r = Adapters.AUSnapshotAdapter.Instance.LoadAURole(role.ID, unit.ID, true, DateTime.MinValue);
			if (r == null)
				throw new AUObjectValidationException("没有找到此管理单元的角色,请尝试重新添加此角色");

			AUMemberRelativeExecutor executor = new AUMemberRelativeExecutor(AUOperationType.RemoveUserFromRole, r, user)
			{
				OverrideExistedRelation = true,
				SaveTargetData = false,
				NeedStatusCheck = false,
				NeedContainerStatusCheck = this.NeedValidationAndStatusCheck,
			};

			executor.Relation.Status = SchemaObjectStatus.Deleted;

			SCMemberRelation result = null;

			ExecuteWithActions(AUOperationType.RemoveUserFromRole, () => SCActionContext.Current.DoActions(() => result = (SCMemberRelation)executor.Execute()));
		}