示例#1
0
        public static void ResetDroitResource(this Public Public, string ResourceName, DroitResource[] droits, Action <bool> action)
        {
            BizTransaction transaction = BizTransaction.BeginTransaction();

            //step 1 删除原有的授权配置
            RegisterFactor_DeleteOldDroits(transaction, ResourceName);
            //step 2 添加用户新的授权配置
            RegisterFactor_AddNewDroits(transaction, ResourceName, droits);
            bool ok = transaction.TryCommit();

            if (ok)
            {
                Actor.Public.UpdateLastPermissionChangeTime();
            }
            action(ok);
        }
示例#2
0
        static void RegisterFactor_DeleteDroits(BizTransaction transaction, string RoleID)
        {
            IEntityRequestProcess deleteRoleDroitsProcessor = Actor.Public.BuildEntityProcessor("SecurityApp");
            TransactionFactor <IEntityRequestProcess, Action <IEntityRequestProcess, EntityPostRequest> > deleteRoleDroitsFactor = new TransactionFactor <IEntityRequestProcess, Action <IEntityRequestProcess, EntityPostRequest> >(deleteRoleDroitsProcessor);

            deleteRoleDroitsFactor.ActionBody = (IEntityRequestProcess contract, EntityPostRequest request) =>
            {
                contract.UpdateEntity(request);
            };

            deleteRoleDroitsFactor.Action = (Action <IEntityRequestProcess, EntityPostRequest> action) =>
            {
                EntityPostRequest deleteRoleDroitRequest = BuilddeleteRoleDroitsRequest(RoleID);
                action(deleteRoleDroitsProcessor, deleteRoleDroitRequest);
            };

            transaction.RegisterFactor(deleteRoleDroitsFactor);
        }
示例#3
0
        static void RegisterFactor_UserState(BizTransaction transaction, BzureUser user)
        {
            IEntityRequestProcess userStateProcessor = Actor.Public.BuildEntityProcessor("SecurityApp");
            TransactionFactor <IEntityRequestProcess, Action <IEntityRequestProcess, EntityPostRequest> > userStateFactor = new TransactionFactor <IEntityRequestProcess, Action <IEntityRequestProcess, EntityPostRequest> >(userStateProcessor);

            userStateFactor.ActionBody = (IEntityRequestProcess contract, EntityPostRequest request) =>
            {
                contract.UpdateEntity(request);
            };

            userStateFactor.Action = (Action <IEntityRequestProcess, EntityPostRequest> action) =>
            {
                EntityPostRequest OrderRequest = BuilderUserStateRequest(user);
                action(userStateProcessor, OrderRequest);
            };

            transaction.RegisterFactor(userStateFactor);
        }
示例#4
0
        /// <summary>
        /// 删除角色
        /// </summary>
        /// <param name="Public"></param>
        /// <param name="RoleID"></param>
        /// <returns></returns>
        public static void DeleteRole(this Public Public, string RoleID, Action <bool> action)
        {
            BizTransaction transaction = BizTransaction.BeginTransaction();

            //step 1 删除角色相应的授权
            RegisterFactor_DeleteDroits(transaction, RoleID);
            //step 2 删除所有用户相应的角色关联
            RegisterFactor_DeleteUserRole(transaction, RoleID);
            //尚未完成
            //step 3 删除角色
            RegisterFactor_DeleteRoles(transaction, RoleID);
            bool ok = transaction.TryCommit();

            if (ok)
            {
                Actor.Public.UpdateLastPermissionChangeTime();
            }
            action(ok);
        }
示例#5
0
        public static void AuthorizeUser(this Public Public, BzureUser user, string[] RoleIDs, Action <bool> action)
        {
            string[]       oldRoles    = Actor.Public.AsRoleManager().GetTeamRoleIDsByUserID(user.UserID.ToString());
            BizTransaction transaction = BizTransaction.BeginTransaction();

            //step 1 修改用户状态
            RegisterFactor_UserState(transaction, user);
            //step 2 删除用户原有的全部角色
            RegisterFactor_DeleteRoles(transaction, user, oldRoles);
            //step 3 添加用户新的角色
            RegisterFactor_AddRoles(transaction, user, RoleIDs);
            bool ok = transaction.TryCommit();

            if (ok)
            {
                Actor.Public.UpdateLastPermissionChangeTime();
            }
            action(ok);
        }
示例#6
0
        static void RegisterFactor_AddNewDroits(BizTransaction transaction, string ResourceName, DroitResource[] droits)
        {
            IEntityRequestProcess addDroitsProcessor = Actor.Public.BuildEntityProcessor("SecurityApp");
            TransactionFactor <IEntityRequestProcess, Action <IEntityRequestProcess, EntityPostRequest> > addDroitsFactor = new TransactionFactor <IEntityRequestProcess, Action <IEntityRequestProcess, EntityPostRequest> >(addDroitsProcessor);

            addDroitsFactor.ActionBody = (IEntityRequestProcess contract, EntityPostRequest request) =>
            {
                contract.UpdateEntity(request);
            };

            addDroitsFactor.Action = (Action <IEntityRequestProcess, EntityPostRequest> action) =>
            {
                foreach (DroitResource droit in droits)
                {
                    EntityPostRequest addDroitRequest = BuildaddDroitRequest(ResourceName, droit);
                    action(addDroitsProcessor, addDroitRequest);
                }
            };

            transaction.RegisterFactor(addDroitsFactor);
        }
示例#7
0
        static void RegisterFactor_DeleteRoles(BizTransaction transaction, BzureUser user, string[] oldRoles)
        {
            IEntityRequestProcess deleteRolesProcessor = Actor.Public.BuildEntityProcessor("SecurityApp");
            TransactionFactor <IEntityRequestProcess, Action <IEntityRequestProcess, EntityPostRequest> > deleteRolesFactor = new TransactionFactor <IEntityRequestProcess, Action <IEntityRequestProcess, EntityPostRequest> >(deleteRolesProcessor);

            deleteRolesFactor.ActionBody = (IEntityRequestProcess contract, EntityPostRequest request) =>
            {
                contract.UpdateEntity(request);
            };

            deleteRolesFactor.Action = (Action <IEntityRequestProcess, EntityPostRequest> action) =>
            {
                foreach (string roleid in oldRoles)
                {
                    EntityPostRequest deleteRoleRequest = BuilddeleteRoleRequest(user.UserID.ToString(), roleid);
                    action(deleteRolesProcessor, deleteRoleRequest);
                }
            };

            transaction.RegisterFactor(deleteRolesFactor);
        }