labull-framework 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/magic-block.js +3 -3
- package/dist/types/auth-real.d.ts +3 -1
- package/package.json +67 -67
package/README.md
CHANGED
|
@@ -148,7 +148,7 @@ workspace/<可读名>-<块 uuid>/
|
|
|
148
148
|
|
|
149
149
|
## 两份东西要知道
|
|
150
150
|
|
|
151
|
-
- 🔴 **前端不做授权**:`isAdmin` / `groups` / `permissions`
|
|
151
|
+
- 🔴 **前端不做授权**:`isAdmin` / `groups` / `permissions` 只是界面显隐(判据是 `permissions`;`groups` 只是权限包的名字),判据全在后端。
|
|
152
152
|
- 🔴 **单例只有一份**:`auth` 的状态是模块级单例,`ui` 与 `magic-block` 共用同一份
|
|
153
153
|
(产物里共享代码在 `dist/chunk-*.js`,不是各拷贝一份)—— 所以"用户菜单说登录了、
|
|
154
154
|
宿主说没登录"这种事不会发生。
|
package/dist/magic-block.js
CHANGED
|
@@ -1899,7 +1899,7 @@ function en(n, e = {}) {
|
|
|
1899
1899
|
if (s === 504 || s === 408 || s === 502 || s === 503) {
|
|
1900
1900
|
const b = s === 502 || s === 503 ? `后端没答上来(${s}):这一趟请求送出去之后,前面的代理说"上游不可用" —— 多半是后面那个进程正在忙着算、或者刚重启。` : `网关等不及了(${s}):这一趟是「一次请求」把整个目录递上去,后端要「逐块」做保存前那套判据(试加载 + 引用深检,实测 0.8~3.7 秒/块)—— 算得越久越危险。`;
|
|
1901
1901
|
u.push(`${b}这一趟递上去的是 ${c}。`), (s === 504 || s === 408) && (u.push(""), u.push('换句话说:这不是你的块写错了 —— 是"一条请求算得太久、中间没有回话"被前置网关掐断了。'), u.push("这次可以这么办(从省事到彻底):"), u.push("1. 再点一次「读回改动」——但先把这次不动的块文件夹移出目录,只留要改的那几个:判据完全一样,只是分母小了。"), u.push("2. 调大网关的超时:nginx 的 `proxy_read_timeout 300s;` / `proxy_send_timeout 300s;`;云负载均衡上一般也有一个「后端响应超时」,一起调。"), u.push('3. 前端升到 1.0.3+:读回改成「流式」(算完一块就回一句话),只要字节一直在往回走,网关就不会因为"没回话"把它掐掉。'));
|
|
1902
|
-
} else s === 413 ? (u.push(`这一趟递上去的正文太大了(413):后端一次收不下这么多内容(这一趟是 ${ss(e)})。`), u.push("把这次不动的块文件夹移出目录,只留要改的那几个再读回。")) : s === 401 || s === 403 ? (u.push(`后端不认这次请求(${s}
|
|
1902
|
+
} else s === 413 ? (u.push(`这一趟递上去的正文太大了(413):后端一次收不下这么多内容(这一趟是 ${ss(e)})。`), u.push("把这次不动的块文件夹移出目录,只留要改的那几个再读回。")) : s === 401 || s === 403 ? (u.push(`后端不认这次请求(${s}):读回要管理员(需要 labull_framework.edit_magic_block 权限)。`), u.push(s === 401 ? "登录态可能已经过期:刷新页面重新登录,再点「读回改动」。" : "这个账号没有那个权限:换一个有 edit_magic_block 的账号,或者让管理员把它加进「平台管理员」权限包。")) : s === 0 ? (u.push(`没连上后端(${o}):请求还没到服务端就断了 —— 后端进程没起来 / 地址不对 / 网络或代理断了。`), u.push(`原文:${r}`)) : s >= 500 ? (u.push(`后端在这次读回里抛异常了(${s}):这是平台的问题,不是你块的问题。`), u.push(`原文:${r}`), u.push('把这一句连同"读回"贴给维护的人;后端日志里那一趟的 traceback 才是真原因。')) : s >= 400 ? u.push(`这一次读回被拒了(${s}):${r}`) : u.push(`读回没成功:${r}`);
|
|
1903
1903
|
return s === 0 && u.length === 0 && u.push(r), u.join(`
|
|
1904
1904
|
`);
|
|
1905
1905
|
}
|
|
@@ -2092,9 +2092,9 @@ function pa(n) {
|
|
|
2092
2092
|
" work_id: string",
|
|
2093
2093
|
" /** 显示名(拿不到就是空串 —— 不编造)。 */",
|
|
2094
2094
|
" name: string",
|
|
2095
|
-
" /**
|
|
2095
|
+
" /** 是不是管理员(有 `labull_framework.edit_magic_block` 这个权限;不是 Django 的 is_staff、也不是组名)。 */",
|
|
2096
2096
|
" is_admin: boolean",
|
|
2097
|
-
" /**
|
|
2097
|
+
" /** 所在 Django 组的名字(**组只是权限包**:别拿组名当判据)。 */",
|
|
2098
2098
|
" groups: string[]",
|
|
2099
2099
|
" /** 直接权限 + 组权限的 codename(`app_label.codename`)。 */",
|
|
2100
2100
|
" permissions: string[]",
|
|
@@ -16,9 +16,11 @@ export interface AuthUser {
|
|
|
16
16
|
name: string;
|
|
17
17
|
/** 工号(Authing 的 `username` 同步过来的;没有就是 null)。 */
|
|
18
18
|
workId: string | null;
|
|
19
|
-
/** 🔴 "是不是管理员" =
|
|
19
|
+
/** 🔴 "是不是管理员" = **有没有 `labull_framework.edit_magic_block`**(直接给的 / 经权限包给的都算)。前端只拿它做**显隐**,授权全在后端。 */
|
|
20
20
|
isAdmin: boolean;
|
|
21
|
+
/** 所在 Django 组的名字(**组只是权限包**:只给人看/排查,别拿组名做判断)。 */
|
|
21
22
|
groups: string[];
|
|
23
|
+
/** 有效权限(`app_label.codename`,直接给的 + 经组给的)—— **这才是判据**。 */
|
|
22
24
|
permissions: string[];
|
|
23
25
|
}
|
|
24
26
|
export declare function authHeaders(method?: string, json?: boolean): Record<string, string>;
|
package/package.json
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "labull-framework",
|
|
3
|
-
"version": "
|
|
4
|
-
"private": false,
|
|
5
|
-
"type": "module",
|
|
6
|
-
"description": "Labull 前端 SDK:主题 CSS + 登录态 / 外壳组件 / magic block(四块合一,一个包)",
|
|
7
|
-
"license": "MIT",
|
|
8
|
-
"sideEffects": [
|
|
9
|
-
"*.css",
|
|
10
|
-
"./dist/*.css"
|
|
11
|
-
],
|
|
12
|
-
"files": [
|
|
13
|
-
"dist",
|
|
14
|
-
"README.md",
|
|
15
|
-
"LICENSE"
|
|
16
|
-
],
|
|
17
|
-
"main": "./dist/index.js",
|
|
18
|
-
"module": "./dist/index.js",
|
|
19
|
-
"types": "./dist/index.d.ts",
|
|
20
|
-
"exports": {
|
|
21
|
-
".": {
|
|
22
|
-
"types": "./dist/index.d.ts",
|
|
23
|
-
"import": "./dist/index.js"
|
|
24
|
-
},
|
|
25
|
-
"./theme": {
|
|
26
|
-
"types": "./dist/theme.d.ts",
|
|
27
|
-
"import": "./dist/theme.js"
|
|
28
|
-
},
|
|
29
|
-
"./ui": {
|
|
30
|
-
"types": "./dist/ui.d.ts",
|
|
31
|
-
"import": "./dist/ui.js"
|
|
32
|
-
},
|
|
33
|
-
"./auth": {
|
|
34
|
-
"types": "./dist/auth.d.ts",
|
|
35
|
-
"import": "./dist/auth.js"
|
|
36
|
-
},
|
|
37
|
-
"./magic-block": {
|
|
38
|
-
"types": "./dist/magic-block.d.ts",
|
|
39
|
-
"import": "./dist/magic-block.js"
|
|
40
|
-
},
|
|
41
|
-
"./style.css": "./dist/style.css",
|
|
42
|
-
"./package.json": "./package.json"
|
|
43
|
-
},
|
|
44
|
-
"peerDependencies": {
|
|
45
|
-
"vue": "^3.4"
|
|
46
|
-
},
|
|
47
|
-
"peerDependenciesMeta": {
|
|
48
|
-
"vue-router": {
|
|
49
|
-
"optional": true
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
"scripts": {
|
|
53
|
-
"clean": "node -e \"import('node:fs').then(fs=>{for(const d of ['dist','dist-types'])fs.rmSync(d,{recursive:true,force:true})})\"",
|
|
54
|
-
"build:js": "vite build",
|
|
55
|
-
"build:types": "vue-tsc -p tsconfig.build.json && node flatten-types.mjs",
|
|
56
|
-
"build": "npm run build:js && npm run build:types && node self-check.mjs",
|
|
57
|
-
"pack:check": "npm pack --dry-run"
|
|
58
|
-
},
|
|
59
|
-
"devDependencies": {
|
|
60
|
-
"@vitejs/plugin-vue": "^5.2.4",
|
|
61
|
-
"typescript": "^5.9.3",
|
|
62
|
-
"vite": "^5.4.21",
|
|
63
|
-
"vue": "^3.5.43",
|
|
64
|
-
"vue-router": "^4.6.4",
|
|
65
|
-
"vue-tsc": "^2.2.12"
|
|
66
|
-
}
|
|
67
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "labull-framework",
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "Labull 前端 SDK:主题 CSS + 登录态 / 外壳组件 / magic block(四块合一,一个包)",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"sideEffects": [
|
|
9
|
+
"*.css",
|
|
10
|
+
"./dist/*.css"
|
|
11
|
+
],
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"README.md",
|
|
15
|
+
"LICENSE"
|
|
16
|
+
],
|
|
17
|
+
"main": "./dist/index.js",
|
|
18
|
+
"module": "./dist/index.js",
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"exports": {
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./dist/index.d.ts",
|
|
23
|
+
"import": "./dist/index.js"
|
|
24
|
+
},
|
|
25
|
+
"./theme": {
|
|
26
|
+
"types": "./dist/theme.d.ts",
|
|
27
|
+
"import": "./dist/theme.js"
|
|
28
|
+
},
|
|
29
|
+
"./ui": {
|
|
30
|
+
"types": "./dist/ui.d.ts",
|
|
31
|
+
"import": "./dist/ui.js"
|
|
32
|
+
},
|
|
33
|
+
"./auth": {
|
|
34
|
+
"types": "./dist/auth.d.ts",
|
|
35
|
+
"import": "./dist/auth.js"
|
|
36
|
+
},
|
|
37
|
+
"./magic-block": {
|
|
38
|
+
"types": "./dist/magic-block.d.ts",
|
|
39
|
+
"import": "./dist/magic-block.js"
|
|
40
|
+
},
|
|
41
|
+
"./style.css": "./dist/style.css",
|
|
42
|
+
"./package.json": "./package.json"
|
|
43
|
+
},
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"vue": "^3.4"
|
|
46
|
+
},
|
|
47
|
+
"peerDependenciesMeta": {
|
|
48
|
+
"vue-router": {
|
|
49
|
+
"optional": true
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"scripts": {
|
|
53
|
+
"clean": "node -e \"import('node:fs').then(fs=>{for(const d of ['dist','dist-types'])fs.rmSync(d,{recursive:true,force:true})})\"",
|
|
54
|
+
"build:js": "vite build",
|
|
55
|
+
"build:types": "vue-tsc -p tsconfig.build.json && node flatten-types.mjs",
|
|
56
|
+
"build": "npm run build:js && npm run build:types && node self-check.mjs",
|
|
57
|
+
"pack:check": "npm pack --dry-run"
|
|
58
|
+
},
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"@vitejs/plugin-vue": "^5.2.4",
|
|
61
|
+
"typescript": "^5.9.3",
|
|
62
|
+
"vite": "^5.4.21",
|
|
63
|
+
"vue": "^3.5.43",
|
|
64
|
+
"vue-router": "^4.6.4",
|
|
65
|
+
"vue-tsc": "^2.2.12"
|
|
66
|
+
}
|
|
67
|
+
}
|