feat(auth): 实现禁用用户拦截机制防止禁用用户访问
- 新增工具函数 isUserDisabled 判断用户是否被禁用 - 新增 blockDisabledUser 函数拦截禁用用户,清除登录态弹窗提示并跳转登录页 - UserContext 启动时异步校验用户状态,禁用则拦截并退出 - UserContext 的 refreshUser、syncFromStorage、loginUser 接口均增加禁用检查 - 登录相关 API 登录前校验用户状态,禁用时拒绝登录 - 登录页面保存登录态前校验,禁用用户弹窗提示阻断登录流程 - 用户状态定义:status 0 为正常,1 为禁用 - 新增用户管理页支持查询和管理用户状态 - 文档中补充用户状态与禁用机制说明及拦截层级介绍
This commit is contained in:
@@ -7,6 +7,7 @@ import type {
|
||||
SmsCaptchaResult
|
||||
} from './model';
|
||||
import {saveStorageByLoginUser, SERVER_API_URL} from "@/utils/server";
|
||||
import { isUserDisabled } from '@/utils/auth';
|
||||
|
||||
/**
|
||||
* 账号密码登录
|
||||
@@ -18,6 +19,9 @@ export async function login(data: LoginParam) {
|
||||
);
|
||||
if (res.code === 0) {
|
||||
if (res.data?.user && res.data?.access_token) {
|
||||
if (isUserDisabled(res.data.user)) {
|
||||
return Promise.reject(new Error('您的账号已被禁用,请联系管理员'));
|
||||
}
|
||||
saveStorageByLoginUser(res.data.access_token, res.data.user)
|
||||
}
|
||||
return res.message;
|
||||
@@ -46,6 +50,9 @@ export async function loginBySms(data: LoginParam) {
|
||||
);
|
||||
if (res.code === 0) {
|
||||
if(res.data?.user){
|
||||
if (isUserDisabled(res.data.user)) {
|
||||
return Promise.reject(new Error('您的账号已被禁用,请联系管理员'));
|
||||
}
|
||||
saveStorageByLoginUser(`${res.data?.access_token}`, res.data?.user)
|
||||
}
|
||||
return res.message;
|
||||
|
||||
Reference in New Issue
Block a user