rez_core 2.1.31 → 2.1.32

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,7 +2,7 @@ import { UserSessionService } from './user-session.service';
2
2
  import { UserService } from './user.service';
3
3
  import { ConfigService } from '@nestjs/config';
4
4
  import { UserRoleMapping } from '../entity/user-role-mapping.entity';
5
- import { Repository } from 'typeorm';
5
+ import { DataSource, Repository } from 'typeorm';
6
6
  import { Role } from '../entity/role.entity';
7
7
  export declare class LoginService {
8
8
  private readonly userService;
@@ -10,7 +10,8 @@ export declare class LoginService {
10
10
  private configService;
11
11
  private readonly userRoleMappingRepository;
12
12
  private readonly roleRepo;
13
- constructor(userService: UserService, userSessionService: UserSessionService, configService: ConfigService, userRoleMappingRepository: Repository<UserRoleMapping>, roleRepo: Repository<Role>);
13
+ private readonly dataSource;
14
+ constructor(userService: UserService, userSessionService: UserSessionService, configService: ConfigService, userRoleMappingRepository: Repository<UserRoleMapping>, roleRepo: Repository<Role>, dataSource: DataSource);
14
15
  masterKey: string;
15
16
  masterIv: string;
16
17
  login(email: string, password: string): Promise<{
@@ -25,11 +26,12 @@ export declare class LoginService {
25
26
  success: boolean;
26
27
  accessToken: string;
27
28
  appcode: string;
28
- level_type: any;
29
- level_id: any;
29
+ level_type: string;
30
+ level_id: string;
30
31
  message?: undefined;
31
32
  type?: undefined;
32
33
  }>;
34
+ private getDefaultAccess;
33
35
  loginWithGoogle(email: string, name: any): Promise<string>;
34
36
  logout(sessionKey: string): Promise<{
35
37
  message: string;
@@ -24,12 +24,13 @@ const user_role_mapping_entity_1 = require("../entity/user-role-mapping.entity")
24
24
  const typeorm_2 = require("typeorm");
25
25
  const role_entity_1 = require("../entity/role.entity");
26
26
  let LoginService = class LoginService {
27
- constructor(userService, userSessionService, configService, userRoleMappingRepository, roleRepo) {
27
+ constructor(userService, userSessionService, configService, userRoleMappingRepository, roleRepo, dataSource) {
28
28
  this.userService = userService;
29
29
  this.userSessionService = userSessionService;
30
30
  this.configService = configService;
31
31
  this.userRoleMappingRepository = userRoleMappingRepository;
32
32
  this.roleRepo = roleRepo;
33
+ this.dataSource = dataSource;
33
34
  this.masterKey = this.configService.get('MASTER_KEY') || '';
34
35
  this.masterIv = this.configService.get('MASTER_IV') || '';
35
36
  }
@@ -57,38 +58,19 @@ let LoginService = class LoginService {
57
58
  type: 'password',
58
59
  };
59
60
  }
60
- let defaultAccess;
61
- let appcode = user.last_app_access;
62
- if (!appcode) {
63
- appcode = 'ADM';
61
+ let appcode = user.last_app_access || 'ADM';
62
+ if (!user.last_app_access) {
64
63
  await this.userService.setDefaultLastAccess(user.id, appcode);
65
64
  }
66
65
  const roleMappings = await this.userRoleMappingRepository.find({
67
- where: {
68
- user_id: user.id,
69
- appcode,
70
- },
66
+ where: { user_id: user.id, appcode },
71
67
  });
72
68
  if (!roleMappings.length) {
73
69
  throw new common_1.BadRequestException('User does not have any access mapped for this app.');
74
70
  }
75
- const validURM = roleMappings.find((r) => r.level_type === user.last_level_type &&
76
- r.level_id === user.last_level_id);
77
- if (user.last_level_type && user.last_level_id && validURM) {
78
- defaultAccess = {
79
- level_type: user.last_level_type,
80
- level_id: user.last_level_id,
81
- };
82
- }
83
- else {
84
- const priority = { org: 1, sch: 2, brn: 3 };
85
- defaultAccess = roleMappings.sort((a, b) => priority[a.level_type] - priority[b.level_type])[0];
86
- await this.userService.setLastLevelTypeAndId(user.id, defaultAccess.level_type, defaultAccess.level_id);
87
- }
88
- const token = await this.userSessionService.createSession(user, appcode, {
89
- level_type: defaultAccess.level_type,
90
- level_id: defaultAccess.level_id,
91
- });
71
+ const defaultAccess = await this.getDefaultAccess(user, roleMappings);
72
+ await this.userService.setLastLevelTypeAndId(user.id, defaultAccess.level_type, defaultAccess.level_id);
73
+ const token = await this.userSessionService.createSession(user, appcode, defaultAccess);
92
74
  if (user.is_firstlogin === 1) {
93
75
  user.invitation_status = 'ACCEPTED';
94
76
  user.is_firstlogin = 0;
@@ -103,6 +85,32 @@ let LoginService = class LoginService {
103
85
  level_id: defaultAccess.level_id,
104
86
  };
105
87
  }
88
+ async getDefaultAccess(user, roleMappings) {
89
+ const orgAccess = roleMappings.find(r => r.level_type === 'ORG');
90
+ const brnAccesses = roleMappings.filter(r => r.level_type === 'BRN');
91
+ const schAccesses = roleMappings.filter(r => r.level_type === 'SCH');
92
+ const validURM = roleMappings.find(r => r.level_type === user.last_level_type && r.level_id === user.last_level_id);
93
+ if (user.last_level_type && user.last_level_id && validURM) {
94
+ return { level_type: user.last_level_type, level_id: user.last_level_id };
95
+ }
96
+ if (orgAccess) {
97
+ return { level_type: 'ORG', level_id: orgAccess.level_id };
98
+ }
99
+ if (brnAccesses.length) {
100
+ const brandId = brnAccesses[0].level_id;
101
+ const rows = await this.dataSource.query(`SELECT id FROM cr_school WHERE brand_id = ? ORDER BY id ASC LIMIT 1`, [brandId]);
102
+ if (rows.length) {
103
+ return { level_type: 'SCH', level_id: rows[0].id };
104
+ }
105
+ else {
106
+ throw new common_1.BadRequestException('User has BRN access but no schools found under that brand.');
107
+ }
108
+ }
109
+ if (schAccesses.length) {
110
+ return { level_type: 'SCH', level_id: schAccesses[0].level_id };
111
+ }
112
+ throw new common_1.BadRequestException('User does not have ORG, BRN, or SCH access for this app.');
113
+ }
106
114
  async loginWithGoogle(email, name) {
107
115
  let user = await this.userService.findByEmailId(email);
108
116
  if (!user) {
@@ -141,6 +149,7 @@ exports.LoginService = LoginService = __decorate([
141
149
  user_session_service_1.UserSessionService,
142
150
  config_1.ConfigService,
143
151
  typeorm_2.Repository,
144
- typeorm_2.Repository])
152
+ typeorm_2.Repository,
153
+ typeorm_2.DataSource])
145
154
  ], LoginService);
146
155
  //# sourceMappingURL=login.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.service.js","sourceRoot":"","sources":["../../../../src/module/user/service/login.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.service.js","sourceRoot":"","sources":["../../../../src/module/user/service/login.service.ts"],"names":[],"mappings":"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"}