@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.
@@ -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;IAE7C,OAAO,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC;SAC/B,kBAAkB,CAAC,QAAQ,CAAC;SAC5B,KAAK,CAAC,EAAE,CAAC,EAAE;QACV,MAAM,QAAQ,GAAG,EAAE;aAChB,QAAQ,EAAE;aACV,QAAQ,CAAC,IAAI,CAAC;aACd,MAAM,CAAC,WAAW,CAAC;aACnB,IAAI,CAAC,WAAI,EAAE,MAAM,CAAC;aAClB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;aAC9B,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC;aACjC,KAAK,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;aAC/C,QAAQ,EAAE,CAAA;QACb,OAAO,eAAe,GAAG,QAAQ,CAAA;IACnC,CAAC,CAAC;SACD,OAAO,CAAC,EAAE,CAAC,EAAE;QACZ,MAAM,QAAQ,GAAG,EAAE;aAChB,QAAQ,EAAE;aACV,MAAM,CAAC,WAAW,CAAC;aACnB,IAAI,CAAC,cAAM,EAAE,QAAQ,CAAC;aACtB,KAAK,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;aACpD,QAAQ,EAAE,CAAA;QACb,OAAO,eAAe,GAAG,QAAQ,CAAA;IACnC,CAAC,CAAC;SACD,OAAO,CAAC,aAAa,EAAC,KAAK,CAAC;SAC5B,OAAO,EAAE,CAAA;AACd,CAAC;AA3BD,wCA2BC;AAEM,KAAK,UAAU,mBAAmB,CAAC,IAAU;IAClD,OAAO,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC;SAC/B,kBAAkB,CAAC,QAAQ,CAAC;SAC5B,KAAK,CAAC,EAAE,CAAC,EAAE;QACV,MAAM,QAAQ,GAAG,EAAE;aAChB,QAAQ,EAAE;aACV,QAAQ,CAAC,IAAI,CAAC;aACd,MAAM,CAAC,WAAW,CAAC;aACnB,IAAI,CAAC,WAAI,EAAE,MAAM,CAAC;aAClB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;aAC9B,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC;aACjC,KAAK,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;aAC/C,QAAQ,EAAE,CAAA;QACb,OAAO,eAAe,GAAG,QAAQ,CAAA;IACnC,CAAC,CAAC;SACD,OAAO,EAAE,CAAA;AACd,CAAC;AAhBD,kDAgBC;AAEM,KAAK,UAAU,iBAAiB,CAAC,IAAU;IAChD,OAAO,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAC,IAAI,CAAC;QACtC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;KAC1B,CAAC,CAAA;AACJ,CAAC;AAJD,8CAIC","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 \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 getDomainsAsOwner(user: User): Promise<Domain[]> {\n return await getRepository(Domain).find({\n where: { owner: user.id }\n })\n}\n"]}
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.145",
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": "615af7d8a649cb70f13c13dfafdf6cb84db13b9b"
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 }