exguard-backend 1.1.2 → 1.1.3

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/scripts/setup.cjs +29 -33
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "exguard-backend",
3
- "version": "1.1.2",
3
+ "version": "1.1.3",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
package/scripts/setup.cjs CHANGED
@@ -44,27 +44,27 @@ export class ExGuardPermissionGuard implements CanActivate {
44
44
 
45
45
  const handler = context.getHandler();
46
46
 
47
- const permMeta = this.reflector.get<{ permissions: string[]; requireAll?: boolean }>(
47
+ const permMeta = this.reflector.get(
48
48
  EXGUARD_PERMISSIONS_KEY,
49
49
  handler,
50
50
  );
51
51
 
52
52
  if (permMeta) {
53
53
  const { permissions, requireAll } = permMeta;
54
- const userPermissions = authResult.user.modules?.flatMap((m: any) => m.permissions) || [];
54
+ const userPermissions = authResult.user.modules ? authResult.user.modules.flatMap(m => m.permissions) : [];
55
55
 
56
56
  if (requireAll) {
57
- if (!permissions.every((p: string) => userPermissions.includes(p))) {
57
+ if (!permissions.every(p => userPermissions.includes(p))) {
58
58
  throw new ForbiddenException('Insufficient permissions');
59
59
  }
60
60
  } else {
61
- if (!permissions.some((p: string) => userPermissions.includes(p))) {
61
+ if (!permissions.some(p => userPermissions.includes(p))) {
62
62
  throw new ForbiddenException('Insufficient permissions');
63
63
  }
64
64
  }
65
65
  }
66
66
 
67
- const roleMeta = this.reflector.get<{ roles: string[]; requireAll?: boolean }>(
67
+ const roleMeta = this.reflector.get(
68
68
  EXGUARD_ROLES_KEY,
69
69
  handler,
70
70
  );
@@ -74,11 +74,11 @@ export class ExGuardPermissionGuard implements CanActivate {
74
74
  const userRoles = authResult.user.roles || [];
75
75
 
76
76
  if (requireAll) {
77
- if (!roles.every((r: string) => userRoles.includes(r))) {
77
+ if (!roles.every(r => userRoles.includes(r))) {
78
78
  throw new ForbiddenException('Insufficient roles');
79
79
  }
80
80
  } else {
81
- if (!roles.some((r: string) => userRoles.includes(r))) {
81
+ if (!roles.some(r => userRoles.includes(r))) {
82
82
  throw new ForbiddenException('Insufficient roles');
83
83
  }
84
84
  }
@@ -88,24 +88,24 @@ export class ExGuardPermissionGuard implements CanActivate {
88
88
  return true;
89
89
  }
90
90
 
91
- private extractToken(request: any): string | null {
92
- const auth = request.headers?.authorization;
93
- if (auth?.startsWith('Bearer ')) {
91
+ private extractToken(request) {
92
+ const auth = request.headers ? request.headers.authorization : null;
93
+ if (auth && auth.startsWith('Bearer ')) {
94
94
  return auth.substring(7);
95
95
  }
96
- return request.headers?.['x-access-token'] || null;
96
+ return request.headers ? request.headers['x-access-token'] : null;
97
97
  }
98
98
  }
99
99
 
100
- export function RequirePermissions(permissions: string[], requireAll = false): any {
101
- return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
100
+ export function RequirePermissions(permissions, requireAll = false) {
101
+ return function (target, propertyKey, descriptor) {
102
102
  Reflect.defineMetadata(EXGUARD_PERMISSIONS_KEY, { permissions, requireAll }, descriptor.value);
103
103
  return descriptor;
104
104
  };
105
105
  }
106
106
 
107
- export function RequireRoles(roles: string[], requireAll = false): any {
108
- return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
107
+ export function RequireRoles(roles, requireAll = false) {
108
+ return function (target, propertyKey, descriptor) {
109
109
  Reflect.defineMetadata(EXGUARD_ROLES_KEY, { roles, requireAll }, descriptor.value);
110
110
  return descriptor;
111
111
  };
@@ -115,19 +115,10 @@ export function RequireRoles(roles: string[], requireAll = false): any {
115
115
  const EXGUARD_MODULE_CONTENT = `import { Module, Global, DynamicModule } from '@nestjs/common';
116
116
  import { ExGuardBackend } from 'exguard-backend';
117
117
 
118
- export interface ExGuardModuleOptions {
119
- baseUrl: string;
120
- apiKey: string;
121
- cache?: {
122
- enabled?: boolean;
123
- ttl?: number;
124
- };
125
- }
126
-
127
118
  @Global()
128
119
  @Module({})
129
120
  export class ExGuardModule {
130
- static forRoot(options: ExGuardModuleOptions): DynamicModule {
121
+ static forRoot(options) {
131
122
  const exGuard = new ExGuardBackend({
132
123
  baseUrl: options.baseUrl,
133
124
  apiKey: options.apiKey,
@@ -148,17 +139,17 @@ export class ExGuardModule {
148
139
  }
149
140
  `;
150
141
 
151
- function ensureDir(dirPath: string) {
142
+ function ensureDir(dirPath) {
152
143
  if (!fs.existsSync(dirPath)) {
153
144
  fs.mkdirSync(dirPath, { recursive: true });
154
145
  }
155
146
  }
156
147
 
157
- function writeFile(filePath: string, content: string) {
148
+ function writeFile(filePath, content) {
158
149
  const dir = path.dirname(filePath);
159
150
  ensureDir(dir);
160
151
  fs.writeFileSync(filePath, content);
161
- console.log(\`Created: \${filePath}\`);
152
+ console.log('Created: ' + filePath);
162
153
  }
163
154
 
164
155
  function setupNestJS() {
@@ -175,11 +166,14 @@ function setupNestJS() {
175
166
  writeFile(path.join(exguardDir, 'exguard.guard.ts'), EXGUARD_GUARD_CONTENT);
176
167
  writeFile(path.join(exguardDir, 'exguard.module.ts'), EXGUARD_MODULE_CONTENT);
177
168
 
178
- console.log('\\n✅ ExGuard setup complete!');
179
- console.log('\\nNext steps:');
169
+ console.log('');
170
+ console.log('ExGuard setup complete!');
171
+ console.log('');
172
+ console.log('Next steps:');
180
173
  console.log('1. Add to app.module.ts:');
174
+ console.log('');
181
175
  console.log(' import { ExGuardModule } from "./exguard/exguard.module";');
182
- console.log(' ');
176
+ console.log('');
183
177
  console.log(' @Module({');
184
178
  console.log(' imports: [');
185
179
  console.log(' ExGuardModule.forRoot({');
@@ -189,9 +183,11 @@ function setupNestJS() {
189
183
  console.log(' ],');
190
184
  console.log(' })');
191
185
  console.log(' export class AppModule {}');
192
- console.log('\\n2. Use in controllers:');
186
+ console.log('');
187
+ console.log('2. Use in controllers:');
188
+ console.log('');
193
189
  console.log(' import { ExGuardPermissionGuard, RequirePermissions } from "@/exguard/exguard.guard";');
194
- console.log(' ');
190
+ console.log('');
195
191
  console.log(' @Controller("items")');
196
192
  console.log(' @UseGuards(ExGuardPermissionGuard)');
197
193
  console.log(' export class ItemsController {');