@authup/server-core 1.0.0-beta.37 → 1.0.0-beta.38
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/dist/adapters/database/data-source/options/module.mjs +16 -16
- package/dist/adapters/database/domains/client/index.d.ts +0 -1
- package/dist/adapters/database/domains/client/index.d.ts.map +1 -1
- package/dist/adapters/database/domains/client/index.mjs +1 -2
- package/dist/adapters/database/domains/index.mjs +26 -28
- package/dist/adapters/database/domains/policy/repository.mjs +1 -1
- package/dist/adapters/database/domains/robot/index.d.ts +0 -1
- package/dist/adapters/database/domains/robot/index.d.ts.map +1 -1
- package/dist/adapters/database/domains/robot/index.mjs +1 -2
- package/dist/adapters/database/domains/role/repository.d.ts +0 -6
- package/dist/adapters/database/domains/role/repository.d.ts.map +1 -1
- package/dist/adapters/database/domains/role/repository.mjs +1 -58
- package/dist/adapters/database/domains/role/repository.mjs.map +1 -1
- package/dist/adapters/database/domains/role-permission/entity.mjs +1 -1
- package/dist/adapters/database/domains/user/repository.d.ts +1 -5
- package/dist/adapters/database/domains/user/repository.d.ts.map +1 -1
- package/dist/adapters/database/domains/user/repository.mjs +0 -60
- package/dist/adapters/database/domains/user/repository.mjs.map +1 -1
- package/dist/adapters/database/extra-attribute-repository/tree/repository.d.ts.map +1 -1
- package/dist/adapters/database/extra-attribute-repository/tree/repository.mjs +1 -0
- package/dist/adapters/database/extra-attribute-repository/tree/repository.mjs.map +1 -1
- package/dist/adapters/database/index.mjs +18 -20
- package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/permission/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/policy/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/policy/utils/attributes-validator.mjs +1 -1
- package/dist/adapters/http/controllers/workflows/authorize/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/authorize/module.mjs +5 -6
- package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/assets.mjs +3 -3
- package/dist/adapters/http/middleware/built-in/assets.mjs.map +1 -1
- package/dist/app/modules/database/repositories/bindings.d.ts +17 -0
- package/dist/app/modules/database/repositories/bindings.d.ts.map +1 -0
- package/dist/app/modules/database/repositories/bindings.mjs +40 -0
- package/dist/app/modules/database/repositories/bindings.mjs.map +1 -0
- package/dist/app/modules/database/repositories/client/repository.d.ts +4 -1
- package/dist/app/modules/database/repositories/client/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/client/repository.mjs +29 -0
- package/dist/app/modules/database/repositories/client/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/robot/repository.d.ts +4 -1
- package/dist/app/modules/database/repositories/robot/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/robot/repository.mjs +29 -0
- package/dist/app/modules/database/repositories/robot/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/role/repository.d.ts +3 -0
- package/dist/app/modules/database/repositories/role/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/role/repository.mjs +16 -0
- package/dist/app/modules/database/repositories/role/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user/repository.d.ts +4 -1
- package/dist/app/modules/database/repositories/user/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/user/repository.mjs +29 -0
- package/dist/app/modules/database/repositories/user/repository.mjs.map +1 -1
- package/dist/app/modules/http/modules/controller.d.ts +1 -2
- package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
- package/dist/app/modules/http/modules/controller.mjs +30 -34
- package/dist/app/modules/http/modules/controller.mjs.map +1 -1
- package/dist/app/modules/http/modules/middleware.d.ts.map +1 -1
- package/dist/app/modules/http/modules/middleware.mjs +2 -15
- package/dist/app/modules/http/modules/middleware.mjs.map +1 -1
- package/dist/app/modules/identity/constants.d.ts +3 -1
- package/dist/app/modules/identity/constants.d.ts.map +1 -1
- package/dist/app/modules/identity/constants.mjs +2 -0
- package/dist/app/modules/identity/constants.mjs.map +1 -1
- package/dist/app/modules/identity/module.d.ts.map +1 -1
- package/dist/app/modules/identity/module.mjs +42 -5
- package/dist/app/modules/identity/module.mjs.map +1 -1
- package/dist/app/modules/identity/repositories/client.d.ts +2 -2
- package/dist/app/modules/identity/repositories/client.d.ts.map +1 -1
- package/dist/app/modules/identity/repositories/client.mjs.map +1 -1
- package/dist/app/modules/identity/repositories/robot.d.ts +2 -2
- package/dist/app/modules/identity/repositories/robot.d.ts.map +1 -1
- package/dist/app/modules/identity/repositories/robot.mjs.map +1 -1
- package/dist/app/modules/oauth2/module.d.ts.map +1 -1
- package/dist/app/modules/oauth2/module.mjs +5 -2
- package/dist/app/modules/oauth2/module.mjs.map +1 -1
- package/dist/app/modules/provisioning/module.d.ts.map +1 -1
- package/dist/app/modules/provisioning/module.mjs +14 -9
- package/dist/app/modules/provisioning/module.mjs.map +1 -1
- package/dist/app/modules/provisioning/sources/default/module.d.ts.map +1 -1
- package/dist/app/modules/provisioning/sources/default/module.mjs +66 -10
- package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
- package/dist/components/database/unique-entries/module.mjs +1 -1
- package/dist/core/entities/client/service.d.ts.map +1 -1
- package/dist/core/entities/client/service.mjs +15 -4
- package/dist/core/entities/client/service.mjs.map +1 -1
- package/dist/core/entities/client/types.d.ts +4 -1
- package/dist/core/entities/client/types.d.ts.map +1 -1
- package/dist/core/entities/client-scope/service.d.ts.map +1 -1
- package/dist/core/entities/client-scope/service.mjs +2 -0
- package/dist/core/entities/client-scope/service.mjs.map +1 -1
- package/dist/core/entities/identity-provider-role-mapping/service.d.ts.map +1 -1
- package/dist/core/entities/identity-provider-role-mapping/service.mjs +2 -0
- package/dist/core/entities/identity-provider-role-mapping/service.mjs.map +1 -1
- package/dist/core/entities/permission/service.mjs +1 -1
- package/dist/core/entities/policy/attributes-validator.mjs +1 -1
- package/dist/core/entities/policy/service.mjs +1 -1
- package/dist/core/entities/realm/service.mjs +1 -1
- package/dist/core/entities/robot/service.d.ts.map +1 -1
- package/dist/core/entities/robot/service.mjs +29 -8
- package/dist/core/entities/robot/service.mjs.map +1 -1
- package/dist/core/entities/robot/types.d.ts +4 -1
- package/dist/core/entities/robot/types.d.ts.map +1 -1
- package/dist/core/entities/role/service.mjs +1 -1
- package/dist/core/entities/role/types.d.ts +3 -0
- package/dist/core/entities/role/types.d.ts.map +1 -1
- package/dist/core/entities/role-attribute/service.d.ts +2 -0
- package/dist/core/entities/role-attribute/service.d.ts.map +1 -1
- package/dist/core/entities/role-attribute/service.mjs +7 -3
- package/dist/core/entities/role-attribute/service.mjs.map +1 -1
- package/dist/core/entities/scope/service.mjs +1 -1
- package/dist/core/entities/user/service.d.ts.map +1 -1
- package/dist/core/entities/user/service.mjs +10 -12
- package/dist/core/entities/user/service.mjs.map +1 -1
- package/dist/core/entities/user/types.d.ts +4 -1
- package/dist/core/entities/user/types.d.ts.map +1 -1
- package/dist/core/entities/user-attribute/service.d.ts +3 -1
- package/dist/core/entities/user-attribute/service.d.ts.map +1 -1
- package/dist/core/entities/user-attribute/service.mjs +44 -17
- package/dist/core/entities/user-attribute/service.mjs.map +1 -1
- package/dist/core/identity/index.d.ts +1 -0
- package/dist/core/identity/index.d.ts.map +1 -1
- package/dist/core/identity/index.mjs +2 -1
- package/dist/core/identity/permission/module.d.ts +12 -6
- package/dist/core/identity/permission/module.d.ts.map +1 -1
- package/dist/core/identity/permission/module.mjs +11 -19
- package/dist/core/identity/permission/module.mjs.map +1 -1
- package/dist/core/identity/permission/types.d.ts +11 -13
- package/dist/core/identity/permission/types.d.ts.map +1 -1
- package/dist/core/identity/role/index.d.ts +3 -0
- package/dist/core/identity/role/index.d.ts.map +1 -0
- package/dist/core/identity/role/index.mjs +2 -0
- package/dist/core/identity/role/module.d.ts +15 -0
- package/dist/core/identity/role/module.d.ts.map +1 -0
- package/dist/core/identity/role/module.mjs +27 -0
- package/dist/core/identity/role/module.mjs.map +1 -0
- package/dist/core/identity/role/types.d.ts +14 -0
- package/dist/core/identity/role/types.d.ts.map +1 -0
- package/dist/core/identity/role/types.mjs +1 -0
- package/dist/core/index.mjs +2 -1
- package/dist/core/oauth2/token/issuer/access/module.d.ts +4 -1
- package/dist/core/oauth2/token/issuer/access/module.d.ts.map +1 -1
- package/dist/core/oauth2/token/issuer/access/module.mjs +24 -2
- package/dist/core/oauth2/token/issuer/access/module.mjs.map +1 -1
- package/dist/core/provisioning/entities/permission/types.d.ts +8 -0
- package/dist/core/provisioning/entities/permission/types.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/permission/module.d.ts +5 -1
- package/dist/core/provisioning/synchronizer/permission/module.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/permission/module.mjs +23 -0
- package/dist/core/provisioning/synchronizer/permission/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/permission/types.d.ts +4 -1
- package/dist/core/provisioning/synchronizer/permission/types.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/policy/module.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/policy/module.mjs +4 -2
- package/dist/core/provisioning/synchronizer/policy/module.mjs.map +1 -1
- package/dist/index.mjs +18 -20
- package/dist/path.d.ts +2 -1
- package/dist/path.d.ts.map +1 -1
- package/dist/path.mjs +3 -2
- package/dist/path.mjs.map +1 -1
- package/dist/swagger.json +14 -0
- package/dist/ui/client/.vite/ssr-manifest.json +2777 -0
- package/dist/ui/client/assets/fa-brands-400-BP5tdqmh.woff2 +0 -0
- package/dist/ui/client/assets/fa-regular-400-nyy7hhHF.woff2 +0 -0
- package/dist/ui/client/assets/fa-solid-900-DRAAbZTg.woff2 +0 -0
- package/dist/ui/client/assets/index-AHa03lX_.js +41 -0
- package/dist/ui/client/assets/index-BVfayRKv.css +1 -0
- package/dist/ui/client/index.html +22 -0
- package/dist/ui/server/assets/multipart-parser-pHQi-kA6.js +166 -0
- package/dist/ui/server/server.js +79102 -0
- package/package.json +30 -13
- package/dist/adapters/database/domains/client/repository.d.ts +0 -13
- package/dist/adapters/database/domains/client/repository.d.ts.map +0 -1
- package/dist/adapters/database/domains/client/repository.mjs +0 -75
- package/dist/adapters/database/domains/client/repository.mjs.map +0 -1
- package/dist/adapters/database/domains/robot/repository.d.ts +0 -13
- package/dist/adapters/database/domains/robot/repository.d.ts.map +0 -1
- package/dist/adapters/database/domains/robot/repository.mjs +0 -75
- package/dist/adapters/database/domains/robot/repository.mjs.map +0 -1
- package/dist/adapters/http/controllers/entities/user-attribute/utils/authorization.d.ts +0 -4
- package/dist/adapters/http/controllers/entities/user-attribute/utils/authorization.d.ts.map +0 -1
- package/dist/adapters/http/controllers/entities/user-attribute/utils/authorization.mjs +0 -35
- package/dist/adapters/http/controllers/entities/user-attribute/utils/authorization.mjs.map +0 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@authup/server-core",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.0-beta.
|
|
4
|
+
"version": "1.0.0-beta.38",
|
|
5
5
|
"description": "This is a standalone application.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"main": "dist/index.mjs",
|
|
@@ -15,12 +15,14 @@
|
|
|
15
15
|
"cli-dev": "npm run build:server && npm run cli",
|
|
16
16
|
"cli-dev-src": "nodemon --watch src --exec \"npm run build:server && node dist/cli/index.mjs\"",
|
|
17
17
|
"cli-dev-dist": "nodemon --watch dist --exec \"node dist/cli/index.mjs\"",
|
|
18
|
-
"build:client": "
|
|
18
|
+
"build:ui:client": "vite build --config ui/vite.config.ts --ssrManifest .vite/ssr-manifest.json --outDir ../dist/ui/client ui",
|
|
19
|
+
"build:ui:server": "vite build --config ui/vite.config.ts --ssr src/server.ts --outDir ../dist/ui/server ui",
|
|
20
|
+
"build:ui": "npm run build:ui:server && npm run build:ui:client",
|
|
19
21
|
"build:server:types": "tsc --emitDeclarationOnly -p tsconfig.build.json",
|
|
20
22
|
"build:server:js": "tsdown",
|
|
21
|
-
"build:server": "
|
|
23
|
+
"build:server": "npm run build:server:js && npm run build:server:types",
|
|
22
24
|
"build:swagger": "npm run cli -- swagger generate",
|
|
23
|
-
"build": "npm run build:
|
|
25
|
+
"build": "rimraf ./dist && npm run build:server && npm run build:ui && npm run build:swagger",
|
|
24
26
|
"test": "cross-env NODE_ENV=test vitest run --config test/vitest.config.ts",
|
|
25
27
|
"test:mysql": "cross-env DB_TYPE=mysql DB_HOST=127.0.0.1 DB_USERNAME=root DB_PASSWORD=start123 DB_DATABASE=app vitest run --config test/vitest.config.ts",
|
|
26
28
|
"test:psql": "cross-env DB_TYPE=postgres DB_HOST=127.0.0.1 DB_USERNAME=postgres DB_PASSWORD=start123 DB_DATABASE=app vitest run --config test/vitest.config.ts",
|
|
@@ -65,13 +67,13 @@
|
|
|
65
67
|
},
|
|
66
68
|
"homepage": "https://github.com/authup/authup#readme",
|
|
67
69
|
"dependencies": {
|
|
68
|
-
"@authup/access": "^1.0.0-beta.
|
|
69
|
-
"@authup/core-http-kit": "^1.0.0-beta.
|
|
70
|
-
"@authup/core-kit": "^1.0.0-beta.
|
|
71
|
-
"@authup/errors": "^1.0.0-beta.
|
|
72
|
-
"@authup/kit": "^1.0.0-beta.
|
|
73
|
-
"@authup/server-kit": "^1.0.0-beta.
|
|
74
|
-
"@authup/specs": "^1.0.0-beta.
|
|
70
|
+
"@authup/access": "^1.0.0-beta.38",
|
|
71
|
+
"@authup/core-http-kit": "^1.0.0-beta.38",
|
|
72
|
+
"@authup/core-kit": "^1.0.0-beta.38",
|
|
73
|
+
"@authup/errors": "^1.0.0-beta.38",
|
|
74
|
+
"@authup/kit": "^1.0.0-beta.38",
|
|
75
|
+
"@authup/server-kit": "^1.0.0-beta.38",
|
|
76
|
+
"@authup/specs": "^1.0.0-beta.38",
|
|
75
77
|
"@ebec/http": "^2.3.0",
|
|
76
78
|
"@hapic/oauth2": "^3.2.0",
|
|
77
79
|
"@routup/assets": "^3.4.2",
|
|
@@ -113,21 +115,36 @@
|
|
|
113
115
|
"zod": "^4.3.6"
|
|
114
116
|
},
|
|
115
117
|
"devDependencies": {
|
|
116
|
-
"@authup/client-web-
|
|
118
|
+
"@authup/client-web-kit": "^1.0.0-beta.38",
|
|
117
119
|
"@faker-js/faker": "^10.4.0",
|
|
120
|
+
"@fortawesome/fontawesome-free": "^7.2.0",
|
|
118
121
|
"@types/cors": "^2.8.19",
|
|
119
122
|
"@types/ldapjs": "^3.0.6",
|
|
120
123
|
"@types/morgan": "^1.9.10",
|
|
121
124
|
"@types/supertest": "^7.2.0",
|
|
122
125
|
"@vitejs/plugin-vue": "^6.0.5",
|
|
126
|
+
"@vuecs/countdown": "^1.0.1",
|
|
127
|
+
"@vuecs/form-controls": "^2.5.0",
|
|
128
|
+
"@vuecs/list-controls": "^2.0.1",
|
|
129
|
+
"@vuecs/navigation": "^2.4.1",
|
|
130
|
+
"@vuecs/pagination": "^1.3.1",
|
|
131
|
+
"@vuecs/preset-bootstrap-v5": "^2.0.1",
|
|
132
|
+
"@vuecs/preset-font-awesome": "^1.1.1",
|
|
133
|
+
"@vuecs/timeago": "^1.1.2",
|
|
134
|
+
"@vuelidate/core": "^2.0.3",
|
|
135
|
+
"@vuelidate/validators": "^2.0.4",
|
|
136
|
+
"bootstrap": "^5.3.8",
|
|
123
137
|
"jest-serial-runner": "^1.2.1",
|
|
124
138
|
"nodemon": "^3.1.14",
|
|
139
|
+
"pinia": "^3.0.0",
|
|
125
140
|
"supertest": "^7.2.2",
|
|
126
141
|
"testcontainers": "^11.14.0",
|
|
127
142
|
"ts-node": "^10.8.2",
|
|
128
143
|
"unplugin-swc": "^1.5.9",
|
|
129
144
|
"vite": "^8.0.9",
|
|
130
|
-
"vitest": "^4.0.14"
|
|
145
|
+
"vitest": "^4.0.14",
|
|
146
|
+
"vue": "^3.5.32",
|
|
147
|
+
"vue-router": "^5.0.4"
|
|
131
148
|
},
|
|
132
149
|
"publishConfig": {
|
|
133
150
|
"access": "public"
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Client, Role } from '@authup/core-kit';
|
|
2
|
-
import type { PermissionPolicyBinding } from '@authup/access';
|
|
3
|
-
import type { DataSource, EntityManager } from 'typeorm';
|
|
4
|
-
import { Repository } from 'typeorm';
|
|
5
|
-
import { ClientEntity } from './entity.ts';
|
|
6
|
-
export declare class ClientRepository extends Repository<ClientEntity> {
|
|
7
|
-
#private;
|
|
8
|
-
constructor(instance: DataSource | EntityManager);
|
|
9
|
-
getBoundRoles(entity: string | Client): Promise<Role[]>;
|
|
10
|
-
getBoundPermissions(entity: string | Client): Promise<PermissionPolicyBinding[]>;
|
|
11
|
-
private loadPolicyTrees;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=repository.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/database/domains/client/repository.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAc,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAmB,UAAU,EAAE,MAAM,SAAS,CAAC;AAKtD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,qBAAa,gBAAiB,SAAQ,UAAU,CAAC,YAAY,CAAC;;gBAG9C,QAAQ,EAAE,UAAU,GAAG,aAAa;IAK1C,aAAa,CACf,MAAM,EAAE,MAAM,GAAG,MAAM,GACvB,OAAO,CAAC,IAAI,EAAE,CAAC;IAyBb,mBAAmB,CACrB,MAAM,EAAE,MAAM,GAAG,MAAM,GACvB,OAAO,CAAC,uBAAuB,EAAE,CAAC;YA4CxB,eAAe;CAiBhC"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { CachePrefix } from "../constants.mjs";
|
|
2
|
-
import { ClientEntity } from "./entity.mjs";
|
|
3
|
-
import { PolicyRepository } from "../policy/repository.mjs";
|
|
4
|
-
import "../policy/index.mjs";
|
|
5
|
-
import { ClientPermissionEntity } from "../client-permission/entity.mjs";
|
|
6
|
-
import "../client-permission/index.mjs";
|
|
7
|
-
import { ClientRoleEntity } from "../client-role/entity.mjs";
|
|
8
|
-
import "../client-role/index.mjs";
|
|
9
|
-
import { InstanceChecker, Repository } from "typeorm";
|
|
10
|
-
import { buildRedisKeyPath } from "@authup/server-kit";
|
|
11
|
-
//#region src/adapters/database/domains/client/repository.ts
|
|
12
|
-
var ClientRepository = class extends Repository {
|
|
13
|
-
#manager;
|
|
14
|
-
constructor(instance) {
|
|
15
|
-
super(ClientEntity, InstanceChecker.isDataSource(instance) ? instance.manager : instance);
|
|
16
|
-
this.#manager = InstanceChecker.isDataSource(instance) ? instance.manager : instance;
|
|
17
|
-
}
|
|
18
|
-
async getBoundRoles(entity) {
|
|
19
|
-
let id;
|
|
20
|
-
if (typeof entity === "string") id = entity;
|
|
21
|
-
else id = entity.id;
|
|
22
|
-
return (await this.manager.getRepository(ClientRoleEntity).find({
|
|
23
|
-
where: { client_id: id },
|
|
24
|
-
relations: { role: true },
|
|
25
|
-
cache: {
|
|
26
|
-
id: buildRedisKeyPath({
|
|
27
|
-
prefix: CachePrefix.CLIENT_OWNED_ROLES,
|
|
28
|
-
key: id
|
|
29
|
-
}),
|
|
30
|
-
milliseconds: 6e4
|
|
31
|
-
}
|
|
32
|
-
})).map((entity) => entity.role);
|
|
33
|
-
}
|
|
34
|
-
async getBoundPermissions(entity) {
|
|
35
|
-
let id;
|
|
36
|
-
if (typeof entity === "string") id = entity;
|
|
37
|
-
else id = entity.id;
|
|
38
|
-
const entities = await this.manager.getRepository(ClientPermissionEntity).find({
|
|
39
|
-
where: { client_id: id },
|
|
40
|
-
relations: { permission: true },
|
|
41
|
-
cache: {
|
|
42
|
-
id: buildRedisKeyPath({
|
|
43
|
-
prefix: CachePrefix.CLIENT_OWNED_PERMISSIONS,
|
|
44
|
-
key: id
|
|
45
|
-
}),
|
|
46
|
-
milliseconds: 6e4
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
const policyIds = /* @__PURE__ */ new Set();
|
|
50
|
-
for (const entry of entities) if (entry.policy_id) policyIds.add(entry.policy_id);
|
|
51
|
-
const policyTrees = await this.loadPolicyTrees([...policyIds]);
|
|
52
|
-
return entities.map((entry) => {
|
|
53
|
-
const policies = [];
|
|
54
|
-
if (entry.policy_id && policyTrees[entry.policy_id]) policies.push(policyTrees[entry.policy_id]);
|
|
55
|
-
return {
|
|
56
|
-
permission: entry.permission,
|
|
57
|
-
policies: policies.length > 0 ? policies : void 0
|
|
58
|
-
};
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
async loadPolicyTrees(policyIds) {
|
|
62
|
-
if (policyIds.length === 0) return {};
|
|
63
|
-
const policyRepository = new PolicyRepository(this.#manager);
|
|
64
|
-
const result = {};
|
|
65
|
-
for (const id of policyIds) {
|
|
66
|
-
const tree = await policyRepository.findDescendantsTreeById(id);
|
|
67
|
-
if (tree) result[id] = tree;
|
|
68
|
-
}
|
|
69
|
-
return result;
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
//#endregion
|
|
73
|
-
export { ClientRepository };
|
|
74
|
-
|
|
75
|
-
//# sourceMappingURL=repository.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["buildRedisKeyPath","InstanceChecker","Repository","CachePrefix","ClientPermissionEntity","ClientRoleEntity","PolicyRepository","ClientEntity","ClientRepository","instance","isDataSource","manager","getBoundRoles","entity","id","entities","getRepository","find","where","client_id","relations","role","cache","prefix","CLIENT_OWNED_ROLES","key","milliseconds","map","getBoundPermissions","repository","permission","CLIENT_OWNED_PERMISSIONS","policyIds","Set","entry","policy_id","add","policyTrees","loadPolicyTrees","policies","push","length","undefined","policyRepository","result","tree","findDescendantsTreeById"],"sources":["../../../../../src/adapters/database/domains/client/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client, Role } from '@authup/core-kit';\nimport type { BasePolicy, PermissionPolicyBinding } from '@authup/access';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type { DataSource, EntityManager } from 'typeorm';\nimport { InstanceChecker, Repository } from 'typeorm';\nimport { CachePrefix } from '../constants.ts';\nimport { ClientPermissionEntity } from '../client-permission/index.ts';\nimport { ClientRoleEntity } from '../client-role/index.ts';\nimport { PolicyRepository } from '../policy/index.ts';\nimport { ClientEntity } from './entity.ts';\n\nexport class ClientRepository extends Repository<ClientEntity> {\n #manager: EntityManager;\n\n constructor(instance: DataSource | EntityManager) {\n super(ClientEntity, InstanceChecker.isDataSource(instance) ? instance.manager : instance);\n this.#manager = InstanceChecker.isDataSource(instance) ? instance.manager : instance;\n }\n\n async getBoundRoles(\n entity: string | Client,\n ) : Promise<Role[]> {\n let id : string;\n if (typeof entity === 'string') {\n id = entity;\n } else {\n id = entity.id;\n }\n\n const entities = await this.manager\n .getRepository(ClientRoleEntity)\n .find({\n where: { client_id: id },\n relations: { role: true },\n cache: {\n id: buildRedisKeyPath({\n prefix: CachePrefix.CLIENT_OWNED_ROLES,\n key: id,\n }),\n milliseconds: 60_000,\n },\n });\n\n return entities.map((entity) => entity.role);\n }\n\n async getBoundPermissions(\n entity: string | Client,\n ) : Promise<PermissionPolicyBinding[]> {\n let id : string;\n if (typeof entity === 'string') {\n id = entity;\n } else {\n id = entity.id;\n }\n\n const repository = this.manager.getRepository(ClientPermissionEntity);\n\n const entities = await repository.find({\n where: { client_id: id },\n relations: { permission: true },\n cache: {\n id: buildRedisKeyPath({\n prefix: CachePrefix.CLIENT_OWNED_PERMISSIONS,\n key: id,\n }),\n milliseconds: 60_000,\n },\n });\n\n const policyIds = new Set<string>();\n for (const entry of entities) {\n if (entry.policy_id) {\n policyIds.add(entry.policy_id);\n }\n }\n\n const policyTrees = await this.loadPolicyTrees([...policyIds]);\n\n return entities.map((entry) => {\n const policies: BasePolicy[] = [];\n if (entry.policy_id && policyTrees[entry.policy_id]) {\n policies.push(policyTrees[entry.policy_id]);\n }\n\n return {\n permission: entry.permission,\n policies: policies.length > 0 ? policies : undefined,\n };\n });\n }\n\n private async loadPolicyTrees(policyIds: string[]): Promise<Record<string, BasePolicy>> {\n if (policyIds.length === 0) {\n return {};\n }\n\n const policyRepository = new PolicyRepository(this.#manager);\n const result: Record<string, BasePolicy> = {};\n\n for (const id of policyIds) {\n const tree = await policyRepository.findDescendantsTreeById(id);\n if (tree) {\n result[id] = tree;\n }\n }\n\n return result;\n }\n}\n"],"mappings":";;;;;;;;;;;AAkBA,IAAaQ,mBAAb,cAAsCN,WAAAA;CAClC;CAEA,YAAYO,UAAsC;AAC9C,QAAMF,cAAcN,gBAAgBS,aAAaD,SAAAA,GAAYA,SAASE,UAAUF,SAAAA;AAChF,QAAA,UAAgBR,gBAAgBS,aAAaD,SAAAA,GAAYA,SAASE,UAAUF;;CAGhF,MAAMG,cACFC,QACgB;EAChB,IAAIC;AACJ,MAAI,OAAOD,WAAW,SAClBC,MAAKD;MAELC,MAAKD,OAAOC;AAiBhB,UAAOC,MAdgB,KAAKJ,QACvBK,cAAcX,iBAAAA,CACdY,KAAK;GACFC,OAAO,EAAEC,WAAWL,IAAG;GACvBM,WAAW,EAAEC,MAAM,MAAK;GACxBC,OAAO;IACHR,IAAId,kBAAkB;KAClBuB,QAAQpB,YAAYqB;KACpBC,KAAKX;KACT,CAAA;IACAY,cAAc;IAClB;GACJ,CAAA,EAEYC,KAAKd,WAAWA,OAAOQ,KAAI;;CAG/C,MAAMO,oBACFf,QACmC;EACnC,IAAIC;AACJ,MAAI,OAAOD,WAAW,SAClBC,MAAKD;MAELC,MAAKD,OAAOC;EAKhB,MAAMC,WAAW,MAFE,KAAKJ,QAAQK,cAAcZ,uBAEvByB,CAAWZ,KAAK;GACnCC,OAAO,EAAEC,WAAWL,IAAG;GACvBM,WAAW,EAAEU,YAAY,MAAK;GAC9BR,OAAO;IACHR,IAAId,kBAAkB;KAClBuB,QAAQpB,YAAY4B;KACpBN,KAAKX;KACT,CAAA;IACAY,cAAc;IAClB;GACJ,CAAA;EAEA,MAAMM,4BAAY,IAAIC,KAAAA;AACtB,OAAK,MAAMC,SAASnB,SAChB,KAAImB,MAAMC,UACNH,WAAUI,IAAIF,MAAMC,UAAS;EAIrC,MAAME,cAAc,MAAM,KAAKC,gBAAgB,CAAA,GAAIN,UAAU,CAAA;AAE7D,SAAOjB,SAASY,KAAKO,UAAAA;GACjB,MAAMK,WAAyB,EAAE;AACjC,OAAIL,MAAMC,aAAaE,YAAYH,MAAMC,WACrCI,UAASC,KAAKH,YAAYH,MAAMC,WAAU;AAG9C,UAAO;IACHL,YAAaI,MAAMJ;IACnBS,UAAUA,SAASE,SAAS,IAAIF,WAAWG,KAAAA;IAC/C;IACJ;;CAGJ,MAAcJ,gBAAgBN,WAA0D;AACpF,MAAIA,UAAUS,WAAW,EACrB,QAAO,EAAC;EAGZ,MAAME,mBAAmB,IAAIrC,iBAAiB,MAAA,QAAa;EAC3D,MAAMsC,SAAqC,EAAC;AAE5C,OAAK,MAAM9B,MAAMkB,WAAW;GACxB,MAAMa,OAAO,MAAMF,iBAAiBG,wBAAwBhC,GAAAA;AAC5D,OAAI+B,KACAD,QAAO9B,MAAM+B;;AAIrB,SAAOD"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Robot, Role } from '@authup/core-kit';
|
|
2
|
-
import type { PermissionPolicyBinding } from '@authup/access';
|
|
3
|
-
import type { DataSource, EntityManager } from 'typeorm';
|
|
4
|
-
import { Repository } from 'typeorm';
|
|
5
|
-
import { RobotEntity } from './entity.ts';
|
|
6
|
-
export declare class RobotRepository extends Repository<RobotEntity> {
|
|
7
|
-
#private;
|
|
8
|
-
constructor(instance: DataSource | EntityManager);
|
|
9
|
-
getBoundRoles(entity: string | Robot): Promise<Role[]>;
|
|
10
|
-
getBoundPermissions(entity: string | Robot): Promise<PermissionPolicyBinding[]>;
|
|
11
|
-
private loadPolicyTrees;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=repository.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/database/domains/robot/repository.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,KAAK,EACL,IAAI,EACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAc,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAmB,UAAU,EAAE,MAAM,SAAS,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C,qBAAa,eAAgB,SAAQ,UAAU,CAAC,WAAW,CAAC;;gBAG5C,QAAQ,EAAE,UAAU,GAAG,aAAa;IAK1C,aAAa,CACf,MAAM,EAAE,MAAM,GAAG,KAAK,GACtB,OAAO,CAAC,IAAI,EAAE,CAAC;IA0Bb,mBAAmB,CACrB,MAAM,EAAE,MAAM,GAAG,KAAK,GACtB,OAAO,CAAC,uBAAuB,EAAE,CAAC;YA6CxB,eAAe;CAiBhC"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { CachePrefix } from "../constants.mjs";
|
|
2
|
-
import { PolicyRepository } from "../policy/repository.mjs";
|
|
3
|
-
import "../policy/index.mjs";
|
|
4
|
-
import { RobotEntity } from "./entity.mjs";
|
|
5
|
-
import { RobotRoleEntity } from "../robot-role/entity.mjs";
|
|
6
|
-
import "../robot-role/index.mjs";
|
|
7
|
-
import { RobotPermissionEntity } from "../robot-permission/entity.mjs";
|
|
8
|
-
import "../robot-permission/index.mjs";
|
|
9
|
-
import { InstanceChecker, Repository } from "typeorm";
|
|
10
|
-
import { buildRedisKeyPath } from "@authup/server-kit";
|
|
11
|
-
//#region src/adapters/database/domains/robot/repository.ts
|
|
12
|
-
var RobotRepository = class extends Repository {
|
|
13
|
-
#manager;
|
|
14
|
-
constructor(instance) {
|
|
15
|
-
super(RobotEntity, InstanceChecker.isDataSource(instance) ? instance.manager : instance);
|
|
16
|
-
this.#manager = InstanceChecker.isDataSource(instance) ? instance.manager : instance;
|
|
17
|
-
}
|
|
18
|
-
async getBoundRoles(entity) {
|
|
19
|
-
let id;
|
|
20
|
-
if (typeof entity === "string") id = entity;
|
|
21
|
-
else id = entity.id;
|
|
22
|
-
return (await this.manager.getRepository(RobotRoleEntity).find({
|
|
23
|
-
where: { robot_id: id },
|
|
24
|
-
relations: { role: true },
|
|
25
|
-
cache: {
|
|
26
|
-
id: buildRedisKeyPath({
|
|
27
|
-
prefix: CachePrefix.ROBOT_OWNED_ROLES,
|
|
28
|
-
key: id
|
|
29
|
-
}),
|
|
30
|
-
milliseconds: 6e4
|
|
31
|
-
}
|
|
32
|
-
})).map((entity) => entity.role);
|
|
33
|
-
}
|
|
34
|
-
async getBoundPermissions(entity) {
|
|
35
|
-
let id;
|
|
36
|
-
if (typeof entity === "string") id = entity;
|
|
37
|
-
else id = entity.id;
|
|
38
|
-
const entities = await this.manager.getRepository(RobotPermissionEntity).find({
|
|
39
|
-
where: { robot_id: id },
|
|
40
|
-
relations: { permission: true },
|
|
41
|
-
cache: {
|
|
42
|
-
id: buildRedisKeyPath({
|
|
43
|
-
prefix: CachePrefix.ROBOT_OWNED_PERMISSIONS,
|
|
44
|
-
key: id
|
|
45
|
-
}),
|
|
46
|
-
milliseconds: 6e4
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
const policyIds = /* @__PURE__ */ new Set();
|
|
50
|
-
for (const entry of entities) if (entry.policy_id) policyIds.add(entry.policy_id);
|
|
51
|
-
const policyTrees = await this.loadPolicyTrees([...policyIds]);
|
|
52
|
-
return entities.map((entry) => {
|
|
53
|
-
const policies = [];
|
|
54
|
-
if (entry.policy_id && policyTrees[entry.policy_id]) policies.push(policyTrees[entry.policy_id]);
|
|
55
|
-
return {
|
|
56
|
-
permission: entry.permission,
|
|
57
|
-
policies: policies.length > 0 ? policies : void 0
|
|
58
|
-
};
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
async loadPolicyTrees(policyIds) {
|
|
62
|
-
if (policyIds.length === 0) return {};
|
|
63
|
-
const policyRepository = new PolicyRepository(this.#manager);
|
|
64
|
-
const result = {};
|
|
65
|
-
for (const id of policyIds) {
|
|
66
|
-
const tree = await policyRepository.findDescendantsTreeById(id);
|
|
67
|
-
if (tree) result[id] = tree;
|
|
68
|
-
}
|
|
69
|
-
return result;
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
//#endregion
|
|
73
|
-
export { RobotRepository };
|
|
74
|
-
|
|
75
|
-
//# sourceMappingURL=repository.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["buildRedisKeyPath","InstanceChecker","Repository","CachePrefix","RobotEntity","RobotRoleEntity","RobotPermissionEntity","PolicyRepository","RobotRepository","instance","isDataSource","manager","getBoundRoles","entity","id","entities","getRepository","find","where","robot_id","relations","role","cache","prefix","ROBOT_OWNED_ROLES","key","milliseconds","map","getBoundPermissions","repository","permission","ROBOT_OWNED_PERMISSIONS","policyIds","Set","entry","policy_id","add","policyTrees","loadPolicyTrees","policies","push","length","undefined","policyRepository","result","tree","findDescendantsTreeById"],"sources":["../../../../../src/adapters/database/domains/robot/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n Robot,\n Role,\n} from '@authup/core-kit';\nimport type { BasePolicy, PermissionPolicyBinding } from '@authup/access';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type { DataSource, EntityManager } from 'typeorm';\nimport { InstanceChecker, Repository } from 'typeorm';\nimport { CachePrefix } from '../constants.ts';\nimport { RobotEntity } from './entity.ts';\nimport { RobotRoleEntity } from '../robot-role/index.ts';\nimport { RobotPermissionEntity } from '../robot-permission/index.ts';\nimport { PolicyRepository } from '../policy/index.ts';\n\nexport class RobotRepository extends Repository<RobotEntity> {\n #manager: EntityManager;\n\n constructor(instance: DataSource | EntityManager) {\n super(RobotEntity, InstanceChecker.isDataSource(instance) ? instance.manager : instance);\n this.#manager = InstanceChecker.isDataSource(instance) ? instance.manager : instance;\n }\n\n async getBoundRoles(\n entity: string | Robot,\n ) : Promise<Role[]> {\n let id : string;\n if (typeof entity === 'string') {\n id = entity;\n } else {\n id = entity.id;\n }\n\n const entities = await this.manager\n .getRepository(RobotRoleEntity)\n .find({\n where: { robot_id: id },\n relations: { role: true },\n cache: {\n id: buildRedisKeyPath({\n prefix: CachePrefix.ROBOT_OWNED_ROLES,\n key: id,\n }),\n milliseconds: 60_000,\n },\n });\n\n return entities\n .map((entity) => entity.role);\n }\n\n async getBoundPermissions(\n entity: string | Robot,\n ) : Promise<PermissionPolicyBinding[]> {\n let id : string;\n if (typeof entity === 'string') {\n id = entity;\n } else {\n id = entity.id;\n }\n\n const repository = this.manager.getRepository(RobotPermissionEntity);\n\n const entities = await repository.find({\n where: { robot_id: id },\n relations: { permission: true },\n cache: {\n id: buildRedisKeyPath({\n prefix: CachePrefix.ROBOT_OWNED_PERMISSIONS,\n key: id,\n }),\n milliseconds: 60_000,\n },\n });\n\n const policyIds = new Set<string>();\n for (const entry of entities) {\n if (entry.policy_id) {\n policyIds.add(entry.policy_id);\n }\n }\n\n const policyTrees = await this.loadPolicyTrees([...policyIds]);\n\n return entities\n .map((entry) => {\n const policies: BasePolicy[] = [];\n if (entry.policy_id && policyTrees[entry.policy_id]) {\n policies.push(policyTrees[entry.policy_id]);\n }\n\n return {\n permission: entry.permission,\n policies: policies.length > 0 ? policies : undefined,\n };\n });\n }\n\n private async loadPolicyTrees(policyIds: string[]): Promise<Record<string, BasePolicy>> {\n if (policyIds.length === 0) {\n return {};\n }\n\n const policyRepository = new PolicyRepository(this.#manager);\n const result: Record<string, BasePolicy> = {};\n\n for (const id of policyIds) {\n const tree = await policyRepository.findDescendantsTreeById(id);\n if (tree) {\n result[id] = tree;\n }\n }\n\n return result;\n }\n}\n"],"mappings":";;;;;;;;;;;AAqBA,IAAaQ,kBAAb,cAAqCN,WAAAA;CACjC;CAEA,YAAYO,UAAsC;AAC9C,QAAML,aAAaH,gBAAgBS,aAAaD,SAAAA,GAAYA,SAASE,UAAUF,SAAAA;AAC/E,QAAA,UAAgBR,gBAAgBS,aAAaD,SAAAA,GAAYA,SAASE,UAAUF;;CAGhF,MAAMG,cACFC,QACgB;EAChB,IAAIC;AACJ,MAAI,OAAOD,WAAW,SAClBC,MAAKD;MAELC,MAAKD,OAAOC;AAiBhB,UAAOC,MAdgB,KAAKJ,QACvBK,cAAcX,gBAAAA,CACdY,KAAK;GACFC,OAAO,EAAEC,UAAUL,IAAG;GACtBM,WAAW,EAAEC,MAAM,MAAK;GACxBC,OAAO;IACHR,IAAId,kBAAkB;KAClBuB,QAAQpB,YAAYqB;KACpBC,KAAKX;KACT,CAAA;IACAY,cAAc;IAClB;GACJ,CAAA,EAGCC,KAAKd,WAAWA,OAAOQ,KAAI;;CAGpC,MAAMO,oBACFf,QACmC;EACnC,IAAIC;AACJ,MAAI,OAAOD,WAAW,SAClBC,MAAKD;MAELC,MAAKD,OAAOC;EAKhB,MAAMC,WAAW,MAFE,KAAKJ,QAAQK,cAAcV,sBAEvBuB,CAAWZ,KAAK;GACnCC,OAAO,EAAEC,UAAUL,IAAG;GACtBM,WAAW,EAAEU,YAAY,MAAK;GAC9BR,OAAO;IACHR,IAAId,kBAAkB;KAClBuB,QAAQpB,YAAY4B;KACpBN,KAAKX;KACT,CAAA;IACAY,cAAc;IAClB;GACJ,CAAA;EAEA,MAAMM,4BAAY,IAAIC,KAAAA;AACtB,OAAK,MAAMC,SAASnB,SAChB,KAAImB,MAAMC,UACNH,WAAUI,IAAIF,MAAMC,UAAS;EAIrC,MAAME,cAAc,MAAM,KAAKC,gBAAgB,CAAA,GAAIN,UAAU,CAAA;AAE7D,SAAOjB,SACFY,KAAKO,UAAAA;GACF,MAAMK,WAAyB,EAAE;AACjC,OAAIL,MAAMC,aAAaE,YAAYH,MAAMC,WACrCI,UAASC,KAAKH,YAAYH,MAAMC,WAAU;AAG9C,UAAO;IACHL,YAAaI,MAAMJ;IACnBS,UAAUA,SAASE,SAAS,IAAIF,WAAWG,KAAAA;IAC/C;IACJ;;CAGR,MAAcJ,gBAAgBN,WAA0D;AACpF,MAAIA,UAAUS,WAAW,EACrB,QAAO,EAAC;EAGZ,MAAME,mBAAmB,IAAIpC,iBAAiB,MAAA,QAAa;EAC3D,MAAMqC,SAAqC,EAAC;AAE5C,OAAK,MAAM9B,MAAMkB,WAAW;GACxB,MAAMa,OAAO,MAAMF,iBAAiBG,wBAAwBhC,GAAAA;AAC5D,OAAI+B,KACAD,QAAO9B,MAAM+B;;AAIrB,SAAOD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../../../../../../src/adapters/http/controllers/entities/user-attribute/utils/authorization.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,wBAAsB,6BAA6B,CAC/C,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,aAAa,GACrB,OAAO,CAAC,OAAO,CAAC,CAmCnB"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { useRequestPermissionEvaluator } from "../../../../request/permission/helper.mjs";
|
|
2
|
-
import { useRequestIdentity } from "../../../../request/helpers/identity.mjs";
|
|
3
|
-
import "../../../../request/index.mjs";
|
|
4
|
-
import { PermissionName } from "@authup/core-kit";
|
|
5
|
-
import { BuiltInPolicyType, PolicyData } from "@authup/access";
|
|
6
|
-
//#region src/adapters/http/controllers/entities/user-attribute/utils/authorization.ts
|
|
7
|
-
async function canRequestManageUserAttribute(req, entity) {
|
|
8
|
-
const permissionEvaluator = useRequestPermissionEvaluator(req);
|
|
9
|
-
const identity = useRequestIdentity(req);
|
|
10
|
-
const isMe = identity && identity.type === "user" && identity.id === entity.user_id;
|
|
11
|
-
try {
|
|
12
|
-
if (isMe) {
|
|
13
|
-
await permissionEvaluator.evaluate({
|
|
14
|
-
name: PermissionName.USER_SELF_MANAGE,
|
|
15
|
-
input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: entity })
|
|
16
|
-
});
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
} catch {
|
|
20
|
-
if (!isMe) return false;
|
|
21
|
-
}
|
|
22
|
-
if (!isMe) try {
|
|
23
|
-
await permissionEvaluator.evaluate({
|
|
24
|
-
name: PermissionName.USER_UPDATE,
|
|
25
|
-
input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: entity })
|
|
26
|
-
});
|
|
27
|
-
} catch {
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
//#endregion
|
|
33
|
-
export { canRequestManageUserAttribute };
|
|
34
|
-
|
|
35
|
-
//# sourceMappingURL=authorization.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authorization.mjs","names":["BuiltInPolicyType","PolicyData","PermissionName","useRequestIdentity","useRequestPermissionEvaluator","canRequestManageUserAttribute","req","entity","permissionEvaluator","identity","isMe","type","id","user_id","evaluate","name","USER_SELF_MANAGE","input","ATTRIBUTES","USER_UPDATE"],"sources":["../../../../../../../src/adapters/http/controllers/entities/user-attribute/utils/authorization.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BuiltInPolicyType, PolicyData } from '@authup/access';\nimport { PermissionName } from '@authup/core-kit';\nimport type { Request } from 'routup';\nimport type { UserAttribute } from '@authup/core-kit';\nimport { useRequestIdentity, useRequestPermissionEvaluator } from '../../../../request/index.ts';\n\nexport async function canRequestManageUserAttribute(\n req: Request,\n entity: UserAttribute,\n) : Promise<boolean> {\n const permissionEvaluator = useRequestPermissionEvaluator(req);\n const identity = useRequestIdentity(req);\n\n const isMe = identity &&\n identity.type === 'user' &&\n identity.id === entity.user_id;\n\n try {\n if (isMe) {\n await permissionEvaluator.evaluate({\n name: PermissionName.USER_SELF_MANAGE,\n input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: entity }),\n });\n\n return true;\n }\n } catch {\n if (!isMe) {\n return false;\n }\n }\n\n if (!isMe) {\n try {\n await permissionEvaluator.evaluate({\n name: PermissionName.USER_UPDATE,\n input: new PolicyData({ [BuiltInPolicyType.ATTRIBUTES]: entity }),\n });\n } catch {\n return false;\n }\n }\n\n return true;\n}\n"],"mappings":";;;;;;AAaA,eAAsBK,8BAClBC,KACAC,QAAqB;CAErB,MAAMC,sBAAsBJ,8BAA8BE,IAAAA;CAC1D,MAAMG,WAAWN,mBAAmBG,IAAAA;CAEpC,MAAMI,OAAOD,YACTA,SAASE,SAAS,UAClBF,SAASG,OAAOL,OAAOM;AAE3B,KAAI;AACA,MAAIH,MAAM;AACN,SAAMF,oBAAoBM,SAAS;IAC/BC,MAAMb,eAAec;IACrBC,OAAO,IAAIhB,WAAW,GAAGD,kBAAkBkB,aAAaX,QAAO,CAAA;IACnE,CAAA;AAEA,UAAO;;SAEP;AACJ,MAAI,CAACG,KACD,QAAO;;AAIf,KAAI,CAACA,KACD,KAAI;AACA,QAAMF,oBAAoBM,SAAS;GAC/BC,MAAMb,eAAeiB;GACrBF,OAAO,IAAIhB,WAAW,GAAGD,kBAAkBkB,aAAaX,QAAO,CAAA;GACnE,CAAA;SACI;AACJ,SAAO;;AAIf,QAAO"}
|