Skip to content

Commit

Permalink
Merge pull request #250 from sj-distributor/fixed-user-role-logic-opt…
Browse files Browse the repository at this point in the history
…imize

Fixed user role logic optimize
  • Loading branch information
wuxin666789 authored Mar 13, 2024
2 parents d2081b2 + f27ba6f commit 1d71e79
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 7 deletions.
8 changes: 6 additions & 2 deletions web/src/api/role-user-permissions/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
IDeleteRole,
IDeleteRoleUserRequest,
IFoundationTreeDto,
IGetPermissionsRequest,
IPageDto,
IPermissionsDto,
IRolePermission,
Expand Down Expand Up @@ -45,8 +46,11 @@ export const GetTreeList = async () => {
};

// 获取功能权限
export const GetPermissions = async () => {
return await Get<IPermissionsDto>("/api/Security/permissions");
export const GetPermissions = async (data: IGetPermissionsRequest) => {
const newQueryString = queryString.stringify(data);
return await Get<IPermissionsDto>(
`/api/Security/permissions?${newQueryString}`
);
};

// 查询角色
Expand Down
8 changes: 8 additions & 0 deletions web/src/dtos/role-user-permissions/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ export interface IRole {
id?: string;
createdDate?: string;
modifiedDate?: string;
isSystem?: boolean;
}

export interface IRolePermissionItem {
Expand Down Expand Up @@ -150,6 +151,7 @@ export interface IDeleteRole {
export enum UserRoleEnum {
Administrator = "Administrator",
DefaultUser = "User",
Admin = "Admin",
}

export const UserRoleType = {
Expand Down Expand Up @@ -211,3 +213,9 @@ export const informationPermissionsNames = [
FunctionalPermissionsEnum.CanSendMessage,
FunctionalPermissionsEnum.CanSendWorkWeChatAppNotification,
];

export interface IGetPermissionsRequest {
PageIndex?: number;
PageSize?: number;
RoleId?: string;
}
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@ export const useAction = () => {
setOptions(staffDepartmentHierarchy ?? []);
const options = getFlatOptionsList(staffDepartmentHierarchy ?? []);

const { count, permissions } = await GetPermissions();
const { count, permissions } = await GetPermissions({ RoleId: roleId });
const permissionsList: RolePermissionsDto[] = [];
permissions?.map((item) =>
permissionsList.push({ ...item, checked: false })
Expand Down
19 changes: 15 additions & 4 deletions web/src/pages/role-perimission/components/role-permissions/hook.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,19 @@ export const useAction = () => {
const isAdmin = useMemo(() => {
return Boolean(
currentUserRolePermissions?.rolePermissionData?.find(
(item) => item.role.name === "Administrator"
(item) => item.role.name === "Administrator" && item.role.isSystem
)
);
}, [currentUserRolePermissions]);

const getIsUserAdminRole = (name: FunctionalPermissionsEnum) => {
const adminRole = currentUserRolePermissions?.rolePermissionData?.find(
(item) => item.role.name === "Admin" && item.role.isSystem
);

return adminRole?.permissions.some((item) => item.name === name);
};

const handleAddRole = () => {
if (
userPermissions.some(
Expand Down Expand Up @@ -97,7 +105,8 @@ export const useAction = () => {
name,
FunctionalPermissionsEnum.CanGrantPermissionsIntoRole
) ||
isAdmin
isAdmin ||
getIsUserAdminRole(FunctionalPermissionsEnum.CanGrantPermissionsIntoRole)
) {
navigate(`/role/users/${id}`);
} else {
Expand All @@ -120,7 +129,8 @@ export const useAction = () => {
name,
FunctionalPermissionsEnum.CanUpdatePermissionsOfRole
) ||
isAdmin
isAdmin ||
getIsUserAdminRole(FunctionalPermissionsEnum.CanUpdatePermissionsOfRole)
) {
navigate(`/role/edit/${id}`);
} else {
Expand All @@ -140,7 +150,8 @@ export const useAction = () => {
const handleRemoveRole = (name: string, id: string) => {
if (
getUserIsHaveRole(name, FunctionalPermissionsEnum.CanDeleteRoles) ||
isAdmin
isAdmin ||
getIsUserAdminRole(FunctionalPermissionsEnum.CanDeleteRoles)
) {
confirmTipsRef.current?.open();
setRowId(id);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,27 @@ export const RolePermissions = () => {
編輯
</Button>
);
case UserRoleEnum.Admin:
return (
<>
<Button
variant="text"
onClick={() =>
handleRoleAssignmentDebounce(params.row.name, params.row.id)
}
>
分配
</Button>
<Button
variant="text"
onClick={() =>
handleEditRoleDebounce(params.row.name, params.row.id)
}
>
編輯
</Button>
</>
);

default:
return (
Expand Down

0 comments on commit 1d71e79

Please sign in to comment.