forked from gxwebsoft/mp-10550
feat(user): 优化用户权限管理与扫码功能
- 添加 isAdmin 状态检查逻辑支持多种数据类型 (true/1/'1') - 实现统一扫码按钮的管理员权限控制,仅管理员可查看 - 集成 saveStorageByLoginUser 工具函数统一处理登录用户信息存储 - 优化扫码取消操作的错误处理,区分用户主动取消与实际错误 - 同步本地存储中的用户信息以便其他钩子读取管理员标识
This commit is contained in:
@@ -271,7 +271,14 @@ export function useUnifiedQRScan() {
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
reject(new Error(err.errMsg || '扫码失败'));
|
||||
const msg = (err as any)?.errMsg || '';
|
||||
// `scanCode:fail cancel` is a user-driven cancel; don't treat it as an error toast.
|
||||
if (typeof msg === 'string' && msg.toLowerCase().includes('cancel')) {
|
||||
cancelRef.current = true;
|
||||
reject(new Error('取消扫码'));
|
||||
return;
|
||||
}
|
||||
reject(new Error(msg || '扫码失败'));
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -323,6 +330,11 @@ export function useUnifiedQRScan() {
|
||||
return result;
|
||||
|
||||
} catch (err: any) {
|
||||
// User cancelled scanning (e.g. `scanCode:fail cancel`).
|
||||
if (cancelRef.current) {
|
||||
reset();
|
||||
return null;
|
||||
}
|
||||
if (!cancelRef.current) {
|
||||
setState(UnifiedScanState.ERROR);
|
||||
const errorMessage = err.message || '处理失败';
|
||||
|
||||
@@ -280,11 +280,14 @@ export const useUser = () => {
|
||||
|
||||
// 检查用户是否是管理员
|
||||
const isAdmin = () => {
|
||||
return user?.isAdmin === true;
|
||||
// Some backends use `1/0` (or `1/2`) instead of boolean.
|
||||
const v: any = (user as any)?.isAdmin;
|
||||
return v === true || v === 1 || v === '1';
|
||||
};
|
||||
|
||||
const isSuperAdmin = () => {
|
||||
return user?.isSuperAdmin === true;
|
||||
const v: any = (user as any)?.isSuperAdmin;
|
||||
return v === true || v === 1 || v === '1';
|
||||
};
|
||||
|
||||
// 获取用户余额
|
||||
|
||||
Reference in New Issue
Block a user