@yongdall/organization-rbac 0.4.5 → 0.5.2

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/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import { a as OrganizationMember, i as useOrganizations, n as useOrganizationPermissions, o as OrganizationUserRole, r as useOrganizationRoleIds, s as OrganizationAppointment, t as useOrganizationAllPermissions } from "./organization-rbac-B8x_aDQj.mjs";
1
+ import { a as OrganizationMember, i as useOrganizations, n as useOrganizationPermissions, o as OrganizationUserRole, r as useOrganizationRoleIds, s as OrganizationAppointment, t as useOrganizationAllPermissions } from "./organization-rbac-DqwaouG_.mjs";
2
2
 
3
3
  export { OrganizationAppointment, OrganizationMember, OrganizationUserRole, useOrganizationAllPermissions, useOrganizationPermissions, useOrganizationRoleIds, useOrganizations };
@@ -2,7 +2,7 @@ import { RolePermission } from "@yongdall/role";
2
2
  import { createComputed } from "@yongdall/context";
3
3
  import { Query, Where, createField, createModel, now, uuid } from "@yongdall/model";
4
4
  import { getUser } from "@yongdall/core";
5
- import { connect } from "@yongdall/connection";
5
+ import { useDatabase } from "@yongdall/connection";
6
6
 
7
7
  //#region plugins/organization-rbac/models/OrganizationAppointment.mjs
8
8
  const OrganizationAppointment = createModel("organizationAppointment", {
@@ -192,7 +192,7 @@ const OrganizationMember = createModel("organizationMember", {
192
192
  const useOrganizations = createComputed(async () => {
193
193
  const id = await getUser();
194
194
  /** @type {{organizationId: string}[]} */
195
- const relations = await connect("rdb").select(new Query(OrganizationMember).select(["organizationId"]).where("userId", id));
195
+ const relations = await useDatabase().select(new Query(OrganizationMember).select(["organizationId"]).where("userId", id));
196
196
  return new Set(relations.map((v) => v.organizationId));
197
197
  });
198
198
  /**
@@ -204,7 +204,7 @@ const useOrganizationRoleIds = createComputed(async () => {
204
204
  if (!organizations.size) return {};
205
205
  const id = await getUser();
206
206
  /** @type {{organizationId: number; roleId: string;}[]} */
207
- const list = await connect("rdb").select(new Query(OrganizationUserRole).select(["organizationId", "roleId"]).where("organizationId", "in", [...organizations]).where("userId", id));
207
+ const list = await useDatabase().select(new Query(OrganizationUserRole).select(["organizationId", "roleId"]).where("organizationId", "in", [...organizations]).where("userId", id));
208
208
  return Object.fromEntries(Object.entries(Object.groupBy(list, (v) => v.organizationId)).map(([organizationId, list]) => [organizationId, new Set(list?.map((v) => v.roleId))]));
209
209
  });
210
210
  /**
@@ -215,7 +215,7 @@ const useOrganizationPermissions = createComputed(async () => {
215
215
  const allRoleIds = [...new Set(Object.values(roleIds).flatMap((v) => [...v]))];
216
216
  if (!allRoleIds.length) return Object.create(null);
217
217
  /** @type {{permission: string; roleId: string}[]} */
218
- const values = await connect("rdb").select(new Query(RolePermission).select(["permission", "roleId"]).where("roleId", "in", allRoleIds));
218
+ const values = await useDatabase().select(new Query(RolePermission).select(["permission", "roleId"]).where("roleId", "in", allRoleIds));
219
219
  const list = Object.fromEntries(Object.entries(Object.groupBy(values, (l) => l.roleId)).map(([k, v]) => [k, v?.map((v) => v.permission)]));
220
220
  /** @type {Record<string, Set<string>>} */
221
221
  const permissions = Object.create(null);
@@ -236,4 +236,4 @@ const useOrganizationAllPermissions = createComputed(async () => {
236
236
 
237
237
  //#endregion
238
238
  export { OrganizationMember as a, useOrganizations as i, useOrganizationPermissions as n, OrganizationUserRole as o, useOrganizationRoleIds as r, OrganizationAppointment as s, useOrganizationAllPermissions as t };
239
- //# sourceMappingURL=organization-rbac-B8x_aDQj.mjs.map
239
+ //# sourceMappingURL=organization-rbac-DqwaouG_.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization-rbac-DqwaouG_.mjs","names":[],"sources":["../../plugins/organization-rbac/models/OrganizationAppointment.mjs","../../plugins/organization-rbac/models/OrganizationMember.mjs","../../plugins/organization-rbac/index.mjs"],"sourcesContent":["import { createField, createModel, now, uuid } from '@yongdall/model';\n\n\n\n// export const OrganizationAppointmentRole = createModel('organizationAppointmentRole', {\n// \tappointmentId: createField('uuid', { nullable: false, index: true, label: '职务', model: 'appointment', renderer: 'document', immutable: true, primary: 1 }),\n// \troleId: createField('uuid', { nullable: false, index: true, label: '角色', model: 'role', renderer: 'document', immutable: true, primary: 2 }),\n// \tno: createField('i32', { nullable: false, default: 0 }),\n// });\n\nexport const OrganizationAppointment = createModel('organizationAppointment', {\n\tid: createField('uuid', { nullable: false, primary: 1, default: uuid, uncreatable: true }),\n\n\tlabel: createField('string', { nullable: false, label: '职务名称' }),\n\tdescription: createField('string', { nullable: true, label: '描述' }),\n\n\tcreatedAt: createField('date', { nullable: false, default: now, creating: now, label: '创建日期' }),\n\tupdatedAt: createField('date', { nullable: false, default: now, updating: now, label: '最后更新日期' }),\n\n\t// roles: createField(OrganizationAppointmentRole, { \n\t// \tarray: true, \n\t// \tconstraints: { appointmentId: { field: 'id' }, no: { noField: true } }, \n\t// \tlabel: '角色列表' \n\t// }),\n}, {\n\n\tpermissions: [\n\t\t{ permission: 'system:organization', fields: '*', authorizations: ['query', 'read', 'create', 'update', 'destroy', 'add', 'remove'] },\n\t],\n});\n","import { createField, createModel, now, uuid, Where} from '@yongdall/model';\n\n/**\n * 组织用户角色模型\n * @typedef {Object} OrganizationUserRole\n * @property {string} userId - 用户ID,主键第一部分\n * @property {string} organizationId - 组织ID,主键第二部分\n * @property {string} roleId - 角色ID,主键第三部分\n * @property {number} no - 编号\n */\nexport const OrganizationUserRole = createModel('organizationUserRole', {\n\tuserId: createField('uuid', { nullable: false, index: true, label: '用户', model: 'user', renderer: 'document', immutable: true, primary: 1 }),\n\torganizationId: createField('uuid', { nullable: false, index: true, label: '组织', model: 'organization', renderer: 'document', immutable: true, primary: 2 }),\n\troleId: createField('uuid', { nullable: false, index: true, label: '角色', model: 'role', renderer: 'document', immutable: true, primary: 3 }),\n\n\tno: createField('i32', { nullable: false, default: 0 }),\n});\n\n\nexport const OrganizationMember = createModel('organizationMember', {\n\tid: createField('uuid', { nullable: false, index: true, primary: 1, default: uuid }),\n\n\tuserId: createField('uuid', { nullable: false, index: true, label: '用户', model: 'user', renderer: 'document', immutable: true, layout: { rowSpan: 6 } }),\n\torganizationId: createField('uuid', { nullable: false, index: true, label: '组织', model: 'organization', renderer: 'document', immutable: true, layout: { rowSpan: 6 } }),\n\tappointmentId: createField('uuid', { nullable: true, index: true, label: '职务', model: 'appointment', renderer: 'document', layout: { rowSpan: 6 } }),\n\n\tdefault: createField('bool', { nullable: false, default: false, label: '默认职务' }),\n\n\tcreatedAt: createField('date', { nullable: false, default: now, creating: now, label: '创建日期' }),\n\tupdatedAt: createField('date', { nullable: false, default: now, updating: now, label: '最后更新日期' }),\n\n\troles: createField(OrganizationUserRole, {\n\t\tarray: true,\n\t\tconstraints: {\n\t\t\torganizationId: { field: 'organizationId' },\n\t\t\tuserId: { field: 'userId' },\n\t\t\tno: { noField: true }\n\t\t},\n\t\tlabel: '角色列表'\n\t}),\n}, {\n\tindexes: [\n\t\t{ fields: ['userId', 'organizationId', 'appointmentId'], unique: true }\n\t],\n\tpermissions: [\n\t\t{ permission: 'system:user', fields: '*', authorizations: ['query', 'read', 'create', 'update', 'destroy', 'add', 'remove'] },\n\t],\n\thooks: {\n\t\tasync afterCreate(conn, Model, record) {\n\t\t\tif (!record.default) { return }\n\t\t\tawait conn.update(\n\t\t\t\tModel,\n\t\t\t\t{ default: false },\n\t\t\t\tWhere.and('organizationId', '=', record.organizationId, true)\n\t\t\t\t\t.and('userId', record.userId),\n\t\t\t);\n\t\t},\n\n\t\tasync afterUpdate(conn, Model, record, oldRecord) {\n\t\t\tif (!record.default) { return }\n\t\t\tif (oldRecord.default) { return }\n\t\t\tawait conn.update(\n\t\t\t\tModel,\n\t\t\t\t{ default: false },\n\t\t\t\tWhere.and('organizationId', '=', record.organizationId, true)\n\t\t\t\t\t.and('userId', record.userId),\n\t\t\t);\n\t\t},\n\t}\n});\n","import { createComputed } from '@yongdall/context';\nimport { Query } from '@yongdall/model';\nimport { getUser } from '@yongdall/core';\nimport { useDatabase } from '@yongdall/connection';\nimport { RolePermission } from '@yongdall/role';\nimport { OrganizationMember, OrganizationUserRole } from './models/index.mjs';\n\nexport * from './models/index.mjs';\n\n\n/**\n * 所在组织\n * @returns \n */\nexport const useOrganizations = createComputed(async () => {\n\tconst id = await getUser();\n\t/** @type {{organizationId: string}[]} */\n\tconst relations = await useDatabase().select(\n\t\tnew Query(OrganizationMember).select(['organizationId']).where('userId', id)\n\t)\n\treturn new Set(relations.map(v => v.organizationId));\n});\n\n\n/**\n * 角色\n * @returns {Promise<Record<string, Set<string>>>}\n */\nexport const useOrganizationRoleIds = createComputed(async () => {\n\tconst organizations = await useOrganizations()\n\tif (!organizations.size) { return {}; }\n\tconst id = await getUser();\n\t/** @type {{organizationId: number; roleId: string;}[]} */\n\tconst list = await useDatabase().select(\n\t\tnew Query(OrganizationUserRole).select(['organizationId', 'roleId'])\n\t\t\t.where('organizationId', 'in', [...organizations])\n\t\t\t.where('userId', id)\n\t);\n\treturn Object.fromEntries((Object.entries(Object.groupBy(list, v => v.organizationId))\n\t\t.map(([organizationId, list]) => [organizationId, new Set(list?.map(v => v.roleId))])))\n});\n\n\n/**\n * @returns {Promise<Record<string, Set<string>>>}\n */\nexport const useOrganizationPermissions = createComputed(async () => {\n\tconst roleIds = await useOrganizationRoleIds()\n\tconst allRoleIds = [...new Set(Object.values(roleIds).flatMap(v =>[...v]))];\n\tif (!allRoleIds.length) { return Object.create(null); }\n\t/** @type {{permission: string; roleId: string}[]} */\n\tconst values = await useDatabase().select(\n\t\tnew Query(RolePermission).select(['permission', 'roleId'])\n\t\t\t.where('roleId', 'in', allRoleIds)\n\t);\n\tconst list = Object.fromEntries(Object.entries(Object.groupBy(values, l => l.roleId)).map(([k,v]) => [k, v?.map(v => v.permission)]));\n\t/** @type {Record<string, Set<string>>} */\n\tconst permissions = Object.create(null);\n\tfor (const [organization, roleSet] of Object.entries(roleIds)) {\n\t\tconst s = new Set([...roleSet].flatMap(v => list[v] || []));\n\t\tif (!s.size) { continue; }\n\t\tpermissions[organization] = s;\n\t}\n\treturn permissions;\n});\n\n\n\n/**\n * @returns {Promise<Set<string>>}\n */\nexport const useOrganizationAllPermissions = createComputed(async () => {\n\tconst v = await useOrganizationPermissions()\n\treturn new Set(Object.values(v).flatMap(v => [...v]));\n});\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yongdall/organization-rbac",
3
- "version": "0.4.5",
3
+ "version": "0.5.2",
4
4
  "type": "module",
5
5
  "main": "./index.mjs",
6
6
  "exports": {
@@ -11,13 +11,14 @@
11
11
  "author": "",
12
12
  "license": "ISC",
13
13
  "dependencies": {
14
- "@yongdall/connection": "^0.4.0",
15
- "@yongdall/context": "^0.4.0",
16
- "@yongdall/core": "^0.4.0",
17
- "@yongdall/model": "^0.4.0",
18
- "@yongdall/role": "^0.4.0"
14
+ "@yongdall/connection": "^0.5.0",
15
+ "@yongdall/context": "^0.5.0",
16
+ "@yongdall/core": "^0.5.0",
17
+ "@yongdall/model": "^0.5.0",
18
+ "@yongdall/role": "^0.5.0"
19
19
  },
20
20
  "devDependencies": {
21
- "@yongdall/types": "^0.4.0"
21
+ "@yongdall/migrate": "^0.5.0",
22
+ "@yongdall/types": "^0.5.0"
22
23
  }
23
24
  }
@@ -0,0 +1,15 @@
1
+ import { a as OrganizationMember, s as OrganizationAppointment } from "../organization-rbac-DqwaouG_.mjs";
2
+ import { Role } from "@yongdall/role";
3
+
4
+ //#region plugins/organization-rbac/yongdall/migration.mjs
5
+ /** @import { Profile } from '@yongdall/migrate' */
6
+ /** @type {Profile['models']} */
7
+ const models = [
8
+ OrganizationAppointment,
9
+ OrganizationMember,
10
+ Role
11
+ ];
12
+
13
+ //#endregion
14
+ export { models };
15
+ //# sourceMappingURL=migration.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.mjs","names":[],"sources":["../../../plugins/organization-rbac/yongdall/migration.mjs"],"sourcesContent":["/** @import { Profile } from '@yongdall/migrate' */\nimport { Role } from '@yongdall/role';\nimport { OrganizationAppointment, OrganizationMember } from '../index.mjs';\n\n\n/** @type {Profile['models']} */\nexport const models = [\n\tOrganizationAppointment,\n\tOrganizationMember,\n\tRole,\n];\n"],"mappings":";;;;;;AAMA,MAAa,SAAS;CACrB;CACA;CACA;CACA"}
@@ -0,0 +1,15 @@
1
+ import { a as OrganizationMember, s as OrganizationAppointment } from "../organization-rbac-DqwaouG_.mjs";
2
+ import { Role } from "@yongdall/role";
3
+
4
+ //#region plugins/organization-rbac/yongdall/model.mjs
5
+ /** @import { ModelProfile } from '@yongdall/core' */
6
+ /** @type {ModelProfile['models']} */
7
+ const models = {
8
+ organizationAppointment: OrganizationAppointment,
9
+ organizationMember: OrganizationMember,
10
+ role: Role
11
+ };
12
+
13
+ //#endregion
14
+ export { models };
15
+ //# sourceMappingURL=model.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.mjs","names":[],"sources":["../../../plugins/organization-rbac/yongdall/model.mjs"],"sourcesContent":["/** @import { ModelProfile } from '@yongdall/core' */\nimport { Role } from '@yongdall/role';\nimport { OrganizationAppointment, OrganizationMember } from '../index.mjs';\n\n/** @type {ModelProfile['models']} */\nexport const models = {\n\torganizationAppointment: OrganizationAppointment,\n\torganizationMember: OrganizationMember,\n\trole: Role,\n};\n"],"mappings":";;;;;;AAKA,MAAa,SAAS;CACrB,yBAAyB;CACzB,oBAAoB;CACpB,MAAM;CACN"}
@@ -0,0 +1,16 @@
1
+ import { n as useOrganizationPermissions, t as useOrganizationAllPermissions } from "../organization-rbac-DqwaouG_.mjs";
2
+
3
+ //#region plugins/organization-rbac/yongdall/user.mjs
4
+ /** @import { UserManager } from '@yongdall/core' */
5
+ /** @type {UserManager['getOrganizationAllPermissions']} */
6
+ const getOrganizationAllPermissions = () => {
7
+ return useOrganizationAllPermissions();
8
+ };
9
+ /** @type {UserManager['getOrganizationAllPermissions']} */
10
+ const getOrganizationPermissions = () => {
11
+ return useOrganizationPermissions();
12
+ };
13
+
14
+ //#endregion
15
+ export { getOrganizationAllPermissions, getOrganizationPermissions };
16
+ //# sourceMappingURL=user.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.mjs","names":[],"sources":["../../../plugins/organization-rbac/yongdall/user.mjs"],"sourcesContent":["/** @import { UserManager } from '@yongdall/core' */\nimport { useOrganizationAllPermissions, useOrganizationPermissions } from '../index.mjs';\n\n\n/** @type {UserManager['getOrganizationAllPermissions']} */\nexport const getOrganizationAllPermissions = () => {\n\treturn useOrganizationAllPermissions();\n};\n/** @type {UserManager['getOrganizationAllPermissions']} */\nexport const getOrganizationPermissions = () => {\n\treturn useOrganizationPermissions();\n};\n"],"mappings":";;;;;AAKA,MAAa,sCAAsC;AAClD,QAAO,+BAA+B;;;AAGvC,MAAa,mCAAmC;AAC/C,QAAO,4BAA4B"}
@@ -0,0 +1 @@
1
+ label: 组织权限
@@ -1,30 +0,0 @@
1
- import { a as OrganizationMember, n as useOrganizationPermissions, s as OrganizationAppointment, t as useOrganizationAllPermissions } from "./organization-rbac-B8x_aDQj.mjs";
2
- import { Role } from "@yongdall/role";
3
-
4
- //#region plugins/organization-rbac/hooks.yongdall.mjs
5
- /** @import { Hooks, UserManager } from '@yongdall/core' */
6
- /** @type {Hooks.Define['models']} */
7
- const models = {
8
- organizationAppointment: OrganizationAppointment,
9
- organizationMember: OrganizationMember,
10
- role: Role
11
- };
12
- /** @type {Hooks.Define['migrationModels']} */
13
- const migrationModels = [
14
- OrganizationAppointment,
15
- OrganizationMember,
16
- Role
17
- ];
18
- /** @type {Partial<UserManager>} */
19
- const userManager = {
20
- getOrganizationAllPermissions() {
21
- return useOrganizationAllPermissions();
22
- },
23
- getOrganizationPermissions() {
24
- return useOrganizationPermissions();
25
- }
26
- };
27
-
28
- //#endregion
29
- export { migrationModels, models, userManager };
30
- //# sourceMappingURL=hooks.yongdall.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.yongdall.mjs","names":[],"sources":["../../plugins/organization-rbac/hooks.yongdall.mjs"],"sourcesContent":["/** @import { Hooks, UserManager } from '@yongdall/core' */\nimport { Role } from '@yongdall/role';\nimport { OrganizationAppointment, OrganizationMember, useOrganizationAllPermissions, useOrganizationPermissions } from './index.mjs';\n\n/** @type {Hooks.Define['models']} */\nexport const models = {\n\torganizationAppointment: OrganizationAppointment,\n\torganizationMember: OrganizationMember,\n\trole: Role,\n};\n\n/** @type {Hooks.Define['migrationModels']} */\nexport const migrationModels = [\n\tOrganizationAppointment,\n\tOrganizationMember,\n\tRole,\n];\n\n\n/** @type {Partial<UserManager>} */\nexport const userManager = {\n\tgetOrganizationAllPermissions() {\n\t\treturn useOrganizationAllPermissions()\n\t},\n\tgetOrganizationPermissions() {\n\t\treturn useOrganizationPermissions()\n\t},\n}\n"],"mappings":";;;;;;AAKA,MAAa,SAAS;CACrB,yBAAyB;CACzB,oBAAoB;CACpB,MAAM;CACN;;AAGD,MAAa,kBAAkB;CAC9B;CACA;CACA;CACA;;AAID,MAAa,cAAc;CAC1B,gCAAgC;AAC/B,SAAO,+BAA+B;;CAEvC,6BAA6B;AAC5B,SAAO,4BAA4B;;CAEpC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"organization-rbac-B8x_aDQj.mjs","names":[],"sources":["../../plugins/organization-rbac/models/OrganizationAppointment.mjs","../../plugins/organization-rbac/models/OrganizationMember.mjs","../../plugins/organization-rbac/index.mjs"],"sourcesContent":["import { createField, createModel, now, uuid } from '@yongdall/model';\n\n\n\n// export const OrganizationAppointmentRole = createModel('organizationAppointmentRole', {\n// \tappointmentId: createField('uuid', { nullable: false, index: true, label: '职务', model: 'appointment', renderer: 'document', immutable: true, primary: 1 }),\n// \troleId: createField('uuid', { nullable: false, index: true, label: '角色', model: 'role', renderer: 'document', immutable: true, primary: 2 }),\n// \tno: createField('i32', { nullable: false, default: 0 }),\n// });\n\nexport const OrganizationAppointment = createModel('organizationAppointment', {\n\tid: createField('uuid', { nullable: false, primary: 1, default: uuid, uncreatable: true }),\n\n\tlabel: createField('string', { nullable: false, label: '职务名称' }),\n\tdescription: createField('string', { nullable: true, label: '描述' }),\n\n\tcreatedAt: createField('date', { nullable: false, default: now, creating: now, label: '创建日期' }),\n\tupdatedAt: createField('date', { nullable: false, default: now, updating: now, label: '最后更新日期' }),\n\n\t// roles: createField(OrganizationAppointmentRole, { \n\t// \tarray: true, \n\t// \tconstraints: { appointmentId: { field: 'id' }, no: { noField: true } }, \n\t// \tlabel: '角色列表' \n\t// }),\n}, {\n\n\tpermissions: [\n\t\t{ permission: 'system:organization', fields: '*', authorizations: ['query', 'read', 'create', 'update', 'destroy', 'add', 'remove'] },\n\t],\n});\n","import { createField, createModel, now, uuid, Where} from '@yongdall/model';\n\n/**\n * 组织用户角色模型\n * @typedef {Object} OrganizationUserRole\n * @property {string} userId - 用户ID,主键第一部分\n * @property {string} organizationId - 组织ID,主键第二部分\n * @property {string} roleId - 角色ID,主键第三部分\n * @property {number} no - 编号\n */\nexport const OrganizationUserRole = createModel('organizationUserRole', {\n\tuserId: createField('uuid', { nullable: false, index: true, label: '用户', model: 'user', renderer: 'document', immutable: true, primary: 1 }),\n\torganizationId: createField('uuid', { nullable: false, index: true, label: '组织', model: 'organization', renderer: 'document', immutable: true, primary: 2 }),\n\troleId: createField('uuid', { nullable: false, index: true, label: '角色', model: 'role', renderer: 'document', immutable: true, primary: 3 }),\n\n\tno: createField('i32', { nullable: false, default: 0 }),\n});\n\n\nexport const OrganizationMember = createModel('organizationMember', {\n\tid: createField('uuid', { nullable: false, index: true, primary: 1, default: uuid }),\n\n\tuserId: createField('uuid', { nullable: false, index: true, label: '用户', model: 'user', renderer: 'document', immutable: true, layout: { rowSpan: 6 } }),\n\torganizationId: createField('uuid', { nullable: false, index: true, label: '组织', model: 'organization', renderer: 'document', immutable: true, layout: { rowSpan: 6 } }),\n\tappointmentId: createField('uuid', { nullable: true, index: true, label: '职务', model: 'appointment', renderer: 'document', layout: { rowSpan: 6 } }),\n\n\tdefault: createField('bool', { nullable: false, default: false, label: '默认职务' }),\n\n\tcreatedAt: createField('date', { nullable: false, default: now, creating: now, label: '创建日期' }),\n\tupdatedAt: createField('date', { nullable: false, default: now, updating: now, label: '最后更新日期' }),\n\n\troles: createField(OrganizationUserRole, {\n\t\tarray: true,\n\t\tconstraints: {\n\t\t\torganizationId: { field: 'organizationId' },\n\t\t\tuserId: { field: 'userId' },\n\t\t\tno: { noField: true }\n\t\t},\n\t\tlabel: '角色列表'\n\t}),\n}, {\n\tindexes: [\n\t\t{ fields: ['userId', 'organizationId', 'appointmentId'], unique: true }\n\t],\n\tpermissions: [\n\t\t{ permission: 'system:user', fields: '*', authorizations: ['query', 'read', 'create', 'update', 'destroy', 'add', 'remove'] },\n\t],\n\thooks: {\n\t\tasync afterCreate(conn, Model, record) {\n\t\t\tif (!record.default) { return }\n\t\t\tawait conn.update(\n\t\t\t\tModel,\n\t\t\t\t{ default: false },\n\t\t\t\tWhere.and('organizationId', '=', record.organizationId, true)\n\t\t\t\t\t.and('userId', record.userId),\n\t\t\t);\n\t\t},\n\n\t\tasync afterUpdate(conn, Model, record, oldRecord) {\n\t\t\tif (!record.default) { return }\n\t\t\tif (oldRecord.default) { return }\n\t\t\tawait conn.update(\n\t\t\t\tModel,\n\t\t\t\t{ default: false },\n\t\t\t\tWhere.and('organizationId', '=', record.organizationId, true)\n\t\t\t\t\t.and('userId', record.userId),\n\t\t\t);\n\t\t},\n\t}\n});\n","import { createComputed } from '@yongdall/context';\nimport { Query } from '@yongdall/model';\nimport { getUser } from '@yongdall/core';\nimport { connect } from '@yongdall/connection';\nimport { RolePermission } from '@yongdall/role';\nimport { OrganizationMember, OrganizationUserRole } from './models/index.mjs';\n\nexport * from './models/index.mjs';\n\n\n/**\n * 所在组织\n * @returns \n */\nexport const useOrganizations = createComputed(async () => {\n\tconst id = await getUser();\n\t/** @type {{organizationId: string}[]} */\n\tconst relations = await connect('rdb').select(\n\t\tnew Query(OrganizationMember).select(['organizationId']).where('userId', id)\n\t)\n\treturn new Set(relations.map(v => v.organizationId));\n});\n\n\n/**\n * 角色\n * @returns {Promise<Record<string, Set<string>>>}\n */\nexport const useOrganizationRoleIds = createComputed(async () => {\n\tconst organizations = await useOrganizations()\n\tif (!organizations.size) { return {}; }\n\tconst id = await getUser();\n\t/** @type {{organizationId: number; roleId: string;}[]} */\n\tconst list = await connect('rdb').select(\n\t\tnew Query(OrganizationUserRole).select(['organizationId', 'roleId'])\n\t\t\t.where('organizationId', 'in', [...organizations])\n\t\t\t.where('userId', id)\n\t);\n\treturn Object.fromEntries((Object.entries(Object.groupBy(list, v => v.organizationId))\n\t\t.map(([organizationId, list]) => [organizationId, new Set(list?.map(v => v.roleId))])))\n});\n\n\n/**\n * @returns {Promise<Record<string, Set<string>>>}\n */\nexport const useOrganizationPermissions = createComputed(async () => {\n\tconst roleIds = await useOrganizationRoleIds()\n\tconst allRoleIds = [...new Set(Object.values(roleIds).flatMap(v =>[...v]))];\n\tif (!allRoleIds.length) { return Object.create(null); }\n\t/** @type {{permission: string; roleId: string}[]} */\n\tconst values = await connect('rdb').select(\n\t\tnew Query(RolePermission).select(['permission', 'roleId'])\n\t\t\t.where('roleId', 'in', allRoleIds)\n\t);\n\tconst list = Object.fromEntries(Object.entries(Object.groupBy(values, l => l.roleId)).map(([k,v]) => [k, v?.map(v => v.permission)]));\n\t/** @type {Record<string, Set<string>>} */\n\tconst permissions = Object.create(null);\n\tfor (const [organization, roleSet] of Object.entries(roleIds)) {\n\t\tconst s = new Set([...roleSet].flatMap(v => list[v] || []));\n\t\tif (!s.size) { continue; }\n\t\tpermissions[organization] = s;\n\t}\n\treturn permissions;\n});\n\n\n\n/**\n * @returns {Promise<Set<string>>}\n */\nexport const useOrganizationAllPermissions = createComputed(async () => {\n\tconst v = await useOrganizationPermissions()\n\treturn new Set(Object.values(v).flatMap(v => [...v]));\n});\n"],"mappings":";;;;;;;AAUA,MAAa,0BAA0B,YAAY,2BAA2B;CAC7E,IAAI,YAAY,QAAQ;EAAE,UAAU;EAAO,SAAS;EAAG,SAAS;EAAM,aAAa;EAAM,CAAC;CAE1F,OAAO,YAAY,UAAU;EAAE,UAAU;EAAO,OAAO;EAAQ,CAAC;CAChE,aAAa,YAAY,UAAU;EAAE,UAAU;EAAM,OAAO;EAAM,CAAC;CAEnE,WAAW,YAAY,QAAQ;EAAE,UAAU;EAAO,SAAS;EAAK,UAAU;EAAK,OAAO;EAAQ,CAAC;CAC/F,WAAW,YAAY,QAAQ;EAAE,UAAU;EAAO,SAAS;EAAK,UAAU;EAAK,OAAO;EAAU,CAAC;CAOjG,EAAE,EAEF,aAAa,CACZ;CAAE,YAAY;CAAuB,QAAQ;CAAK,gBAAgB;EAAC;EAAS;EAAQ;EAAU;EAAU;EAAW;EAAO;EAAS;CAAE,CACrI,EACD,CAAC;;;;;;;;;;;;ACnBF,MAAa,uBAAuB,YAAY,wBAAwB;CACvE,QAAQ,YAAY,QAAQ;EAAE,UAAU;EAAO,OAAO;EAAM,OAAO;EAAM,OAAO;EAAQ,UAAU;EAAY,WAAW;EAAM,SAAS;EAAG,CAAC;CAC5I,gBAAgB,YAAY,QAAQ;EAAE,UAAU;EAAO,OAAO;EAAM,OAAO;EAAM,OAAO;EAAgB,UAAU;EAAY,WAAW;EAAM,SAAS;EAAG,CAAC;CAC5J,QAAQ,YAAY,QAAQ;EAAE,UAAU;EAAO,OAAO;EAAM,OAAO;EAAM,OAAO;EAAQ,UAAU;EAAY,WAAW;EAAM,SAAS;EAAG,CAAC;CAE5I,IAAI,YAAY,OAAO;EAAE,UAAU;EAAO,SAAS;EAAG,CAAC;CACvD,CAAC;AAGF,MAAa,qBAAqB,YAAY,sBAAsB;CACnE,IAAI,YAAY,QAAQ;EAAE,UAAU;EAAO,OAAO;EAAM,SAAS;EAAG,SAAS;EAAM,CAAC;CAEpF,QAAQ,YAAY,QAAQ;EAAE,UAAU;EAAO,OAAO;EAAM,OAAO;EAAM,OAAO;EAAQ,UAAU;EAAY,WAAW;EAAM,QAAQ,EAAE,SAAS,GAAG;EAAE,CAAC;CACxJ,gBAAgB,YAAY,QAAQ;EAAE,UAAU;EAAO,OAAO;EAAM,OAAO;EAAM,OAAO;EAAgB,UAAU;EAAY,WAAW;EAAM,QAAQ,EAAE,SAAS,GAAG;EAAE,CAAC;CACxK,eAAe,YAAY,QAAQ;EAAE,UAAU;EAAM,OAAO;EAAM,OAAO;EAAM,OAAO;EAAe,UAAU;EAAY,QAAQ,EAAE,SAAS,GAAG;EAAE,CAAC;CAEpJ,SAAS,YAAY,QAAQ;EAAE,UAAU;EAAO,SAAS;EAAO,OAAO;EAAQ,CAAC;CAEhF,WAAW,YAAY,QAAQ;EAAE,UAAU;EAAO,SAAS;EAAK,UAAU;EAAK,OAAO;EAAQ,CAAC;CAC/F,WAAW,YAAY,QAAQ;EAAE,UAAU;EAAO,SAAS;EAAK,UAAU;EAAK,OAAO;EAAU,CAAC;CAEjG,OAAO,YAAY,sBAAsB;EACxC,OAAO;EACP,aAAa;GACZ,gBAAgB,EAAE,OAAO,kBAAkB;GAC3C,QAAQ,EAAE,OAAO,UAAU;GAC3B,IAAI,EAAE,SAAS,MAAM;GACrB;EACD,OAAO;EACP,CAAC;CACF,EAAE;CACF,SAAS,CACR;EAAE,QAAQ;GAAC;GAAU;GAAkB;GAAgB;EAAE,QAAQ;EAAM,CACvE;CACD,aAAa,CACZ;EAAE,YAAY;EAAe,QAAQ;EAAK,gBAAgB;GAAC;GAAS;GAAQ;GAAU;GAAU;GAAW;GAAO;GAAS;EAAE,CAC7H;CACD,OAAO;EACN,MAAM,YAAY,MAAM,OAAO,QAAQ;AACtC,OAAI,CAAC,OAAO,QAAW;AACvB,SAAM,KAAK,OACV,OACA,EAAE,SAAS,OAAO,EAClB,MAAM,IAAI,kBAAkB,KAAK,OAAO,gBAAgB,KAAK,CAC3D,IAAI,UAAU,OAAO,OAAO,CAC9B;;EAGF,MAAM,YAAY,MAAM,OAAO,QAAQ,WAAW;AACjD,OAAI,CAAC,OAAO,QAAW;AACvB,OAAI,UAAU,QAAW;AACzB,SAAM,KAAK,OACV,OACA,EAAE,SAAS,OAAO,EAClB,MAAM,IAAI,kBAAkB,KAAK,OAAO,gBAAgB,KAAK,CAC3D,IAAI,UAAU,OAAO,OAAO,CAC9B;;EAEF;CACD,CAAC;;;;;;;;ACvDF,MAAa,mBAAmB,eAAe,YAAY;CAC1D,MAAM,KAAK,MAAM,SAAS;;CAE1B,MAAM,YAAY,MAAM,QAAQ,MAAM,CAAC,OACtC,IAAI,MAAM,mBAAmB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,MAAM,UAAU,GAAG,CAC5E;AACD,QAAO,IAAI,IAAI,UAAU,KAAI,MAAK,EAAE,eAAe,CAAC;EACnD;;;;;AAOF,MAAa,yBAAyB,eAAe,YAAY;CAChE,MAAM,gBAAgB,MAAM,kBAAkB;AAC9C,KAAI,CAAC,cAAc,KAAQ,QAAO,EAAE;CACpC,MAAM,KAAK,MAAM,SAAS;;CAE1B,MAAM,OAAO,MAAM,QAAQ,MAAM,CAAC,OACjC,IAAI,MAAM,qBAAqB,CAAC,OAAO,CAAC,kBAAkB,SAAS,CAAC,CAClE,MAAM,kBAAkB,MAAM,CAAC,GAAG,cAAc,CAAC,CACjD,MAAM,UAAU,GAAG,CACrB;AACD,QAAO,OAAO,YAAa,OAAO,QAAQ,OAAO,QAAQ,OAAM,MAAK,EAAE,eAAe,CAAC,CACpF,KAAK,CAAC,gBAAgB,UAAU,CAAC,gBAAgB,IAAI,IAAI,MAAM,KAAI,MAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAE;EACvF;;;;AAMF,MAAa,6BAA6B,eAAe,YAAY;CACpE,MAAM,UAAU,MAAM,wBAAwB;CAC9C,MAAM,aAAa,CAAC,GAAG,IAAI,IAAI,OAAO,OAAO,QAAQ,CAAC,SAAQ,MAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC3E,KAAI,CAAC,WAAW,OAAU,QAAO,OAAO,OAAO,KAAK;;CAEpD,MAAM,SAAS,MAAM,QAAQ,MAAM,CAAC,OACnC,IAAI,MAAM,eAAe,CAAC,OAAO,CAAC,cAAc,SAAS,CAAC,CACxD,MAAM,UAAU,MAAM,WAAW,CACnC;CACD,MAAM,OAAO,OAAO,YAAY,OAAO,QAAQ,OAAO,QAAQ,SAAQ,MAAK,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAE,OAAO,CAAC,GAAG,GAAG,KAAI,MAAK,EAAE,WAAW,CAAC,CAAC,CAAC;;CAErI,MAAM,cAAc,OAAO,OAAO,KAAK;AACvC,MAAK,MAAM,CAAC,cAAc,YAAY,OAAO,QAAQ,QAAQ,EAAE;EAC9D,MAAM,IAAI,IAAI,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAQ,MAAK,KAAK,MAAM,EAAE,CAAC,CAAC;AAC3D,MAAI,CAAC,EAAE,KAAQ;AACf,cAAY,gBAAgB;;AAE7B,QAAO;EACN;;;;AAOF,MAAa,gCAAgC,eAAe,YAAY;CACvE,MAAM,IAAI,MAAM,4BAA4B;AAC5C,QAAO,IAAI,IAAI,OAAO,OAAO,EAAE,CAAC,SAAQ,MAAK,CAAC,GAAG,EAAE,CAAC,CAAC;EACpD"}