@things-factory/auth-base 6.1.145 → 6.1.146
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-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/service/privilege/privilege-query.d.ts +2 -1
- package/dist-server/service/privilege/privilege-query.js +13 -0
- package/dist-server/service/privilege/privilege-query.js.map +1 -1
- package/dist-server/service/user/user.d.ts +1 -0
- package/dist-server/service/user/user.js +4 -0
- package/dist-server/service/user/user.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/utils/get-user-domains.d.ts +1 -0
- package/dist-server/utils/get-user-domains.js +32 -1
- package/dist-server/utils/get-user-domains.js.map +1 -1
- package/package.json +2 -2
- package/server/service/privilege/privilege-query.ts +11 -1
- package/server/service/user/user.ts +5 -0
- package/server/utils/get-user-domains.ts +32 -2
|
@@ -2,4 +2,5 @@ import { Domain } from '@things-factory/shell';
|
|
|
2
2
|
import { User } from '../service/user/user';
|
|
3
3
|
export declare function getUserDomains(user: User): Promise<Domain[]>;
|
|
4
4
|
export declare function getRoleBasedDomains(user: User): Promise<Domain[]>;
|
|
5
|
+
export declare function getDomainsWithPrivilege(user: User, privilege: string, category: string): Promise<Domain[]>;
|
|
5
6
|
export declare function getDomainsAsOwner(user: User): Promise<Domain[]>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getDomainsAsOwner = exports.getRoleBasedDomains = exports.getUserDomains = void 0;
|
|
3
|
+
exports.getDomainsAsOwner = exports.getDomainsWithPrivilege = exports.getRoleBasedDomains = exports.getUserDomains = void 0;
|
|
4
4
|
const shell_1 = require("@things-factory/shell");
|
|
5
5
|
const user_1 = require("../service/user/user");
|
|
6
6
|
async function getUserDomains(user) {
|
|
@@ -49,6 +49,37 @@ async function getRoleBasedDomains(user) {
|
|
|
49
49
|
.getMany();
|
|
50
50
|
}
|
|
51
51
|
exports.getRoleBasedDomains = getRoleBasedDomains;
|
|
52
|
+
async function getDomainsWithPrivilege(user, privilege, category) {
|
|
53
|
+
return await (0, shell_1.getRepository)(shell_1.Domain)
|
|
54
|
+
.createQueryBuilder('DOMAIN')
|
|
55
|
+
.where(qb => {
|
|
56
|
+
const subQuery = qb
|
|
57
|
+
.subQuery()
|
|
58
|
+
.distinct(true)
|
|
59
|
+
.select('DOMAIN.id')
|
|
60
|
+
.from(user_1.User, 'USER')
|
|
61
|
+
.leftJoin('USER.roles', 'ROLE')
|
|
62
|
+
.leftJoin('ROLE.domain', 'DOMAIN')
|
|
63
|
+
.leftJoin('ROLE.privileges', 'PRIVILEGE')
|
|
64
|
+
.where('USER.id = :userId', { userId: user.id })
|
|
65
|
+
.andWhere('PRIVILEGE.name = :privilege', { privilege })
|
|
66
|
+
.andWhere('PRIVILEGE.category = :category', { category })
|
|
67
|
+
.getQuery();
|
|
68
|
+
return 'DOMAIN.id IN ' + subQuery;
|
|
69
|
+
})
|
|
70
|
+
.orWhere(qb => {
|
|
71
|
+
const subQuery = qb
|
|
72
|
+
.subQuery()
|
|
73
|
+
.select('DOMAIN.id')
|
|
74
|
+
.from(shell_1.Domain, 'DOMAIN')
|
|
75
|
+
.where('DOMAIN.owner = :userId', { userId: user.id })
|
|
76
|
+
.getQuery();
|
|
77
|
+
return 'DOMAIN.id IN ' + subQuery;
|
|
78
|
+
})
|
|
79
|
+
.orderBy('DOMAIN.name', 'ASC')
|
|
80
|
+
.getMany();
|
|
81
|
+
}
|
|
82
|
+
exports.getDomainsWithPrivilege = getDomainsWithPrivilege;
|
|
52
83
|
async function getDomainsAsOwner(user) {
|
|
53
84
|
return await (0, shell_1.getRepository)(shell_1.Domain).find({
|
|
54
85
|
where: { owner: user.id }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-user-domains.js","sourceRoot":"","sources":["../../server/utils/get-user-domains.ts"],"names":[],"mappings":";;;AAEA,iDAA6D;AAE7D,+CAA2C;AAEpC,KAAK,UAAU,cAAc,CAAC,IAAU;
|
|
1
|
+
{"version":3,"file":"get-user-domains.js","sourceRoot":"","sources":["../../server/utils/get-user-domains.ts"],"names":[],"mappings":"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","sourcesContent":["import { In } from 'typeorm'\n\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { User } from '../service/user/user'\n\nexport async function getUserDomains(user: User): Promise<Domain[]> {\n return await getRepository(Domain)\n .createQueryBuilder('DOMAIN')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .distinct(true)\n .select('DOMAIN.id')\n .from(User, 'USER')\n .leftJoin('USER.roles', 'ROLE')\n .leftJoin('ROLE.domain', 'DOMAIN')\n .where('USER.id = :userId', { userId: user.id })\n .getQuery()\n return 'DOMAIN.id IN ' + subQuery\n })\n .orWhere(qb => {\n const subQuery = qb\n .subQuery()\n .select('DOMAIN.id')\n .from(Domain, 'DOMAIN')\n .where('DOMAIN.owner = :userId', { userId: user.id })\n .getQuery()\n return 'DOMAIN.id IN ' + subQuery\n })\n .orderBy('DOMAIN.name', 'ASC')\n .getMany()\n}\n\nexport async function getRoleBasedDomains(user: User): Promise<Domain[]> {\n return await getRepository(Domain)\n .createQueryBuilder('DOMAIN')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .distinct(true)\n .select('DOMAIN.id')\n .from(User, 'USER')\n .leftJoin('USER.roles', 'ROLE')\n .leftJoin('ROLE.domain', 'DOMAIN')\n .where('USER.id = :userId', { userId: user.id })\n .getQuery()\n return 'DOMAIN.id IN ' + subQuery\n })\n .getMany()\n}\n\nexport async function getDomainsWithPrivilege(user: User, privilege: string, category: string): Promise<Domain[]> {\n return await getRepository(Domain)\n .createQueryBuilder('DOMAIN')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .distinct(true)\n .select('DOMAIN.id')\n .from(User, 'USER')\n .leftJoin('USER.roles', 'ROLE')\n .leftJoin('ROLE.domain', 'DOMAIN')\n .leftJoin('ROLE.privileges', 'PRIVILEGE')\n .where('USER.id = :userId', { userId: user.id })\n .andWhere('PRIVILEGE.name = :privilege', { privilege })\n .andWhere('PRIVILEGE.category = :category', { category })\n .getQuery()\n return 'DOMAIN.id IN ' + subQuery\n })\n .orWhere(qb => {\n const subQuery = qb\n .subQuery()\n .select('DOMAIN.id')\n .from(Domain, 'DOMAIN')\n .where('DOMAIN.owner = :userId', { userId: user.id })\n .getQuery()\n return 'DOMAIN.id IN ' + subQuery\n })\n .orderBy('DOMAIN.name', 'ASC')\n .getMany()\n}\n\nexport async function getDomainsAsOwner(user: User): Promise<Domain[]> {\n return await getRepository(Domain).find({\n where: { owner: user.id }\n })\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/auth-base",
|
|
3
|
-
"version": "6.1.
|
|
3
|
+
"version": "6.1.146",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "dist-client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"passport-jwt": "^4.0.0",
|
|
44
44
|
"passport-local": "^1.0.0"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "aa259261bbad566fd57b59848372675ca09329ce"
|
|
47
47
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
|
2
|
-
import { getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
|
|
2
|
+
import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
|
|
3
3
|
|
|
4
4
|
import { Role } from '../role/role'
|
|
5
5
|
import { User } from '../user/user'
|
|
@@ -38,6 +38,16 @@ export class PrivilegeQuery {
|
|
|
38
38
|
return await User.hasPrivilege(name, category, domain, user)
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
@Query(returns => [Domain], { description: 'To fetch domains with given privilege for user' })
|
|
42
|
+
async domainsWithPrivilege(
|
|
43
|
+
@Arg('name') name: string,
|
|
44
|
+
@Arg('category') category: string,
|
|
45
|
+
@Ctx() context: ResolverContext
|
|
46
|
+
): Promise<Domain[]> {
|
|
47
|
+
const { user } = context.state
|
|
48
|
+
return await User.getDomainsWithPrivilege(name, category, user)
|
|
49
|
+
}
|
|
50
|
+
|
|
41
51
|
@FieldResolver(type => String)
|
|
42
52
|
async description(@Root() privilege: Privilege, @Ctx() context: ResolverContext) {
|
|
43
53
|
const { t } = context
|
|
@@ -21,6 +21,7 @@ import { validatePasswordByRule } from '../../controllers/utils/password-rule'
|
|
|
21
21
|
import { AuthError } from '../../errors/auth-error'
|
|
22
22
|
import { SECRET } from '../../utils/get-secret'
|
|
23
23
|
import { Role } from '../role/role'
|
|
24
|
+
import { getDomainsWithPrivilege } from '../../utils/get-user-domains'
|
|
24
25
|
|
|
25
26
|
const ORMCONFIG = config.get('ormconfig', {})
|
|
26
27
|
const DATABASE_TYPE = ORMCONFIG.type
|
|
@@ -267,4 +268,8 @@ export class User {
|
|
|
267
268
|
|
|
268
269
|
return result[0].has_privilege > 0
|
|
269
270
|
}
|
|
271
|
+
|
|
272
|
+
static async getDomainsWithPrivilege(name: string, category: string, user: User) {
|
|
273
|
+
return getDomainsWithPrivilege(user, name, category)
|
|
274
|
+
}
|
|
270
275
|
}
|
|
@@ -5,7 +5,6 @@ import { Domain, getRepository } from '@things-factory/shell'
|
|
|
5
5
|
import { User } from '../service/user/user'
|
|
6
6
|
|
|
7
7
|
export async function getUserDomains(user: User): Promise<Domain[]> {
|
|
8
|
-
|
|
9
8
|
return await getRepository(Domain)
|
|
10
9
|
.createQueryBuilder('DOMAIN')
|
|
11
10
|
.where(qb => {
|
|
@@ -29,7 +28,7 @@ export async function getUserDomains(user: User): Promise<Domain[]> {
|
|
|
29
28
|
.getQuery()
|
|
30
29
|
return 'DOMAIN.id IN ' + subQuery
|
|
31
30
|
})
|
|
32
|
-
.orderBy('DOMAIN.name','ASC')
|
|
31
|
+
.orderBy('DOMAIN.name', 'ASC')
|
|
33
32
|
.getMany()
|
|
34
33
|
}
|
|
35
34
|
|
|
@@ -51,6 +50,37 @@ export async function getRoleBasedDomains(user: User): Promise<Domain[]> {
|
|
|
51
50
|
.getMany()
|
|
52
51
|
}
|
|
53
52
|
|
|
53
|
+
export async function getDomainsWithPrivilege(user: User, privilege: string, category: string): Promise<Domain[]> {
|
|
54
|
+
return await getRepository(Domain)
|
|
55
|
+
.createQueryBuilder('DOMAIN')
|
|
56
|
+
.where(qb => {
|
|
57
|
+
const subQuery = qb
|
|
58
|
+
.subQuery()
|
|
59
|
+
.distinct(true)
|
|
60
|
+
.select('DOMAIN.id')
|
|
61
|
+
.from(User, 'USER')
|
|
62
|
+
.leftJoin('USER.roles', 'ROLE')
|
|
63
|
+
.leftJoin('ROLE.domain', 'DOMAIN')
|
|
64
|
+
.leftJoin('ROLE.privileges', 'PRIVILEGE')
|
|
65
|
+
.where('USER.id = :userId', { userId: user.id })
|
|
66
|
+
.andWhere('PRIVILEGE.name = :privilege', { privilege })
|
|
67
|
+
.andWhere('PRIVILEGE.category = :category', { category })
|
|
68
|
+
.getQuery()
|
|
69
|
+
return 'DOMAIN.id IN ' + subQuery
|
|
70
|
+
})
|
|
71
|
+
.orWhere(qb => {
|
|
72
|
+
const subQuery = qb
|
|
73
|
+
.subQuery()
|
|
74
|
+
.select('DOMAIN.id')
|
|
75
|
+
.from(Domain, 'DOMAIN')
|
|
76
|
+
.where('DOMAIN.owner = :userId', { userId: user.id })
|
|
77
|
+
.getQuery()
|
|
78
|
+
return 'DOMAIN.id IN ' + subQuery
|
|
79
|
+
})
|
|
80
|
+
.orderBy('DOMAIN.name', 'ASC')
|
|
81
|
+
.getMany()
|
|
82
|
+
}
|
|
83
|
+
|
|
54
84
|
export async function getDomainsAsOwner(user: User): Promise<Domain[]> {
|
|
55
85
|
return await getRepository(Domain).find({
|
|
56
86
|
where: { owner: user.id }
|