@aalis/plugin-authority 0.1.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 ADDED
@@ -0,0 +1,21 @@
1
+ # @aalis/plugin-authority
2
+
3
+ 运行时插件
4
+
5
+ ## 角色
6
+
7
+ 运行时插件
8
+
9
+ ## 安装
10
+
11
+ ```bash
12
+ pnpm add @aalis/plugin-authority
13
+ ```
14
+
15
+ ## 文档
16
+
17
+ 详见 [docs/plugins/plugin-authority.md](../../docs/plugins/plugin-authority.md)。
18
+
19
+ ## 许可
20
+
21
+ 见仓库根目录 LICENSE。
package/dist/i18n.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import type { I18nResources } from '@aalis/core';
2
+ export declare const i18n: I18nResources;
3
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,eAAO,MAAM,IAAI,EAAE,aASlB,CAAC"}
package/dist/i18n.js ADDED
@@ -0,0 +1,11 @@
1
+ export const i18n = {
2
+ 'zh-CN': {
3
+ 'plugin.authority.displayName': '权限管理',
4
+ 'webui.authority.page': '权限管理',
5
+ },
6
+ 'en-US': {
7
+ 'plugin.authority.displayName': 'Authority',
8
+ 'webui.authority.page': 'Authority',
9
+ },
10
+ };
11
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAAkB;IACjC,OAAO,EAAE;QACP,8BAA8B,EAAE,MAAM;QACtC,sBAAsB,EAAE,MAAM;KAC/B;IACD,OAAO,EAAE;QACP,8BAA8B,EAAE,WAAW;QAC3C,sBAAsB,EAAE,WAAW;KACpC;CACF,CAAC"}
@@ -0,0 +1,99 @@
1
+ import type { ConfigManager, Context, Logger, PluginModule } from '@aalis/core';
2
+ import type { UserIdentity } from '@aalis/plugin-authority-api';
3
+ import { type StorageService } from '@aalis/plugin-storage-api';
4
+ import type { AuthorityService, AuthorityUserEntry, AuthorizeRequest, DangerousConfirmHandler, DangerousConfirmRequest, DangerousGrant, UserCapabilityOverrides } from './types.js';
5
+ export type { AuthorityService, DangerousConfirmHandler, DangerousConfirmRequest, DangerousConfirmResult, DangerousGrant, DangerousGrantRequest, } from './types.js';
6
+ export declare class AuthorityManager implements AuthorityService {
7
+ private users;
8
+ /** 反向绑定索引:被绑平台身份键 → 主账户键(从 users[].links 重建) */
9
+ private linkIndex;
10
+ /** 待消费绑定码(内存态) */
11
+ private bindCodes;
12
+ private config;
13
+ private logger;
14
+ private storage;
15
+ private fileUri;
16
+ private dirty;
17
+ private saveChain;
18
+ private confirmHandlers;
19
+ private dangerousGrants;
20
+ private grantSeq;
21
+ /**
22
+ * dangerous 策略的开启时间(运行时状态,不序列化到 config)。
23
+ * 进程重启后重置为 null,对限时策略而言等同于「重启即失效」。
24
+ */
25
+ private dangerousEnabledAt;
26
+ constructor(config: ConfigManager, logger: Logger, storage: StorageService);
27
+ getAuthority(platform: string, userId?: string): number;
28
+ setAuthority(platform: string, userId: string, level: number): void;
29
+ removeUser(platform: string, userId: string): void;
30
+ /** 从 users[].links 重建反向索引(表很小,全量重建即可) */
31
+ private rebuildLinkIndex;
32
+ createBindCode(platform: string, userId: string): {
33
+ code: string;
34
+ expiresAt: number;
35
+ };
36
+ consumeBindCode(code: string, identity: UserIdentity): UserIdentity;
37
+ unlinkIdentity(platform: string, userId: string): boolean;
38
+ setPassword(platform: string, userId: string, password: string): Promise<void>;
39
+ verifyPassword(platform: string, userId: string, password: string): Promise<boolean>;
40
+ hasPassword(platform: string, userId: string): boolean;
41
+ setUserCapabilities(platform: string, userId: string, overrides: UserCapabilityOverrides): void;
42
+ /**
43
+ * capability 中心统一闸。裁决优先级(per-capability):
44
+ * 全局 permissionPolicy > 用户 deny > 用户 grant > 角色链等级门槛。
45
+ *
46
+ * 等级门槛 = max(declaredAuthority, requiredAuthorityFor([cap]))——
47
+ * 即"操作声明的基础等级"与"capability 归属角色包"取较高者,只升不降。
48
+ */
49
+ authorize(identity: {
50
+ platform: string;
51
+ userId?: string;
52
+ }, request: AuthorizeRequest): string | null;
53
+ isDangerousAllowed(name: string, permissions?: string[]): boolean;
54
+ /** 刷新 dangerous 策略启动时间戳(运行时状态) */
55
+ markDangerousEnabled(): void;
56
+ /** 清除 dangerous 策略启动时间戳 */
57
+ clearDangerousEnabled(): void;
58
+ setConfirmHandler(platform: string, handler: DangerousConfirmHandler): void;
59
+ confirmDangerous(request: DangerousConfirmRequest): Promise<boolean>;
60
+ /**
61
+ * 计算一组细粒度权限所要求的最低权限等级(参数级动态提权)。
62
+ *
63
+ * 例如 file_write 写普通文件只需声明的 authority:3,但写 data:/users.json
64
+ * (用户权限表)或 data:/scheduler-jobs.json(计划任务,可注入 owner 身份的
65
+ * actor)这类敏感文件、或写 aalis:/ 源码根(重启后即任意代码执行)时要求
66
+ * owner 等级,防止低权限用户借文件写入自我提权。
67
+ *
68
+ * 默认保护清单可被 config.permissionAuthority 覆盖/扩展(同模式取配置值,
69
+ * 新模式叠加;命中多个模式时取最大要求)。只提高门槛,不降低声明值。
70
+ */
71
+ /** 参数级提权完整清单(内置保护 + config.permissionAuthority 合并后;展示与裁决共用同一真源) */
72
+ getEscalationMap(): Record<string, number>;
73
+ requiredAuthorityFor(permissions: string[]): number;
74
+ checkPermissionPolicy(permissions: string[]): string | null;
75
+ private matchAny;
76
+ private matchPattern;
77
+ listDangerousGrants(): DangerousGrant[];
78
+ revokeDangerousGrant(id: string): boolean;
79
+ private normalizeConfirmResult;
80
+ private consumeDangerousGrant;
81
+ private createDangerousGrant;
82
+ private pruneDangerousGrants;
83
+ private samePermissions;
84
+ isOwner(platform: string, userId?: string): boolean;
85
+ listUsers(): AuthorityUserEntry[];
86
+ save(): void;
87
+ init(): Promise<void>;
88
+ }
89
+ export declare const name = "@aalis/plugin-authority";
90
+ export declare const displayName = "\u6743\u9650\u7BA1\u7406";
91
+ export declare const subsystem = "authority";
92
+ export declare const provides: string[];
93
+ export declare const inject: {
94
+ optional: string[];
95
+ };
96
+ export declare function apply(ctx: Context, _config: Record<string, unknown>): Promise<void>;
97
+ export declare const actions: PluginModule['actions'];
98
+ export declare const actionsMeta: PluginModule['actionsMeta'];
99
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}