rez_core 1.0.64 → 1.0.65

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 (39) hide show
  1. package/dist/module/auth/guards/role.guard.js +3 -3
  2. package/dist/module/master/controller/master.controller.d.ts +11 -1
  3. package/dist/module/master/controller/master.controller.js +42 -4
  4. package/dist/module/master/controller/master.controller.js.map +1 -1
  5. package/dist/module/master/service/master.service.d.ts +13 -4
  6. package/dist/module/master/service/master.service.js +97 -23
  7. package/dist/module/master/service/master.service.js.map +1 -1
  8. package/dist/tsconfig.build.tsbuildinfo +1 -1
  9. package/package.json +1 -1
  10. package/src/app.controller.ts +12 -12
  11. package/src/app.service.ts +8 -8
  12. package/src/module/auth/guards/jwt.guard.ts +22 -22
  13. package/src/module/auth/guards/role.guard.ts +68 -68
  14. package/src/module/auth/services/jwt.service.ts +11 -11
  15. package/src/module/auth/strategies/local.strategy.ts +13 -13
  16. package/src/module/dev/dev.module.ts +12 -12
  17. package/src/module/dev/service/dev.service.ts +7 -7
  18. package/src/module/enterprise/entity/organization.entity.ts +80 -80
  19. package/src/module/master/controller/master.controller.ts +35 -11
  20. package/src/module/master/service/master.service.ts +144 -47
  21. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  22. package/src/module/meta/entity/preference.entity.ts +65 -65
  23. package/src/module/meta/repository/preference.repository.ts +20 -20
  24. package/src/module/module/controller/menu.controller.ts +15 -15
  25. package/src/module/module/entity/module-access.entity.ts +22 -22
  26. package/src/module/user/controller/user.controller.ts +28 -28
  27. package/src/module/user/dto/update-user.dto.ts +4 -4
  28. package/src/module/user/entity/user-session.entity.ts +61 -61
  29. package/src/module/user/repository/userSession.repository.ts +33 -33
  30. package/src/utils/service/encryptUtil.service.ts +97 -97
  31. package/src/utils/service/excelUtil.service.ts +15 -15
  32. package/src/utils/service/reflection-helper.service.ts +53 -53
  33. package/.idea/250218_nodejs_core.iml +0 -12
  34. package/.idea/codeStyles/Project.xml +0 -59
  35. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  36. package/.idea/dataSources.xml +0 -12
  37. package/.idea/modules.xml +0 -8
  38. package/.idea/prettier.xml +0 -6
  39. package/.idea/vcs.xml +0 -6
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rez_core",
3
- "version": "1.0.64",
3
+ "version": "1.0.65",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "private": false,
@@ -1,12 +1,12 @@
1
- import { Controller, Get } from '@nestjs/common';
2
- import { AppService } from './app.service';
3
-
4
- @Controller()
5
- export class AppController {
6
- constructor(private readonly appService: AppService) {}
7
-
8
- @Get()
9
- getHello(): string {
10
- return this.appService.getHello();
11
- }
12
- }
1
+ import { Controller, Get } from '@nestjs/common';
2
+ import { AppService } from './app.service';
3
+
4
+ @Controller()
5
+ export class AppController {
6
+ constructor(private readonly appService: AppService) {}
7
+
8
+ @Get()
9
+ getHello(): string {
10
+ return this.appService.getHello();
11
+ }
12
+ }
@@ -1,8 +1,8 @@
1
- import { Injectable } from '@nestjs/common';
2
-
3
- @Injectable()
4
- export class AppService {
5
- getHello(): string {
6
- return 'Hello World!';
7
- }
8
- }
1
+ import { Injectable } from '@nestjs/common';
2
+
3
+ @Injectable()
4
+ export class AppService {
5
+ getHello(): string {
6
+ return 'Hello World!';
7
+ }
8
+ }
@@ -1,22 +1,22 @@
1
- import { ExecutionContext, Injectable } from '@nestjs/common';
2
- import { AuthGuard } from '@nestjs/passport';
3
- import { Reflector } from '@nestjs/core';
4
- import { Observable } from 'rxjs';
5
-
6
- @Injectable()
7
- export class JwtAuthGuard extends AuthGuard('jwt') {
8
- constructor(private reflector: Reflector) {
9
- super();
10
- }
11
-
12
- canActivate(
13
- context: ExecutionContext,
14
- ): Promise<boolean> | boolean | Observable<boolean> {
15
- const isPublic = this.reflector.getAllAndOverride('isPublic', [
16
- context.getHandler(),
17
- context.getClass(),
18
- ]);
19
- if (isPublic) return true;
20
- return super.canActivate(context);
21
- }
22
- }
1
+ import { ExecutionContext, Injectable } from '@nestjs/common';
2
+ import { AuthGuard } from '@nestjs/passport';
3
+ import { Reflector } from '@nestjs/core';
4
+ import { Observable } from 'rxjs';
5
+
6
+ @Injectable()
7
+ export class JwtAuthGuard extends AuthGuard('jwt') {
8
+ constructor(private reflector: Reflector) {
9
+ super();
10
+ }
11
+
12
+ canActivate(
13
+ context: ExecutionContext,
14
+ ): Promise<boolean> | boolean | Observable<boolean> {
15
+ const isPublic = this.reflector.getAllAndOverride('isPublic', [
16
+ context.getHandler(),
17
+ context.getClass(),
18
+ ]);
19
+ if (isPublic) return true;
20
+ return super.canActivate(context);
21
+ }
22
+ }
@@ -1,68 +1,68 @@
1
- import {
2
- CanActivate,
3
- ExecutionContext,
4
- ForbiddenException,
5
- Injectable,
6
- UnauthorizedException,
7
- } from '@nestjs/common';
8
- import { Reflector } from '@nestjs/core';
9
- import { UserData } from '../../user/entity/user.entity';
10
- import { InjectEntityManager } from '@nestjs/typeorm';
11
- import { EntityManager } from 'typeorm';
12
-
13
- @Injectable()
14
- export class RolesGuard implements CanActivate {
15
- constructor(
16
- private reflector: Reflector,
17
- @InjectEntityManager() private entityManager: EntityManager,
18
- ) {}
19
-
20
- async canActivate(context: ExecutionContext) {
21
- const request = context
22
- .switchToHttp()
23
- .getRequest<Request & { user: any }>();
24
- const object = request.user;
25
-
26
- const users: UserData = await this.entityManager.query(
27
- `SELECT * FROM cr_user WHERE id = ${object.userId} LIMIT 1`,
28
- );
29
-
30
- const user = users[0];
31
- if (!user || !user['role_id']) {
32
- throw new UnauthorizedException('User not authorized');
33
- }
34
-
35
- const requiredModule = this.reflector.get<string>(
36
- 'moduleCode',
37
- context.getHandler(),
38
- );
39
- const requiredActions = this.reflector.get<string>(
40
- 'actions',
41
- context.getHandler(),
42
- );
43
-
44
- const roleAccess = await this.entityManager.query(
45
- `SELECT *
46
- FROM cr_module_access
47
- WHERE role_id = ${user['role_id']}
48
- AND module_code = '${requiredModule}'`,
49
- );
50
-
51
- if (!roleAccess || roleAccess.length === 0) {
52
- throw new ForbiddenException(
53
- 'Access denied: No permissions found for this module',
54
- );
55
- }
56
-
57
- const hasAccess = roleAccess.some(
58
- (access) =>
59
- requiredActions.includes(access.action_type) &&
60
- access.access_flag === 1,
61
- );
62
-
63
- if (!hasAccess) {
64
- throw new ForbiddenException('Access denied: Insufficient permissions.');
65
- }
66
- return true;
67
- }
68
- }
1
+ import {
2
+ CanActivate,
3
+ ExecutionContext,
4
+ ForbiddenException,
5
+ Injectable,
6
+ UnauthorizedException,
7
+ } from '@nestjs/common';
8
+ import { Reflector } from '@nestjs/core';
9
+ import { UserData } from '../../user/entity/user.entity';
10
+ import { InjectEntityManager } from '@nestjs/typeorm';
11
+ import { EntityManager } from 'typeorm';
12
+
13
+ @Injectable()
14
+ export class RolesGuard implements CanActivate {
15
+ constructor(
16
+ private reflector: Reflector,
17
+ @InjectEntityManager() private entityManager: EntityManager,
18
+ ) {}
19
+
20
+ async canActivate(context: ExecutionContext) {
21
+ const request = context
22
+ .switchToHttp()
23
+ .getRequest<Request & { user: any }>();
24
+ const object = request.user;
25
+
26
+ const users: UserData = await this.entityManager.query(
27
+ `SELECT * FROM cr_user WHERE id = ${object.userId} LIMIT 1`,
28
+ );
29
+
30
+ const user = users[0];
31
+ if (!user || !user['role_id']) {
32
+ throw new UnauthorizedException('User not authorized');
33
+ }
34
+
35
+ const requiredModule = this.reflector.get<string>(
36
+ 'moduleCode',
37
+ context.getHandler(),
38
+ );
39
+ const requiredActions = this.reflector.get<string>(
40
+ 'actions',
41
+ context.getHandler(),
42
+ );
43
+
44
+ const roleAccess = await this.entityManager.query(
45
+ `SELECT *
46
+ FROM cr_module_access
47
+ WHERE role_id = ${user['role_id']}
48
+ AND module_code = '${requiredModule}'`,
49
+ );
50
+
51
+ if (!roleAccess || roleAccess.length === 0) {
52
+ throw new ForbiddenException(
53
+ 'Access denied: No permissions found for this module',
54
+ );
55
+ }
56
+
57
+ const hasAccess = roleAccess.some(
58
+ (access) =>
59
+ requiredActions.includes(access.action_type) &&
60
+ access.access_flag === 1,
61
+ );
62
+
63
+ if (!hasAccess) {
64
+ throw new ForbiddenException('Access denied: Insufficient permissions.');
65
+ }
66
+ return true;
67
+ }
68
+ }
@@ -1,11 +1,11 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { JwtService } from '@nestjs/jwt';
3
-
4
- @Injectable()
5
- export class JwtAuthService {
6
- constructor(private readonly jwtService: JwtService) {}
7
-
8
- generateJwt(payload: any): string {
9
- return this.jwtService.sign(payload);
10
- }
11
- }
1
+ import { Injectable } from '@nestjs/common';
2
+ import { JwtService } from '@nestjs/jwt';
3
+
4
+ @Injectable()
5
+ export class JwtAuthService {
6
+ constructor(private readonly jwtService: JwtService) {}
7
+
8
+ generateJwt(payload: any): string {
9
+ return this.jwtService.sign(payload);
10
+ }
11
+ }
@@ -1,13 +1,13 @@
1
- import { PassportStrategy } from '@nestjs/passport';
2
- import { AuthService } from '../services/auth.service';
3
- import { Injectable } from '@nestjs/common';
4
- import { Strategy } from 'passport-jwt';
5
-
6
- @Injectable()
7
- export class LocalStrategy extends PassportStrategy(Strategy) {
8
- constructor(private authService: AuthService) {
9
- super({
10
- usernameField: 'email',
11
- });
12
- }
13
- }
1
+ import { PassportStrategy } from '@nestjs/passport';
2
+ import { AuthService } from '../services/auth.service';
3
+ import { Injectable } from '@nestjs/common';
4
+ import { Strategy } from 'passport-jwt';
5
+
6
+ @Injectable()
7
+ export class LocalStrategy extends PassportStrategy(Strategy) {
8
+ constructor(private authService: AuthService) {
9
+ super({
10
+ usernameField: 'email',
11
+ });
12
+ }
13
+ }
@@ -1,12 +1,12 @@
1
- import { Module } from '@nestjs/common';
2
- import { EntityModule } from '../meta/entity.module';
3
- import { UserModule } from '../user/user.module';
4
- import { ModuleModule } from '../module/module.module';
5
- import { DevService } from './service/dev.service';
6
-
7
- @Module({
8
- imports: [EntityModule, UserModule, ModuleModule],
9
- controllers: [],
10
- providers: [DevService],
11
- })
12
- export class DevModule {}
1
+ import { Module } from '@nestjs/common';
2
+ import { EntityModule } from '../meta/entity.module';
3
+ import { UserModule } from '../user/user.module';
4
+ import { ModuleModule } from '../module/module.module';
5
+ import { DevService } from './service/dev.service';
6
+
7
+ @Module({
8
+ imports: [EntityModule, UserModule, ModuleModule],
9
+ controllers: [],
10
+ providers: [DevService],
11
+ })
12
+ export class DevModule {}
@@ -1,7 +1,7 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { UserService } from '../../user/service/user.service';
3
-
4
- @Injectable()
5
- export class DevService {
6
- constructor(private readonly userService: UserService) {}
7
- }
1
+ import { Injectable } from '@nestjs/common';
2
+ import { UserService } from '../../user/service/user.service';
3
+
4
+ @Injectable()
5
+ export class DevService {
6
+ constructor(private readonly userService: UserService) {}
7
+ }
@@ -1,80 +1,80 @@
1
- import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
2
-
3
- @Entity({ name: 'cr_organization' })
4
- export class OrganizationData {
5
- @PrimaryGeneratedColumn({ name: 'id', type: 'int' })
6
- id: number;
7
-
8
- @Column({ name: 'enterprise_id', type: 'int' })
9
- enterprise_id: number;
10
-
11
- @Column({ name: 'code', nullable: true })
12
- code: string;
13
-
14
- @Column({ name: 'app_code', nullable: true })
15
- appCode: string;
16
-
17
- @Column({ name: 'name', nullable: true })
18
- name: string;
19
-
20
- @Column({ name: 'status', type: 'varchar', nullable: true })
21
- status: string;
22
-
23
- @Column({ name: 'seq_no', nullable: true })
24
- seq_no: number;
25
-
26
- @Column({ name: 'created_by', nullable: true })
27
- created_by: number;
28
-
29
- @Column({ name: 'modified_by', nullable: true })
30
- modified_by: number;
31
-
32
- @Column({ name: 'created_date', nullable: true })
33
- created_date: Date;
34
-
35
- @Column({ name: 'parent_id', nullable: true })
36
- parent_id: number;
37
-
38
- @Column({ name: 'modified_date', nullable: true })
39
- modified_date: Date;
40
-
41
- @Column({ name: 'contact_number', nullable: true })
42
- contact_number: string;
43
-
44
- @Column({ name: 'email', nullable: true })
45
- emailId: string;
46
-
47
- @Column({ name: 'entity_type', nullable: true })
48
- entity_type: string;
49
-
50
- @Column({ name: 'primary_contact_name', nullable: true })
51
- primary_contact_name: string;
52
-
53
- @Column({ name: 'address', nullable: true })
54
- address: string;
55
-
56
- @Column({ name: 'gstin', nullable: true })
57
- gstin: string;
58
-
59
- @Column({ name: 'company_pan_number', nullable: true })
60
- company_pan_number: string;
61
-
62
- @Column({ name: 'bankacc_benef_name', nullable: true })
63
- bankacc_benef_name: string;
64
-
65
- @Column({ name: 'bankacc_bank_name', nullable: true })
66
- bankacc_bank_name: string;
67
-
68
- @Column({ name: 'bankacc_account_number', nullable: true })
69
- bankaccAccountNumber: string;
70
-
71
- @Column({ name: 'bankacc_branch_IFSC', nullable: true })
72
- bankacc_account_number: string;
73
-
74
- @Column({
75
- name: 'organization_type',
76
- type: 'varchar',
77
- nullable: true,
78
- })
79
- organization_type: string;
80
- }
1
+ import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
2
+
3
+ @Entity({ name: 'cr_organization' })
4
+ export class OrganizationData {
5
+ @PrimaryGeneratedColumn({ name: 'id', type: 'int' })
6
+ id: number;
7
+
8
+ @Column({ name: 'enterprise_id', type: 'int' })
9
+ enterprise_id: number;
10
+
11
+ @Column({ name: 'code', nullable: true })
12
+ code: string;
13
+
14
+ @Column({ name: 'app_code', nullable: true })
15
+ appCode: string;
16
+
17
+ @Column({ name: 'name', nullable: true })
18
+ name: string;
19
+
20
+ @Column({ name: 'status', type: 'varchar', nullable: true })
21
+ status: string;
22
+
23
+ @Column({ name: 'seq_no', nullable: true })
24
+ seq_no: number;
25
+
26
+ @Column({ name: 'created_by', nullable: true })
27
+ created_by: number;
28
+
29
+ @Column({ name: 'modified_by', nullable: true })
30
+ modified_by: number;
31
+
32
+ @Column({ name: 'created_date', nullable: true })
33
+ created_date: Date;
34
+
35
+ @Column({ name: 'parent_id', nullable: true })
36
+ parent_id: number;
37
+
38
+ @Column({ name: 'modified_date', nullable: true })
39
+ modified_date: Date;
40
+
41
+ @Column({ name: 'contact_number', nullable: true })
42
+ contact_number: string;
43
+
44
+ @Column({ name: 'email', nullable: true })
45
+ emailId: string;
46
+
47
+ @Column({ name: 'entity_type', nullable: true })
48
+ entity_type: string;
49
+
50
+ @Column({ name: 'primary_contact_name', nullable: true })
51
+ primary_contact_name: string;
52
+
53
+ @Column({ name: 'address', nullable: true })
54
+ address: string;
55
+
56
+ @Column({ name: 'gstin', nullable: true })
57
+ gstin: string;
58
+
59
+ @Column({ name: 'company_pan_number', nullable: true })
60
+ company_pan_number: string;
61
+
62
+ @Column({ name: 'bankacc_benef_name', nullable: true })
63
+ bankacc_benef_name: string;
64
+
65
+ @Column({ name: 'bankacc_bank_name', nullable: true })
66
+ bankacc_bank_name: string;
67
+
68
+ @Column({ name: 'bankacc_account_number', nullable: true })
69
+ bankaccAccountNumber: string;
70
+
71
+ @Column({ name: 'bankacc_branch_IFSC', nullable: true })
72
+ bankacc_account_number: string;
73
+
74
+ @Column({
75
+ name: 'organization_type',
76
+ type: 'varchar',
77
+ nullable: true,
78
+ })
79
+ organization_type: string;
80
+ }
@@ -1,34 +1,58 @@
1
1
  import {
2
2
  BadRequestException,
3
3
  Controller,
4
+ Inject,
5
+ Param,
4
6
  Post,
7
+ Req,
5
8
  UploadedFile,
9
+ UseGuards,
6
10
  UseInterceptors,
7
11
  } from '@nestjs/common';
8
12
  import { FileInterceptor } from '@nestjs/platform-express';
9
13
  import { MasterService } from '../service/master.service';
10
14
  import { Express } from 'express';
15
+ import { UserService } from 'src/module/user/service/user.service';
16
+ import { ENTITYTYPE_USER } from 'src/constant/global.constant';
17
+ import { EntityServiceImpl } from 'src/module/meta/service/entity-service-impl.service';
18
+ import { JwtAuthGuard } from 'src/module/auth/guards/jwt.guard';
11
19
 
12
20
  @Controller('master')
21
+ @UseGuards(JwtAuthGuard)
13
22
  export class MasterController {
14
- constructor(private readonly masterService: MasterService) {}
23
+ constructor(private readonly masterService: MasterService,
24
+ private readonly entityService: EntityServiceImpl,
25
+ ) {}
15
26
 
16
- // @Post('upload')
17
- // @UseInterceptors(FileInterceptor('file'))
18
- // async uploadFile(@UploadedFile() file) {
19
- // if (!file) {
20
- // throw new Error('File is required');
21
- // }
22
- // return this.masterService.processExcel(file);
23
- // }
27
+ @Post('uploadMeta')
28
+ @UseInterceptors(FileInterceptor('file'))
24
29
 
25
- @Post('uploadMasterData')
30
+ async uploadMasterMetaXls(@UploadedFile() file: Express.Multer.File) {
31
+ if (!file) {
32
+ throw new BadRequestException('File is required');
33
+ }
34
+ return await this.masterService.uploadMeta(file.buffer);
35
+ }
36
+
37
+ @Post('uploadData')
26
38
  @UseInterceptors(FileInterceptor('file'))
27
39
 
28
40
  async uploadMasterDataXls(@UploadedFile() file: Express.Multer.File) {
29
41
  if (!file) {
30
42
  throw new BadRequestException('File is required');
31
43
  }
32
- return await this.masterService.uploadMasterData(file.buffer);
44
+ return await this.masterService.uploadData(file.buffer);
45
+ }
46
+
47
+ @Post('uploadEntity/:entityType')
48
+ @UseInterceptors(FileInterceptor('file'))
49
+
50
+ async uploadEntityDataXls(@Param('entityType') entityType: string, @UploadedFile() file: Express.Multer.File,@Req() req: Request & { user: any }) {
51
+ let requestedUser = req.user;
52
+ let loggedInUser = await this.entityService.getEntityData(ENTITYTYPE_USER,requestedUser.id);
53
+ if (!file) {
54
+ throw new BadRequestException('File is required');
55
+ }
56
+ return await this.masterService.uploadEntityData(file.buffer,entityType,loggedInUser);
33
57
  }
34
58
  }