@optimatech88/titomeet-shared-lib 1.0.15 → 1.0.16

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.
@@ -14,4 +14,11 @@ export declare class OptionalAuthGuard implements CanActivate {
14
14
  canActivate(context: ExecutionContext): Promise<boolean>;
15
15
  private extractTokenFromHeader;
16
16
  }
17
+ export declare class AdminAuthGuard implements CanActivate {
18
+ private jwtService;
19
+ private prisma;
20
+ constructor(jwtService: JwtService);
21
+ canActivate(context: ExecutionContext): Promise<boolean>;
22
+ private extractTokenFromHeader;
23
+ }
17
24
  //# sourceMappingURL=auth.guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.guard.d.ts","sourceRoot":"","sources":["../../src/auth/auth.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAGjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC,qBACa,SAAU,YAAW,WAAW;IAIzC,OAAO,CAAC,UAAU;IAHpB,OAAO,CAAC,MAAM,CAAe;gBAGnB,UAAU,EAAE,UAAU;IAK1B,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA0B9D,OAAO,CAAC,sBAAsB;CAI/B;AAGD,qBACa,iBAAkB,YAAW,WAAW;IAIjD,OAAO,CAAC,UAAU;IAHnB,OAAO,CAAC,MAAM,CAAe;gBAGpB,UAAU,EAAE,UAAU;IAK1B,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA4B9D,OAAO,CAAC,sBAAsB;CAI/B"}
1
+ {"version":3,"file":"auth.guard.d.ts","sourceRoot":"","sources":["../../src/auth/auth.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAGjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC,qBACa,SAAU,YAAW,WAAW;IAIzC,OAAO,CAAC,UAAU;IAHpB,OAAO,CAAC,MAAM,CAAe;gBAGnB,UAAU,EAAE,UAAU;IAK1B,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA0B9D,OAAO,CAAC,sBAAsB;CAI/B;AAGD,qBACa,iBAAkB,YAAW,WAAW;IAIjD,OAAO,CAAC,UAAU;IAHnB,OAAO,CAAC,MAAM,CAAe;gBAGpB,UAAU,EAAE,UAAU;IAK1B,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA4B9D,OAAO,CAAC,sBAAsB;CAI/B;AAGD,qBACa,cAAe,YAAW,WAAW;IAI9C,OAAO,CAAC,UAAU;IAHpB,OAAO,CAAC,MAAM,CAAe;gBAGnB,UAAU,EAAE,UAAU;IAK1B,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA8B9D,OAAO,CAAC,sBAAsB;CAI/B"}
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.OptionalAuthGuard = exports.AuthGuard = void 0;
12
+ exports.AdminAuthGuard = exports.OptionalAuthGuard = exports.AuthGuard = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const jwt_1 = require("@nestjs/jwt");
15
15
  const client_1 = require("@prisma/client");
@@ -86,4 +86,44 @@ exports.OptionalAuthGuard = OptionalAuthGuard = __decorate([
86
86
  (0, common_1.Injectable)(),
87
87
  __metadata("design:paramtypes", [jwt_1.JwtService])
88
88
  ], OptionalAuthGuard);
89
+ let AdminAuthGuard = class AdminAuthGuard {
90
+ constructor(jwtService) {
91
+ this.jwtService = jwtService;
92
+ this.prisma = new client_1.PrismaClient();
93
+ }
94
+ async canActivate(context) {
95
+ const request = context.switchToHttp().getRequest();
96
+ const token = this.extractTokenFromHeader(request);
97
+ if (!token) {
98
+ throw new common_1.UnauthorizedException();
99
+ }
100
+ try {
101
+ const payload = (await this.jwtService.verifyAsync(token));
102
+ const user = await this.prisma.user.findUnique({
103
+ where: { id: payload.userId }
104
+ });
105
+ if (!user) {
106
+ throw new common_1.UnauthorizedException();
107
+ }
108
+ if (user.role !== client_1.UserRole.ADMIN && user.role !== client_1.UserRole.SUPER_ADMIN) {
109
+ throw new common_1.UnauthorizedException();
110
+ }
111
+ request['user'] = user;
112
+ }
113
+ catch (_a) {
114
+ throw new common_1.UnauthorizedException();
115
+ }
116
+ return true;
117
+ }
118
+ extractTokenFromHeader(request) {
119
+ var _a, _b;
120
+ const [type, token] = (_b = (_a = request.headers.authorization) === null || _a === void 0 ? void 0 : _a.split(' ')) !== null && _b !== void 0 ? _b : [];
121
+ return type === 'Bearer' ? token : undefined;
122
+ }
123
+ };
124
+ exports.AdminAuthGuard = AdminAuthGuard;
125
+ exports.AdminAuthGuard = AdminAuthGuard = __decorate([
126
+ (0, common_1.Injectable)(),
127
+ __metadata("design:paramtypes", [jwt_1.JwtService])
128
+ ], AdminAuthGuard);
89
129
  //# sourceMappingURL=auth.guard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["../../src/auth/auth.guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["../../src/auth/auth.guard.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export * from './auth/auth.guard';
2
2
  export { PrismaClient, User, Account, UserRole, Event, EventAccess, EventVisibility, EventStatus, EventPrice, Address, Participant, ParticipantStatus, Provider, ProviderStatus, EventCategory, Review, } from '@prisma/client';
3
3
  export * from './auth/auth.guard';
4
4
  export * from './auth/auth.module';
5
+ export * from './auth/admin.middleware';
5
6
  export * from './cache/cache.module';
6
7
  export * from './cache/cache.service';
7
8
  export * from './prisma/prisma.module';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACH,YAAY,EAAE,IAAI,EAAE,OAAO,EACvB,QAAQ,EAAE,KAAK,EAAE,WAAW,EAC5B,eAAe,EAAE,WAAW,EAC5B,UAAU,EAAE,OAAO,EAAE,WAAW,EAChC,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,MAAM,GAET,MAAM,gBAAgB,CAAC;AAG5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACH,YAAY,EAAE,IAAI,EAAE,OAAO,EACvB,QAAQ,EAAE,KAAK,EAAE,WAAW,EAC5B,eAAe,EAAE,WAAW,EAC5B,UAAU,EAAE,OAAO,EAAE,WAAW,EAChC,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,MAAM,GAET,MAAM,gBAAgB,CAAC;AAG5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -26,6 +26,7 @@ Object.defineProperty(exports, "ParticipantStatus", { enumerable: true, get: fun
26
26
  Object.defineProperty(exports, "ProviderStatus", { enumerable: true, get: function () { return client_1.ProviderStatus; } });
27
27
  __exportStar(require("./auth/auth.guard"), exports);
28
28
  __exportStar(require("./auth/auth.module"), exports);
29
+ __exportStar(require("./auth/admin.middleware"), exports);
29
30
  __exportStar(require("./cache/cache.module"), exports);
30
31
  __exportStar(require("./cache/cache.service"), exports);
31
32
  __exportStar(require("./prisma/prisma.module"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,yCAW4B;AAVxB,sGAAA,YAAY,OAAA;AACR,kGAAA,QAAQ,OAAA;AAAS,qGAAA,WAAW,OAAA;AAC5B,yGAAA,eAAe,OAAA;AAAE,qGAAA,WAAW,OAAA;AAE5B,2GAAA,iBAAiB,OAAA;AAEjB,wGAAA,cAAc,OAAA;AAOtB,oDAAkC;AAClC,qDAAmC;AAGnC,uDAAqC;AACrC,wDAAsC;AAGtC,yDAAuC;AACvC,0DAAwC;AACxC,gDAA8B;AAC9B,0CAAwB;AACxB,0CAAwB;AACxB,wDAAsC;AACtC,iDAA+B;AAE/B,mCAAyC;AAAhC,iGAAA,UAAU,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,yCAW4B;AAVxB,sGAAA,YAAY,OAAA;AACR,kGAAA,QAAQ,OAAA;AAAS,qGAAA,WAAW,OAAA;AAC5B,yGAAA,eAAe,OAAA;AAAE,qGAAA,WAAW,OAAA;AAE5B,2GAAA,iBAAiB,OAAA;AAEjB,wGAAA,cAAc,OAAA;AAOtB,oDAAkC;AAClC,qDAAmC;AACnC,0DAAwC;AAGxC,uDAAqC;AACrC,wDAAsC;AAGtC,yDAAuC;AACvC,0DAAwC;AACxC,gDAA8B;AAC9B,0CAAwB;AACxB,0CAAwB;AACxB,wDAAsC;AACtC,iDAA+B;AAE/B,mCAAyC;AAAhC,iGAAA,UAAU,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optimatech88/titomeet-shared-lib",
3
- "version": "1.0.15",
3
+ "version": "1.0.16",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
@@ -5,7 +5,7 @@ import {
5
5
  UnauthorizedException,
6
6
  } from '@nestjs/common';
7
7
  import { JwtService } from '@nestjs/jwt';
8
- import { PrismaClient } from '@prisma/client';
8
+ import { PrismaClient, UserRole } from '@prisma/client';
9
9
  import { Request } from 'express';
10
10
  import { IncomingHttpHeaders } from 'http';
11
11
 
@@ -96,3 +96,51 @@ export class OptionalAuthGuard implements CanActivate {
96
96
  }
97
97
  }
98
98
 
99
+ //admin auth guard
100
+ @Injectable()
101
+ export class AdminAuthGuard implements CanActivate {
102
+ private prisma: PrismaClient;
103
+
104
+ constructor(
105
+ private jwtService: JwtService,
106
+ ) {
107
+ this.prisma = new PrismaClient();
108
+ }
109
+
110
+ async canActivate(context: ExecutionContext): Promise<boolean> {
111
+ const request = context.switchToHttp().getRequest();
112
+ const token = this.extractTokenFromHeader(request);
113
+ if (!token) {
114
+ throw new UnauthorizedException();
115
+ }
116
+ try {
117
+ const payload = (await this.jwtService.verifyAsync(token)) as {
118
+ userId: string;
119
+ };
120
+
121
+ const user = await this.prisma.user.findUnique({
122
+ where: { id: payload.userId }
123
+ });
124
+
125
+ if (!user) {
126
+ throw new UnauthorizedException();
127
+ }
128
+
129
+ if(user.role !== UserRole.ADMIN && user.role !== UserRole.SUPER_ADMIN) {
130
+ throw new UnauthorizedException();
131
+ }
132
+
133
+ request['user'] = user;
134
+ } catch {
135
+ throw new UnauthorizedException();
136
+ }
137
+ return true;
138
+ }
139
+
140
+ private extractTokenFromHeader(request: Request & { headers: IncomingHttpHeaders }): string | undefined {
141
+ const [type, token] = request.headers.authorization?.split(' ') ?? [];
142
+ return type === 'Bearer' ? token : undefined;
143
+ }
144
+ }
145
+
146
+
package/src/index.ts CHANGED
@@ -15,6 +15,7 @@ export {
15
15
  //auth
16
16
  export * from './auth/auth.guard';
17
17
  export * from './auth/auth.module';
18
+ export * from './auth/admin.middleware';
18
19
 
19
20
  //cache
20
21
  export * from './cache/cache.module';