From fdc74e8c9319eb13cf2df5674f3683a6d770535b Mon Sep 17 00:00:00 2001 From: chenmeiling12 <108569295+chenmeiling12@users.noreply.github.com> Date: Tue, 12 Nov 2024 15:43:13 +0800 Subject: [PATCH] enhance login permission --- web/src/dtos/mine.ts | 1 + web/src/pages/login/hook.ts | 40 +++++++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/web/src/dtos/mine.ts b/web/src/dtos/mine.ts index da8d8e6..0006cc7 100644 --- a/web/src/dtos/mine.ts +++ b/web/src/dtos/mine.ts @@ -42,4 +42,5 @@ export enum FrontRolePermissionEnum { CanViewCameraAiFeedbackListPage = "CanViewCameraAiFeedbackListPage", CanExportExcelCameraAiFeedback = "CanExportExcelCameraAiFeedback", CanViewDetailCameraAiFeedback = "CanViewDetailCameraAiFeedback", + CanEnterCameraAi = "CanEnterCameraAi", } diff --git a/web/src/pages/login/hook.ts b/web/src/pages/login/hook.ts index 9410a71..bd75e7d 100644 --- a/web/src/pages/login/hook.ts +++ b/web/src/pages/login/hook.ts @@ -4,6 +4,8 @@ import { useState } from "react"; import { IUserInfo } from "@/dtos"; import { useAuth } from "@/hooks/use-auth"; import { Login } from "@/services/home"; +import { GetMineRoleList } from "@/services/default"; +import { FrontRolePermissionEnum } from "@/dtos/mine"; export const useAction = () => { const { signIn, message } = useAuth(); @@ -22,6 +24,16 @@ export const useAction = () => { })); }; + const hanldeNoPermission = () => { + message.error("您没有访问权限"); + + localStorage.removeItem( + (window as any).appsettings?.tokenKey ?? "tokenKey" + ); + + localStorage.removeItem((window as any).appsettings?.userNameKey); + }; + const onLogin = () => { setLoginLoading(true); if ( @@ -31,14 +43,38 @@ export const useAction = () => { Login(userInfo) .then((res) => { if (res) { - message.success("登录成功"); localStorage.setItem((window as any).appsettings?.tokenKey, res); localStorage.setItem( (window as any).appsettings?.userNameKey, userInfo.userName ); - signIn(res, userInfo.userName); + GetMineRoleList() + .then((response) => { + if ( + response.rolePermissionData.some((item) => + item.permissions.some( + (permission) => + permission.name === + FrontRolePermissionEnum.CanEnterCameraAi + ) + ) + ) { + message.success("登录成功"); + + signIn( + localStorage.getItem( + (window as any).appsettings?.tokenKey ?? "tokenKey" + ) ?? "", + userInfo.userName + ); + } else { + hanldeNoPermission(); + } + }) + .catch(() => { + hanldeNoPermission(); + }); } }) .catch(() => {