@tomei/sso 0.2.1 → 0.2.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 (153) hide show
  1. package/.commitlintrc.json +22 -22
  2. package/.prettierrc +4 -4
  3. package/Jenkinsfile +42 -0
  4. package/README.md +23 -23
  5. package/__tests__/unit/components/login-history/login-history.repository.spec.ts +95 -95
  6. package/__tests__/unit/components/login-user/login-user.spec.ts +223 -223
  7. package/__tests__/unit/components/login-user/user.repository.spec.ts +81 -81
  8. package/__tests__/unit/components/password-hash/password-hash.service.spec.ts +31 -32
  9. package/__tests__/unit/components/system-access/system-access.repository.spec.ts +78 -78
  10. package/__tests__/unit/redis-client/redis.service.spec.ts +23 -23
  11. package/__tests__/unit/session/session.service.spec.ts +27 -27
  12. package/create-sso-user.sql +39 -39
  13. package/dist/__tests__/unit/components/login-history/login-history.repository.spec.d.ts +1 -1
  14. package/dist/__tests__/unit/components/login-history/login-history.repository.spec.js +98 -98
  15. package/dist/__tests__/unit/components/login-user/login-user.spec.d.ts +1 -1
  16. package/dist/__tests__/unit/components/login-user/login-user.spec.js +207 -207
  17. package/dist/__tests__/unit/components/login-user/login-user.spec.js.map +1 -1
  18. package/dist/__tests__/unit/components/login-user/user.repository.spec.d.ts +1 -1
  19. package/dist/__tests__/unit/components/login-user/user.repository.spec.js +77 -77
  20. package/dist/__tests__/unit/components/password-hash/password-hash.service.spec.d.ts +1 -1
  21. package/dist/__tests__/unit/components/password-hash/password-hash.service.spec.js +37 -37
  22. package/dist/__tests__/unit/components/password-hash/password-hash.service.spec.js.map +1 -1
  23. package/dist/__tests__/unit/components/system/system.repository.spec.d.ts +1 -1
  24. package/dist/__tests__/unit/components/system/system.repository.spec.js +84 -84
  25. package/dist/__tests__/unit/components/system-access/system-access.repository.spec.d.ts +1 -1
  26. package/dist/__tests__/unit/components/system-access/system-access.repository.spec.js +74 -74
  27. package/dist/__tests__/unit/redis-client/redis.service.spec.d.ts +1 -1
  28. package/dist/__tests__/unit/redis-client/redis.service.spec.js +31 -31
  29. package/dist/__tests__/unit/session/session.service.spec.d.ts +1 -1
  30. package/dist/__tests__/unit/session/session.service.spec.js +35 -35
  31. package/dist/index.d.ts +1 -1
  32. package/dist/index.js +17 -17
  33. package/dist/src/components/index.d.ts +7 -7
  34. package/dist/src/components/index.js +23 -23
  35. package/dist/src/components/login-history/index.d.ts +1 -1
  36. package/dist/src/components/login-history/index.js +17 -17
  37. package/dist/src/components/login-history/login-history.repository.d.ts +9 -9
  38. package/dist/src/components/login-history/login-history.repository.js +49 -49
  39. package/dist/src/components/login-user/index.d.ts +3 -3
  40. package/dist/src/components/login-user/index.js +19 -19
  41. package/dist/src/components/login-user/interfaces/index.d.ts +1 -1
  42. package/dist/src/components/login-user/interfaces/index.js +17 -17
  43. package/dist/src/components/login-user/interfaces/user-info.interface.d.ts +9 -9
  44. package/dist/src/components/login-user/interfaces/user-info.interface.js +2 -2
  45. package/dist/src/components/login-user/login-user.d.ts +41 -41
  46. package/dist/src/components/login-user/login-user.js +332 -331
  47. package/dist/src/components/login-user/login-user.js.map +1 -1
  48. package/dist/src/components/login-user/user.repository.d.ts +9 -9
  49. package/dist/src/components/login-user/user.repository.js +49 -49
  50. package/dist/src/components/password-hash/index.d.ts +2 -2
  51. package/dist/src/components/password-hash/index.js +18 -18
  52. package/dist/src/components/password-hash/interfaces/index.d.ts +1 -1
  53. package/dist/src/components/password-hash/interfaces/index.js +17 -17
  54. package/dist/src/components/password-hash/interfaces/password-hash-service.interface.d.ts +4 -4
  55. package/dist/src/components/password-hash/interfaces/password-hash-service.interface.js +2 -2
  56. package/dist/src/components/password-hash/password-hash.service.d.ts +6 -6
  57. package/dist/src/components/password-hash/password-hash.service.js +27 -27
  58. package/dist/src/components/system/index.d.ts +1 -1
  59. package/dist/src/components/system/index.js +17 -17
  60. package/dist/src/components/system/system.repository.d.ts +9 -9
  61. package/dist/src/components/system/system.repository.js +49 -49
  62. package/dist/src/components/system-access/index.d.ts +1 -1
  63. package/dist/src/components/system-access/index.js +17 -17
  64. package/dist/src/components/system-access/system-access.repository.d.ts +9 -9
  65. package/dist/src/components/system-access/system-access.repository.js +49 -49
  66. package/dist/src/components/user-group/index.d.ts +1 -1
  67. package/dist/src/components/user-group/index.js +17 -17
  68. package/dist/src/components/user-group/user-group.repository.d.ts +9 -9
  69. package/dist/src/components/user-group/user-group.repository.js +49 -49
  70. package/dist/src/components/user-user-group/index.d.ts +1 -1
  71. package/dist/src/components/user-user-group/index.js +17 -17
  72. package/dist/src/components/user-user-group/user-user-group.repository.d.ts +9 -9
  73. package/dist/src/components/user-user-group/user-user-group.repository.js +49 -49
  74. package/dist/src/index.d.ts +6 -6
  75. package/dist/src/index.js +23 -23
  76. package/dist/src/interfaces/index.d.ts +2 -2
  77. package/dist/src/interfaces/index.js +18 -18
  78. package/dist/src/interfaces/system-login.interface.d.ts +6 -6
  79. package/dist/src/interfaces/system-login.interface.js +2 -2
  80. package/dist/src/interfaces/user-session.interface.d.ts +4 -4
  81. package/dist/src/interfaces/user-session.interface.js +2 -2
  82. package/dist/src/mail/index.d.ts +2 -2
  83. package/dist/src/mail/index.js +18 -18
  84. package/dist/src/mail/interfaces/index.d.ts +2 -2
  85. package/dist/src/mail/interfaces/index.js +18 -18
  86. package/dist/src/mail/interfaces/send-mail.interface.d.ts +8 -8
  87. package/dist/src/mail/interfaces/send-mail.interface.js +2 -2
  88. package/dist/src/mail/interfaces/send-new-login-alert.interface.d.ts +6 -6
  89. package/dist/src/mail/interfaces/send-new-login-alert.interface.js +2 -2
  90. package/dist/src/mail/mail.d.ts +7 -7
  91. package/dist/src/mail/mail.js +48 -48
  92. package/dist/src/mail/mail.service.d.ts +7 -7
  93. package/dist/src/mail/mail.service.js +41 -41
  94. package/dist/src/prisma-client/__mocks__/prisma.d.ts +3 -3
  95. package/dist/src/prisma-client/__mocks__/prisma.js +13 -13
  96. package/dist/src/prisma-client/client.d.ts +3 -3
  97. package/dist/src/prisma-client/client.js +5 -5
  98. package/dist/src/prisma-client/index.d.ts +1 -1
  99. package/dist/src/prisma-client/index.js +17 -17
  100. package/dist/src/redis-client/__mocks__/jest-initial-setup.d.ts +1 -1
  101. package/dist/src/redis-client/__mocks__/jest-initial-setup.js +4 -4
  102. package/dist/src/redis-client/__mocks__/redis-mock.d.ts +2 -2
  103. package/dist/src/redis-client/__mocks__/redis-mock.js +22 -22
  104. package/dist/src/redis-client/index.d.ts +1 -1
  105. package/dist/src/redis-client/index.js +17 -17
  106. package/dist/src/redis-client/redis.service.d.ts +7 -7
  107. package/dist/src/redis-client/redis.service.js +55 -55
  108. package/dist/src/session/index.d.ts +2 -2
  109. package/dist/src/session/index.js +18 -18
  110. package/dist/src/session/interfaces/index.d.ts +1 -1
  111. package/dist/src/session/interfaces/index.js +17 -17
  112. package/dist/src/session/interfaces/session-service.interface.d.ts +5 -5
  113. package/dist/src/session/interfaces/session-service.interface.js +2 -2
  114. package/dist/src/session/session.service.d.ts +9 -9
  115. package/dist/src/session/session.service.js +51 -51
  116. package/dist/tsconfig.tsbuildinfo +1 -1
  117. package/package.json +69 -69
  118. package/sampledotenv +7 -7
  119. package/src/components/index.ts +7 -7
  120. package/src/components/login-history/index.ts +1 -1
  121. package/src/components/login-history/login-history.repository.ts +33 -33
  122. package/src/components/login-user/index.ts +4 -4
  123. package/src/components/login-user/interfaces/user-info.interface.ts +9 -9
  124. package/src/components/login-user/login-user.ts +5 -2
  125. package/src/components/login-user/user.repository.ts +33 -33
  126. package/src/components/password-hash/index.ts +2 -2
  127. package/src/components/password-hash/interfaces/password-hash-service.interface.ts +4 -4
  128. package/src/components/password-hash/password-hash.service.ts +14 -14
  129. package/src/components/system/index.ts +1 -1
  130. package/src/components/system/system.repository.ts +33 -33
  131. package/src/components/system-access/index.ts +1 -1
  132. package/src/components/system-access/system-access.repository.ts +33 -33
  133. package/src/components/user-group/user-group.repository.ts +33 -33
  134. package/src/components/user-user-group/user-user-group.repository.ts +33 -33
  135. package/src/index.ts +7 -7
  136. package/src/interfaces/index.ts +2 -2
  137. package/src/interfaces/system-login.interface.ts +6 -6
  138. package/src/interfaces/user-session.interface.ts +5 -5
  139. package/src/mail/index.ts +2 -2
  140. package/src/mail/interfaces/index.ts +2 -2
  141. package/src/mail/interfaces/send-mail.interface.ts +8 -8
  142. package/src/mail/interfaces/send-new-login-alert.interface.ts +6 -6
  143. package/src/mail/mail.service.ts +33 -33
  144. package/src/mail/mail.ts +40 -40
  145. package/src/prisma-client/__mocks__/prisma.ts +15 -15
  146. package/src/prisma-client/client.ts +3 -3
  147. package/src/redis-client/__mocks__/jest-initial-setup.ts +2 -2
  148. package/src/redis-client/__mocks__/redis-mock.ts +28 -28
  149. package/src/session/index.ts +2 -2
  150. package/src/session/interfaces/index.ts +1 -1
  151. package/src/session/interfaces/session-service.interface.ts +6 -6
  152. package/src/session/session.service.ts +45 -45
  153. package/tsconfig.build.json +5 -5
@@ -1,33 +1,33 @@
1
- import prisma from '../../prisma-client/client';
2
-
3
- export class UserUserGroupRepository {
4
- private _prisma: any;
5
-
6
- constructor(client?: any) {
7
- if (client) {
8
- this._prisma = client;
9
- } else {
10
- this._prisma = prisma;
11
- }
12
- }
13
-
14
- public async create(data: any): Promise<any> {
15
- return await this._prisma.userUserGroup.create(data);
16
- }
17
-
18
- public async findAll(options: any): Promise<any[]> {
19
- return await this._prisma.userUserGroup.findMany(options);
20
- }
21
-
22
- public async findOne(options: any): Promise<any> {
23
- return await this._prisma.userUserGroup.findFirst(options);
24
- }
25
-
26
- public async update(where: any, data: any): Promise<any> {
27
- return await this._prisma.userUserGroup.update(where, data);
28
- }
29
-
30
- public async delete(where: any): Promise<any> {
31
- return await this._prisma.userUserGroup.delete(where);
32
- }
33
- }
1
+ import prisma from '../../prisma-client/client';
2
+
3
+ export class UserUserGroupRepository {
4
+ private _prisma: any;
5
+
6
+ constructor(client?: any) {
7
+ if (client) {
8
+ this._prisma = client;
9
+ } else {
10
+ this._prisma = prisma;
11
+ }
12
+ }
13
+
14
+ public async create(data: any): Promise<any> {
15
+ return await this._prisma.userUserGroup.create(data);
16
+ }
17
+
18
+ public async findAll(options: any): Promise<any[]> {
19
+ return await this._prisma.userUserGroup.findMany(options);
20
+ }
21
+
22
+ public async findOne(options: any): Promise<any> {
23
+ return await this._prisma.userUserGroup.findFirst(options);
24
+ }
25
+
26
+ public async update(where: any, data: any): Promise<any> {
27
+ return await this._prisma.userUserGroup.update(where, data);
28
+ }
29
+
30
+ public async delete(where: any): Promise<any> {
31
+ return await this._prisma.userUserGroup.delete(where);
32
+ }
33
+ }
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
- require('dotenv').config();
2
- export * from './components';
3
- export * from './interfaces';
4
- export * from './redis-client';
5
- export * from './mail';
6
- export * from './prisma-client';
7
- export * from './session';
1
+ require('dotenv').config();
2
+ export * from './components';
3
+ export * from './interfaces';
4
+ export * from './redis-client';
5
+ export * from './mail';
6
+ export * from './prisma-client';
7
+ export * from './session';
@@ -1,2 +1,2 @@
1
- export * from './system-login.interface';
2
- export * from './user-session.interface';
1
+ export * from './system-login.interface';
2
+ export * from './user-session.interface';
@@ -1,6 +1,6 @@
1
- export interface ISystemLogin {
2
- id: string;
3
- code: string;
4
- sessionId: string;
5
- privileges: any[];
6
- }
1
+ export interface ISystemLogin {
2
+ id: string;
3
+ code: string;
4
+ sessionId: string;
5
+ privileges: any[];
6
+ }
@@ -1,5 +1,5 @@
1
- import { ISystemLogin } from './system-login.interface';
2
-
3
- export interface IUserSession {
4
- systemLogins: ISystemLogin[];
5
- }
1
+ import { ISystemLogin } from './system-login.interface';
2
+
3
+ export interface IUserSession {
4
+ systemLogins: ISystemLogin[];
5
+ }
package/src/mail/index.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './mail.service';
2
- export * from './mail';
1
+ export * from './mail.service';
2
+ export * from './mail';
@@ -1,2 +1,2 @@
1
- export * from './send-mail.interface';
2
- export * from './send-new-login-alert.interface';
1
+ export * from './send-mail.interface';
2
+ export * from './send-new-login-alert.interface';
@@ -1,8 +1,8 @@
1
- export interface ISendMailOptionsInterface {
2
- to: string | string[];
3
- cc?: string | string[];
4
- bcc?: string | string[];
5
- subject: string;
6
- text?: string;
7
- html: string;
8
- }
1
+ export interface ISendMailOptionsInterface {
2
+ to: string | string[];
3
+ cc?: string | string[];
4
+ bcc?: string | string[];
5
+ subject: string;
6
+ text?: string;
7
+ html: string;
8
+ }
@@ -1,6 +1,6 @@
1
- export interface ISendNewLoginAlertOptions {
2
- IpAddress: string;
3
- Email: string;
4
- Name: string;
5
- LoginDate: Date;
6
- }
1
+ export interface ISendNewLoginAlertOptions {
2
+ IpAddress: string;
3
+ Email: string;
4
+ Name: string;
5
+ LoginDate: Date;
6
+ }
@@ -1,33 +1,33 @@
1
- import { ISendNewLoginAlertOptions } from './interfaces/send-new-login-alert.interface';
2
- import Mail from './mail';
3
-
4
- export class MailService {
5
- MailClient: Mail;
6
- constructor() {
7
- this.MailClient = Mail.init();
8
- }
9
-
10
- public async sendNewLoginAlertEmail(
11
- options: ISendNewLoginAlertOptions,
12
- ): Promise<void> {
13
- try {
14
- await this.MailClient.sendMail({
15
- to: options.Email,
16
- subject: 'New Login Alert',
17
- html: `<p>Dear ${options.Name},</p>
18
- <p>There was a new login to your account from ${
19
- options.IpAddress
20
- } on ${options.LoginDate.toLocaleString()}.</p>
21
- <p>If this was you, you can safely ignore this email.</p>
22
- <p>If you suspect that someone else is trying to access your account, please contact us immediately at itd-support@tomei.com.my.</p>
23
- <p>Thank you!,</p>
24
- <p>
25
- Best Regards,
26
- IT Department
27
- </p>`,
28
- });
29
- } catch (error) {
30
- throw error;
31
- }
32
- }
33
- }
1
+ import { ISendNewLoginAlertOptions } from './interfaces/send-new-login-alert.interface';
2
+ import Mail from './mail';
3
+
4
+ export class MailService {
5
+ MailClient: Mail;
6
+ constructor() {
7
+ this.MailClient = Mail.init();
8
+ }
9
+
10
+ public async sendNewLoginAlertEmail(
11
+ options: ISendNewLoginAlertOptions,
12
+ ): Promise<void> {
13
+ try {
14
+ await this.MailClient.sendMail({
15
+ to: options.Email,
16
+ subject: 'New Login Alert',
17
+ html: `<p>Dear ${options.Name},</p>
18
+ <p>There was a new login to your account from ${
19
+ options.IpAddress
20
+ } on ${options.LoginDate.toLocaleString()}.</p>
21
+ <p>If this was you, you can safely ignore this email.</p>
22
+ <p>If you suspect that someone else is trying to access your account, please contact us immediately at itd-support@tomei.com.my.</p>
23
+ <p>Thank you!,</p>
24
+ <p>
25
+ Best Regards,
26
+ IT Department
27
+ </p>`,
28
+ });
29
+ } catch (error) {
30
+ throw error;
31
+ }
32
+ }
33
+ }
package/src/mail/mail.ts CHANGED
@@ -1,40 +1,40 @@
1
- import * as nodemailer from 'nodemailer';
2
- import { ISendMailOptionsInterface } from './interfaces/send-mail.interface';
3
-
4
- export default class Mail {
5
- private static transporter: nodemailer.Transporter;
6
-
7
- constructor() {}
8
-
9
- static init() {
10
- if (!Mail.transporter) {
11
- Mail.transporter = nodemailer.createTransport({
12
- host: process.env.SMTP_HOST,
13
- port: Number(process.env.SMTP_PORT),
14
- secure: Number(process.env.SMTP_PORT) === 465,
15
- auth: {
16
- user: process.env.EMAIL_SENDER,
17
- pass: process.env.EMAIL_PASSWORD,
18
- },
19
- });
20
- }
21
- return new Mail();
22
- }
23
-
24
- //SEND MAIL
25
- async sendMail(options: ISendMailOptionsInterface): Promise<void> {
26
- try {
27
- await Mail.transporter.sendMail({
28
- from: process.env.EMAIL_SENDER,
29
- to: options.to,
30
- cc: options.cc,
31
- bcc: options.bcc,
32
- subject: options.subject,
33
- text: options.text,
34
- html: options.html,
35
- });
36
- } catch (error) {
37
- throw error;
38
- }
39
- }
40
- }
1
+ import * as nodemailer from 'nodemailer';
2
+ import { ISendMailOptionsInterface } from './interfaces/send-mail.interface';
3
+
4
+ export default class Mail {
5
+ private static transporter: nodemailer.Transporter;
6
+
7
+ constructor() {}
8
+
9
+ static init() {
10
+ if (!Mail.transporter) {
11
+ Mail.transporter = nodemailer.createTransport({
12
+ host: process.env.SMTP_HOST,
13
+ port: Number(process.env.SMTP_PORT),
14
+ secure: Number(process.env.SMTP_PORT) === 465,
15
+ auth: {
16
+ user: process.env.EMAIL_SENDER,
17
+ pass: process.env.EMAIL_PASSWORD,
18
+ },
19
+ });
20
+ }
21
+ return new Mail();
22
+ }
23
+
24
+ //SEND MAIL
25
+ async sendMail(options: ISendMailOptionsInterface): Promise<void> {
26
+ try {
27
+ await Mail.transporter.sendMail({
28
+ from: process.env.EMAIL_SENDER,
29
+ to: options.to,
30
+ cc: options.cc,
31
+ bcc: options.bcc,
32
+ subject: options.subject,
33
+ text: options.text,
34
+ html: options.html,
35
+ });
36
+ } catch (error) {
37
+ throw error;
38
+ }
39
+ }
40
+ }
@@ -1,15 +1,15 @@
1
- import { PrismaClient } from '@prisma/client';
2
- import { mockDeep, mockReset, DeepMockProxy } from 'jest-mock-extended';
3
-
4
- import prisma from '../client';
5
-
6
- jest.mock('../client', () => ({
7
- __esModule: true,
8
- default: mockDeep<PrismaClient>(),
9
- }));
10
-
11
- beforeEach(() => {
12
- mockReset(prismaMock);
13
- });
14
-
15
- export const prismaMock = prisma as unknown as DeepMockProxy<PrismaClient>;
1
+ import { PrismaClient } from '@prisma/client';
2
+ import { mockDeep, mockReset, DeepMockProxy } from 'jest-mock-extended';
3
+
4
+ import prisma from '../client';
5
+
6
+ jest.mock('../client', () => ({
7
+ __esModule: true,
8
+ default: mockDeep<PrismaClient>(),
9
+ }));
10
+
11
+ beforeEach(() => {
12
+ mockReset(prismaMock);
13
+ });
14
+
15
+ export const prismaMock = prisma as unknown as DeepMockProxy<PrismaClient>;
@@ -1,3 +1,3 @@
1
- import { PrismaClient } from '@prisma/client';
2
- const prisma = new PrismaClient();
3
- export default prisma;
1
+ import { PrismaClient } from '@prisma/client';
2
+ const prisma = new PrismaClient();
3
+ export default prisma;
@@ -1,2 +1,2 @@
1
- import redis from './redis-mock';
2
- jest.mock('redis', () => redis);
1
+ import redis from './redis-mock';
2
+ jest.mock('redis', () => redis);
@@ -1,28 +1,28 @@
1
- /* eslint-disable @typescript-eslint/explicit-function-return-type */
2
- // redis-mock has not been updated for node-redis v4 yet, but the main changes
3
- // in the API are camelCase names and promises instead of callback, so we can work around it.
4
- // https://github.com/yeahoffline/redis-mock/issues/195
5
- import redis, { createClient } from 'redis-mock';
6
- // @ts-expect-error Work-around redis-mock types reporting incorrectly as v4 redis.
7
- import { RedisClient } from '@types/redis';
8
- import { promisify } from 'util';
9
- const client = createClient() as unknown as RedisClient;
10
- const setEx = promisify(client.setex).bind(client);
11
- const v4Client = {
12
- connect: () => undefined,
13
- get: promisify(client.get).bind(client),
14
- set: promisify(client.set).bind(client),
15
- del: promisify(client.del).bind(client),
16
- hSet: promisify(client.hset).bind(client),
17
- hGet: promisify(client.hget).bind(client),
18
- hDel: promisify(client.hdel).bind(client),
19
- flushAll: promisify(client.flushall).bind(client),
20
- setEx: promisify(client.setex).bind(client),
21
- expire: promisify(client.expire).bind(client),
22
- mGet: promisify(client.mget).bind(client),
23
- pSetEx: (key: string, ms: number, value: string) =>
24
- setEx(key, ms / 1000, value),
25
- on: () => undefined,
26
- // Add additional functions as needed...
27
- };
28
- export default { ...redis, createClient: () => v4Client };
1
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
2
+ // redis-mock has not been updated for node-redis v4 yet, but the main changes
3
+ // in the API are camelCase names and promises instead of callback, so we can work around it.
4
+ // https://github.com/yeahoffline/redis-mock/issues/195
5
+ import redis, { createClient } from 'redis-mock';
6
+ // @ts-expect-error Work-around redis-mock types reporting incorrectly as v4 redis.
7
+ import { RedisClient } from '@types/redis';
8
+ import { promisify } from 'util';
9
+ const client = createClient() as unknown as RedisClient;
10
+ const setEx = promisify(client.setex).bind(client);
11
+ const v4Client = {
12
+ connect: () => undefined,
13
+ get: promisify(client.get).bind(client),
14
+ set: promisify(client.set).bind(client),
15
+ del: promisify(client.del).bind(client),
16
+ hSet: promisify(client.hset).bind(client),
17
+ hGet: promisify(client.hget).bind(client),
18
+ hDel: promisify(client.hdel).bind(client),
19
+ flushAll: promisify(client.flushall).bind(client),
20
+ setEx: promisify(client.setex).bind(client),
21
+ expire: promisify(client.expire).bind(client),
22
+ mGet: promisify(client.mget).bind(client),
23
+ pSetEx: (key: string, ms: number, value: string) =>
24
+ setEx(key, ms / 1000, value),
25
+ on: () => undefined,
26
+ // Add additional functions as needed...
27
+ };
28
+ export default { ...redis, createClient: () => v4Client };
@@ -1,2 +1,2 @@
1
- export * from './interfaces';
2
- export * from './session.service';
1
+ export * from './interfaces';
2
+ export * from './session.service';
@@ -1 +1 @@
1
- export * from './session-service.interface';
1
+ export * from './session-service.interface';
@@ -1,6 +1,6 @@
1
- import { IUserSession } from '../../interfaces/user-session.interface';
2
-
3
- export interface ISessionService {
4
- retrieveUserSession(userId: string): Promise<IUserSession>;
5
- setUserSession(userId: string, sessionData: IUserSession): Promise<void>;
6
- }
1
+ import { IUserSession } from '../../interfaces/user-session.interface';
2
+
3
+ export interface ISessionService {
4
+ retrieveUserSession(userId: string): Promise<IUserSession>;
5
+ setUserSession(userId: string, sessionData: IUserSession): Promise<void>;
6
+ }
@@ -1,45 +1,45 @@
1
- import { RedisService } from '../redis-client/redis.service';
2
- import { ISessionService } from './interfaces/session-service.interface';
3
- import { IUserSession } from '../interfaces/user-session.interface';
4
-
5
- export class SessionService implements ISessionService {
6
- private static _RedisService: RedisService;
7
-
8
- private constructor() {}
9
-
10
- static async init(): Promise<SessionService> {
11
- const sessionService = new SessionService();
12
- SessionService._RedisService = await RedisService.init();
13
- return sessionService;
14
- }
15
-
16
- async setUserSession(
17
- userId: string,
18
- sessionData: IUserSession,
19
- ): Promise<void> {
20
- try {
21
- const key = `tomei-sid:${userId}`;
22
- await SessionService._RedisService.set(
23
- key,
24
- sessionData,
25
- 60 * 60 * 24 * 1,
26
- );
27
- } catch (error) {
28
- throw error;
29
- }
30
- }
31
-
32
- async retrieveUserSession(userId: string): Promise<IUserSession> {
33
- try {
34
- const key = `tomei-sid:${userId}`;
35
- const stringData = await SessionService._RedisService.get(key);
36
- if (!stringData)
37
- return {
38
- systemLogins: [],
39
- };
40
- return JSON.parse(stringData);
41
- } catch (error) {
42
- throw error;
43
- }
44
- }
45
- }
1
+ import { RedisService } from '../redis-client/redis.service';
2
+ import { ISessionService } from './interfaces/session-service.interface';
3
+ import { IUserSession } from '../interfaces/user-session.interface';
4
+
5
+ export class SessionService implements ISessionService {
6
+ private static _RedisService: RedisService;
7
+
8
+ private constructor() {}
9
+
10
+ static async init(): Promise<SessionService> {
11
+ const sessionService = new SessionService();
12
+ SessionService._RedisService = await RedisService.init();
13
+ return sessionService;
14
+ }
15
+
16
+ async setUserSession(
17
+ userId: string,
18
+ sessionData: IUserSession,
19
+ ): Promise<void> {
20
+ try {
21
+ const key = `tomei-sid:${userId}`;
22
+ await SessionService._RedisService.set(
23
+ key,
24
+ sessionData,
25
+ 60 * 60 * 24 * 1,
26
+ );
27
+ } catch (error) {
28
+ throw error;
29
+ }
30
+ }
31
+
32
+ async retrieveUserSession(userId: string): Promise<IUserSession> {
33
+ try {
34
+ const key = `tomei-sid:${userId}`;
35
+ const stringData = await SessionService._RedisService.get(key);
36
+ if (!stringData)
37
+ return {
38
+ systemLogins: [],
39
+ };
40
+ return JSON.parse(stringData);
41
+ } catch (error) {
42
+ throw error;
43
+ }
44
+ }
45
+ }
@@ -1,6 +1,6 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "include": ["**/*.ts"],
4
- "exclude": ["node_modules", "__test__", "dist", "**/*spec.ts"]
5
- }
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "include": ["**/*.ts"],
4
+ "exclude": ["node_modules", "__test__", "dist", "**/*spec.ts"]
5
+ }
6
6