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); }
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); }
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); }
/// <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); }
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); }
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); }
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); }