@solidstarters/solid-core 1.2.201 → 1.2.203
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.
- package/dist/config/cache.options.d.ts +1 -1
- package/dist/config/cache.options.d.ts.map +1 -1
- package/dist/config/cache.options.js +2 -2
- package/dist/config/cache.options.js.map +1 -1
- package/dist/config/iam.config.d.ts +4 -0
- package/dist/config/iam.config.d.ts.map +1 -1
- package/dist/config/iam.config.js +2 -0
- package/dist/config/iam.config.js.map +1 -1
- package/dist/controllers/model-metadata.controller.d.ts +25 -0
- package/dist/controllers/model-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/model-metadata.controller.js +23 -0
- package/dist/controllers/model-metadata.controller.js.map +1 -1
- package/dist/controllers/setting.controller.d.ts +1 -2
- package/dist/controllers/setting.controller.d.ts.map +1 -1
- package/dist/controllers/setting.controller.js +21 -42
- package/dist/controllers/setting.controller.js.map +1 -1
- package/dist/decorators/sms-provider.decorator.d.ts +3 -0
- package/dist/decorators/sms-provider.decorator.d.ts.map +1 -0
- package/dist/decorators/sms-provider.decorator.js +11 -0
- package/dist/decorators/sms-provider.decorator.js.map +1 -0
- package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-role-metadata.dto.js +1 -0
- package/dist/dtos/create-role-metadata.dto.js.map +1 -1
- package/dist/dtos/navigation.dto.d.ts +6 -0
- package/dist/dtos/navigation.dto.d.ts.map +1 -0
- package/dist/dtos/navigation.dto.js +33 -0
- package/dist/dtos/navigation.dto.js.map +1 -0
- package/dist/dtos/sign-in.dto.js +3 -3
- package/dist/dtos/sign-in.dto.js.map +1 -1
- package/dist/entities/common.entity.js +5 -4
- package/dist/entities/common.entity.js.map +1 -1
- package/dist/entities/field-metadata.entity.d.ts.map +1 -1
- package/dist/entities/field-metadata.entity.js +2 -1
- package/dist/entities/field-metadata.entity.js.map +1 -1
- package/dist/entities/legacy-common.entity.d.ts.map +1 -1
- package/dist/entities/legacy-common.entity.js +5 -4
- package/dist/entities/legacy-common.entity.js.map +1 -1
- package/dist/entities/model-metadata.entity.d.ts.map +1 -1
- package/dist/entities/model-metadata.entity.js +5 -1
- package/dist/entities/model-metadata.entity.js.map +1 -1
- package/dist/factories/mail.factory.d.ts.map +1 -1
- package/dist/factories/mail.factory.js.map +1 -1
- package/dist/factories/sms.factory.d.ts +14 -0
- package/dist/factories/sms.factory.d.ts.map +1 -0
- package/dist/factories/sms.factory.js +53 -0
- package/dist/factories/sms.factory.js.map +1 -0
- package/dist/helpers/date.helper.d.ts.map +1 -1
- package/dist/helpers/date.helper.js +13 -4
- package/dist/helpers/date.helper.js.map +1 -1
- package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts +3 -0
- package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +99 -0
- package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
- package/dist/helpers/image-encoding.helper.d.ts +10 -0
- package/dist/helpers/image-encoding.helper.d.ts.map +1 -0
- package/dist/helpers/image-encoding.helper.js +44 -0
- package/dist/helpers/image-encoding.helper.js.map +1 -0
- package/dist/helpers/module.helper.d.ts.map +1 -1
- package/dist/helpers/module.helper.js +2 -0
- package/dist/helpers/module.helper.js.map +1 -1
- package/dist/helpers/solid-microservice-adapter.service.d.ts +31 -0
- package/dist/helpers/solid-microservice-adapter.service.d.ts.map +1 -0
- package/dist/helpers/solid-microservice-adapter.service.js +53 -0
- package/dist/helpers/solid-microservice-adapter.service.js.map +1 -0
- package/dist/helpers/solid-registry.d.ts +3 -0
- package/dist/helpers/solid-registry.d.ts.map +1 -1
- package/dist/helpers/solid-registry.js +7 -0
- package/dist/helpers/solid-registry.js.map +1 -1
- package/dist/index.d.ts +11 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -6
- package/dist/index.js.map +1 -1
- package/dist/jobs/database/{sms-publisher-database.service.d.ts → msg91-sms-publisher-database.service.d.ts} +2 -2
- package/dist/jobs/database/msg91-sms-publisher-database.service.d.ts.map +1 -0
- package/dist/jobs/database/{sms-publisher-database.service.js → msg91-sms-publisher-database.service.js} +8 -8
- package/dist/jobs/database/msg91-sms-publisher-database.service.js.map +1 -0
- package/dist/jobs/database/{sms-queue-database-options.d.ts → msg91-sms-queue-database-options.d.ts} +1 -1
- package/dist/jobs/database/msg91-sms-queue-database-options.d.ts.map +1 -0
- package/dist/jobs/database/{sms-queue-database-options.js → msg91-sms-queue-database-options.js} +1 -1
- package/dist/jobs/database/msg91-sms-queue-database-options.js.map +1 -0
- package/dist/jobs/database/{sms-subscriber-database.service.d.ts → msg91-sms-subscriber-database.service.d.ts} +5 -5
- package/dist/jobs/database/msg91-sms-subscriber-database.service.d.ts.map +1 -0
- package/dist/jobs/database/{sms-subscriber-database.service.js → msg91-sms-subscriber-database.service.js} +14 -12
- package/dist/jobs/database/msg91-sms-subscriber-database.service.js.map +1 -0
- package/dist/jobs/database/otp-subscriber-database.service.d.ts +4 -4
- package/dist/jobs/database/otp-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/otp-subscriber-database.service.js +6 -4
- package/dist/jobs/database/otp-subscriber-database.service.js.map +1 -1
- package/dist/jobs/database/twilio-sms-subscriber-database.service.d.ts +3 -3
- package/dist/jobs/database/twilio-sms-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/twilio-sms-subscriber-database.service.js +6 -4
- package/dist/jobs/database/twilio-sms-subscriber-database.service.js.map +1 -1
- package/dist/jobs/{sms-publisher.service.d.ts → msg91-otp-publisher.service.d.ts} +2 -2
- package/dist/jobs/msg91-otp-publisher.service.d.ts.map +1 -0
- package/dist/jobs/{sms-publisher.service.js → msg91-otp-publisher.service.js} +8 -8
- package/dist/jobs/msg91-otp-publisher.service.js.map +1 -0
- package/dist/jobs/{sms-queue-options.d.ts → msg91-otp-queue-options.d.ts} +1 -1
- package/dist/jobs/msg91-otp-queue-options.d.ts.map +1 -0
- package/dist/jobs/{otp-queue-options.js → msg91-otp-queue-options.js} +1 -1
- package/dist/jobs/msg91-otp-queue-options.js.map +1 -0
- package/dist/jobs/{sms-subscriber.service.d.ts → msg91-otp-subscriber.service.d.ts} +6 -6
- package/dist/jobs/msg91-otp-subscriber.service.d.ts.map +1 -0
- package/dist/jobs/{otp-subscriber.service.js → msg91-otp-subscriber.service.js} +14 -12
- package/dist/jobs/msg91-otp-subscriber.service.js.map +1 -0
- package/dist/jobs/{otp-publisher.service.d.ts → msg91-sms-publisher.service.d.ts} +2 -2
- package/dist/jobs/msg91-sms-publisher.service.d.ts.map +1 -0
- package/dist/jobs/{otp-publisher.service.js → msg91-sms-publisher.service.js} +8 -8
- package/dist/jobs/msg91-sms-publisher.service.js.map +1 -0
- package/dist/jobs/{otp-queue-options.d.ts → msg91-sms-queue-options.d.ts} +1 -1
- package/dist/jobs/msg91-sms-queue-options.d.ts.map +1 -0
- package/dist/jobs/{sms-queue-options.js → msg91-sms-queue-options.js} +1 -1
- package/dist/jobs/msg91-sms-queue-options.js.map +1 -0
- package/dist/jobs/{otp-subscriber.service.d.ts → msg91-sms-subscriber.service.d.ts} +7 -7
- package/dist/jobs/msg91-sms-subscriber.service.d.ts.map +1 -0
- package/dist/jobs/{sms-subscriber.service.js → msg91-sms-subscriber.service.js} +14 -12
- package/dist/jobs/msg91-sms-subscriber.service.js.map +1 -0
- package/dist/jobs/twilio-sms-subscriber.service.d.ts +3 -3
- package/dist/jobs/twilio-sms-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/twilio-sms-subscriber.service.js +6 -4
- package/dist/jobs/twilio-sms-subscriber.service.js.map +1 -1
- package/dist/mappers/list-of-values-mapper.d.ts.map +1 -1
- package/dist/mappers/list-of-values-mapper.js +1 -1
- package/dist/mappers/list-of-values-mapper.js.map +1 -1
- package/dist/repository/security-rule.repository.d.ts.map +1 -1
- package/dist/repository/security-rule.repository.js +7 -2
- package/dist/repository/security-rule.repository.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +24 -2
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +71 -25
- package/dist/seeders/user-seeder.service.d.ts.map +1 -1
- package/dist/seeders/user-seeder.service.js +5 -4
- package/dist/seeders/user-seeder.service.js.map +1 -1
- package/dist/services/authentication.service.d.ts +6 -3
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +53 -18
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts.map +1 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js.map +1 -1
- package/dist/services/crud.service.d.ts +1 -2
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +6 -1
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/excel.service.d.ts +1 -0
- package/dist/services/excel.service.d.ts.map +1 -1
- package/dist/services/excel.service.js +4 -0
- package/dist/services/excel.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts +28 -1
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +109 -2
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/setting.service.d.ts.map +1 -1
- package/dist/services/setting.service.js +3 -45
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/sms/Msg91BaseSMSService.js +6 -6
- package/dist/services/sms/Msg91BaseSMSService.js.map +1 -1
- package/dist/services/sms/Msg91OTPService.d.ts.map +1 -1
- package/dist/services/sms/Msg91OTPService.js +3 -1
- package/dist/services/sms/Msg91OTPService.js.map +1 -1
- package/dist/services/sms/Msg91SMSService.d.ts.map +1 -1
- package/dist/services/sms/Msg91SMSService.js +3 -1
- package/dist/services/sms/Msg91SMSService.js.map +1 -1
- package/dist/services/sms/TwilioSMSService.d.ts.map +1 -1
- package/dist/services/sms/TwilioSMSService.js +2 -0
- package/dist/services/sms/TwilioSMSService.js.map +1 -1
- package/dist/services/solid-introspect.service.d.ts +1 -0
- package/dist/services/solid-introspect.service.d.ts.map +1 -1
- package/dist/services/solid-introspect.service.js +14 -0
- package/dist/services/solid-introspect.service.js.map +1 -1
- package/dist/services/user.service.d.ts +8 -1
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +15 -4
- package/dist/services/user.service.js.map +1 -1
- package/dist/solid-core-cli.module.js +1 -1
- package/dist/solid-core-cli.module.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +29 -13
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/scheduled-job.subscriber.d.ts.map +1 -1
- package/dist/subscribers/scheduled-job.subscriber.js +1 -1
- package/dist/subscribers/scheduled-job.subscriber.js.map +1 -1
- package/dist/transformers/typeorm/local-date-time-transformer.d.ts +2 -2
- package/dist/transformers/typeorm/local-date-time-transformer.d.ts.map +1 -1
- package/dist/transformers/typeorm/local-date-time-transformer.js +28 -6
- package/dist/transformers/typeorm/local-date-time-transformer.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/config/cache.options.ts +6 -3
- package/src/config/iam.config.ts +2 -1
- package/src/controllers/model-metadata.controller.ts +21 -1
- package/src/controllers/setting.controller.ts +32 -36
- package/src/decorators/sms-provider.decorator.ts +7 -0
- package/src/dtos/create-role-metadata.dto.ts +3 -0
- package/src/dtos/navigation.dto.ts +14 -0
- package/src/dtos/sign-in.dto.ts +3 -3
- package/src/entities/common.entity.ts +7 -7
- package/src/entities/field-metadata.entity.ts +1 -1
- package/src/entities/legacy-common.entity.ts +6 -5
- package/src/entities/model-metadata.entity.ts +1 -1
- package/src/factories/mail.factory.ts +0 -1
- package/src/factories/sms.factory.ts +43 -0
- package/src/helpers/date.helper.ts +38 -9
- package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +138 -4
- package/src/helpers/image-encoding.helper.ts +71 -0
- package/src/helpers/module.helper.ts +3 -0
- package/src/helpers/solid-microservice-adapter.service.ts +68 -0
- package/src/helpers/solid-registry.ts +9 -0
- package/src/index.ts +11 -6
- package/src/jobs/database/{sms-publisher-database.service.ts → msg91-sms-publisher-database.service.ts} +2 -2
- package/src/jobs/database/{sms-subscriber-database.service.ts → msg91-sms-subscriber-database.service.ts} +9 -4
- package/src/jobs/database/otp-subscriber-database.service.ts +8 -2
- package/src/jobs/database/twilio-sms-subscriber-database.service.ts +5 -2
- package/src/jobs/{otp-publisher.service.ts → msg91-otp-publisher.service.ts} +2 -2
- package/src/jobs/{otp-subscriber.service.ts → msg91-otp-subscriber.service.ts} +10 -4
- package/src/jobs/{sms-publisher.service.ts → msg91-sms-publisher.service.ts} +2 -2
- package/src/jobs/{sms-subscriber.service.ts → msg91-sms-subscriber.service.ts} +9 -4
- package/src/jobs/twilio-sms-subscriber.service.ts +6 -2
- package/src/mappers/list-of-values-mapper.ts +2 -1
- package/src/repository/security-rule.repository.ts +7 -2
- package/src/seeders/module-metadata-seeder.service.ts +33 -6
- package/src/seeders/seed-data/email-templates/email-on-signup.handlebars.html +155 -0
- package/src/seeders/seed-data/sms-templates/text-on-signup.handlebars.txt +10 -0
- package/src/seeders/seed-data/solid-core-metadata.json +72 -26
- package/src/seeders/user-seeder.service.ts +5 -4
- package/src/services/1.js +6 -0
- package/src/services/authentication.service.ts +80 -15
- package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts +1 -2
- package/src/services/crud.service.ts +23 -19
- package/src/services/excel.service.ts +6 -0
- package/src/services/model-metadata.service.ts +151 -0
- package/src/services/setting.service.ts +12 -52
- package/src/services/sms/Msg91BaseSMSService.ts +6 -6
- package/src/services/sms/Msg91OTPService.ts +3 -2
- package/src/services/sms/Msg91SMSService.ts +3 -1
- package/src/services/sms/TwilioSMSService.ts +3 -3
- package/src/services/solid-introspect.service.ts +22 -0
- package/src/services/user.service.ts +19 -0
- package/src/solid-core-cli.module.ts +2 -2
- package/src/solid-core.module.ts +33 -13
- package/src/subscribers/scheduled-job.subscriber.ts +9 -2
- package/src/transformers/typeorm/local-date-time-transformer.ts +38 -13
- package/dist/jobs/database/sms-publisher-database.service.d.ts.map +0 -1
- package/dist/jobs/database/sms-publisher-database.service.js.map +0 -1
- package/dist/jobs/database/sms-queue-database-options.d.ts.map +0 -1
- package/dist/jobs/database/sms-queue-database-options.js.map +0 -1
- package/dist/jobs/database/sms-subscriber-database.service.d.ts.map +0 -1
- package/dist/jobs/database/sms-subscriber-database.service.js.map +0 -1
- package/dist/jobs/otp-publisher.service.d.ts.map +0 -1
- package/dist/jobs/otp-publisher.service.js.map +0 -1
- package/dist/jobs/otp-queue-options.d.ts.map +0 -1
- package/dist/jobs/otp-queue-options.js.map +0 -1
- package/dist/jobs/otp-subscriber.service.d.ts.map +0 -1
- package/dist/jobs/otp-subscriber.service.js.map +0 -1
- package/dist/jobs/sms-publisher.service.d.ts.map +0 -1
- package/dist/jobs/sms-publisher.service.js.map +0 -1
- package/dist/jobs/sms-queue-options.d.ts.map +0 -1
- package/dist/jobs/sms-queue-options.js.map +0 -1
- package/dist/jobs/sms-subscriber.service.d.ts.map +0 -1
- package/dist/jobs/sms-subscriber.service.js.map +0 -1
- /package/src/jobs/database/{sms-queue-database-options.ts → msg91-sms-queue-database-options.ts} +0 -0
- /package/src/jobs/{otp-queue-options.ts → msg91-otp-queue-options.ts} +0 -0
- /package/src/jobs/{sms-queue-options.ts → msg91-sms-queue-options.ts} +0 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<title>Welcome to {{ solidAppName }}</title>
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
8
|
+
|
|
9
|
+
<style>
|
|
10
|
+
@import url("https://fonts.googleapis.com/css?family=Nunito+Sans:400,700&display=swap");
|
|
11
|
+
|
|
12
|
+
body {
|
|
13
|
+
margin: 0;
|
|
14
|
+
padding: 0;
|
|
15
|
+
background-color: #f4f4f7;
|
|
16
|
+
font-family: "Nunito Sans", Helvetica, Arial, sans-serif;
|
|
17
|
+
color: #333;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.email-wrapper {
|
|
21
|
+
max-width: 600px;
|
|
22
|
+
margin: 0 auto;
|
|
23
|
+
padding: 20px;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.logo {
|
|
27
|
+
text-align: center;
|
|
28
|
+
margin-bottom: 20px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.logo img {
|
|
32
|
+
height: 50px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.content-box {
|
|
36
|
+
background-color: #ffffff;
|
|
37
|
+
padding: 40px;
|
|
38
|
+
border-radius: 8px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.title {
|
|
42
|
+
font-size: 22px;
|
|
43
|
+
margin-bottom: 10px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.intro {
|
|
47
|
+
font-size: 16px;
|
|
48
|
+
line-height: 1.6;
|
|
49
|
+
margin: 0 0 12px 0;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.credentials {
|
|
53
|
+
background-color: #f9f9f9;
|
|
54
|
+
padding: 15px;
|
|
55
|
+
border-radius: 5px;
|
|
56
|
+
margin: 18px 0;
|
|
57
|
+
font-size: 16px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.button-container {
|
|
61
|
+
text-align: center;
|
|
62
|
+
margin: 24px 0 30px 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.button {
|
|
66
|
+
display: inline-block;
|
|
67
|
+
padding: 12px 24px;
|
|
68
|
+
background-color: #722ED1;
|
|
69
|
+
color: #ffffff;
|
|
70
|
+
text-decoration: none;
|
|
71
|
+
font-weight: bold;
|
|
72
|
+
border-radius: 4px;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.footer {
|
|
76
|
+
text-align: center;
|
|
77
|
+
font-size: 12px;
|
|
78
|
+
color: #6b6e76;
|
|
79
|
+
margin-top: 40px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@media only screen and (max-width: 600px) {
|
|
83
|
+
.email-wrapper {
|
|
84
|
+
width: 100% !important;
|
|
85
|
+
padding: 20px 0 !important;
|
|
86
|
+
margin: 0;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.content-box {
|
|
90
|
+
padding: 20px !important;
|
|
91
|
+
border-radius: 0;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.title {
|
|
95
|
+
font-size: 18px !important;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.button {
|
|
99
|
+
padding: 10px !important;
|
|
100
|
+
font-size: 14px;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
</style>
|
|
104
|
+
</head>
|
|
105
|
+
|
|
106
|
+
<body>
|
|
107
|
+
<div class="email-wrapper">
|
|
108
|
+
{{#if companyLogoUrl}}
|
|
109
|
+
<div class="logo">
|
|
110
|
+
<img src="{{companyLogoUrl}}" alt="Company Logo" />
|
|
111
|
+
</div>
|
|
112
|
+
{{/if}}
|
|
113
|
+
|
|
114
|
+
<div class="content-box">
|
|
115
|
+
<h2 class="title">Welcome, {{ fullName }}!</h2>
|
|
116
|
+
<p class="intro">
|
|
117
|
+
We’re excited to have you on <strong>{{ solidAppName }}</strong>. Your account has been created and is
|
|
118
|
+
ready to use.
|
|
119
|
+
</p>
|
|
120
|
+
<div class="credentials">
|
|
121
|
+
<p><strong>Username:</strong> {{ userName }}</p>
|
|
122
|
+
<p><strong>Email:</strong> {{ email }}</p>
|
|
123
|
+
</div>
|
|
124
|
+
{{#if frontendLoginPageUrl}}
|
|
125
|
+
<div class="button-container">
|
|
126
|
+
<a class="button" href="{{ frontendLoginPageUrl }}" target="_blank" rel="noopener">Go to Login</a>
|
|
127
|
+
</div>
|
|
128
|
+
{{/if}}
|
|
129
|
+
<div class="credentials">
|
|
130
|
+
<p style="margin:0 0 8px 0;"><strong>How to sign in</strong></p>
|
|
131
|
+
<p class="intro" style="margin:0 0 8px 0;">
|
|
132
|
+
Please check with your system administrator for the login method configured for your account.
|
|
133
|
+
</p>
|
|
134
|
+
<ul style="padding-left:20px; margin:0;">
|
|
135
|
+
<li class="intro" style="margin-bottom:6px;">If password-based sign-in is enabled, your administrator will share or manage your password separately.</li>
|
|
136
|
+
<li class="intro" style="margin-bottom:6px;">If OTP-based sign-in is enabled, you can log in with your email or mobile number and retrieve a one-time code.</li>
|
|
137
|
+
<li class="intro" style="margin-bottom:0;">If Google OAuth is enabled, sign in with your Google Workspace credentials.</li>
|
|
138
|
+
</ul>
|
|
139
|
+
</div>
|
|
140
|
+
<p class="intro">
|
|
141
|
+
If you didn’t request this account, you can safely ignore this email or contact support.
|
|
142
|
+
</p>
|
|
143
|
+
<p class="intro">
|
|
144
|
+
Cheers,<br />
|
|
145
|
+
The {{ solidAppName }} Team
|
|
146
|
+
</p>
|
|
147
|
+
</div>
|
|
148
|
+
|
|
149
|
+
<div class="footer">
|
|
150
|
+
© 2025 <a href="{{ solidAppWebsiteUrl }}" target="_blank">{{ solidAppName }}</a>. All rights reserved.
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
</body>
|
|
154
|
+
|
|
155
|
+
</html>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
Welcome to {{ solidAppName }}!
|
|
2
|
+
Your account ({{ userName }} / {{ email }}) is ready.
|
|
3
|
+
|
|
4
|
+
To sign in, use the login page {{ frontendLoginPageUrl }} (if provided).
|
|
5
|
+
Check with your administrator for your login method:
|
|
6
|
+
- Password sign-in: admin will share/manage your password.
|
|
7
|
+
- OTP sign-in: use your email or mobile to receive a code.
|
|
8
|
+
- Google OAuth: sign in with your Google Workspace account.
|
|
9
|
+
|
|
10
|
+
If you didn’t request this, ignore this message.
|
|
@@ -2564,7 +2564,6 @@
|
|
|
2564
2564
|
"tableName": "ss_scheduled_jobs",
|
|
2565
2565
|
"userKeyFieldUserKey": "scheduleName",
|
|
2566
2566
|
"isChild": false,
|
|
2567
|
-
"enableAuditTracking": true,
|
|
2568
2567
|
"enableSoftDelete": false,
|
|
2569
2568
|
"draftPublishWorkflow": false,
|
|
2570
2569
|
"internationalisation": false,
|
|
@@ -2586,8 +2585,7 @@
|
|
|
2586
2585
|
"encryptionType": null,
|
|
2587
2586
|
"decryptWhen": null,
|
|
2588
2587
|
"columnName": null,
|
|
2589
|
-
"isUserKey": true
|
|
2590
|
-
"enableAuditTracking": false
|
|
2588
|
+
"isUserKey": true
|
|
2591
2589
|
},
|
|
2592
2590
|
{
|
|
2593
2591
|
"name": "isActive",
|
|
@@ -2601,8 +2599,7 @@
|
|
|
2601
2599
|
"encrypt": false,
|
|
2602
2600
|
"encryptionType": null,
|
|
2603
2601
|
"decryptWhen": null,
|
|
2604
|
-
"columnName": null
|
|
2605
|
-
"enableAuditTracking": false
|
|
2602
|
+
"columnName": null
|
|
2606
2603
|
},
|
|
2607
2604
|
{
|
|
2608
2605
|
"name": "frequency",
|
|
@@ -2627,7 +2624,6 @@
|
|
|
2627
2624
|
"encryptionType": null,
|
|
2628
2625
|
"decryptWhen": null,
|
|
2629
2626
|
"columnName": null,
|
|
2630
|
-
"enableAuditTracking": false,
|
|
2631
2627
|
"isMultiSelect": false
|
|
2632
2628
|
},
|
|
2633
2629
|
{
|
|
@@ -2644,8 +2640,7 @@
|
|
|
2644
2640
|
"encrypt": false,
|
|
2645
2641
|
"encryptionType": null,
|
|
2646
2642
|
"decryptWhen": null,
|
|
2647
|
-
"columnName": null
|
|
2648
|
-
"enableAuditTracking": false
|
|
2643
|
+
"columnName": null
|
|
2649
2644
|
},
|
|
2650
2645
|
{
|
|
2651
2646
|
"name": "endTime",
|
|
@@ -2661,8 +2656,7 @@
|
|
|
2661
2656
|
"encrypt": false,
|
|
2662
2657
|
"encryptionType": null,
|
|
2663
2658
|
"decryptWhen": null,
|
|
2664
|
-
"columnName": null
|
|
2665
|
-
"enableAuditTracking": false
|
|
2659
|
+
"columnName": null
|
|
2666
2660
|
},
|
|
2667
2661
|
{
|
|
2668
2662
|
"name": "startDate",
|
|
@@ -2678,8 +2672,7 @@
|
|
|
2678
2672
|
"encrypt": false,
|
|
2679
2673
|
"encryptionType": null,
|
|
2680
2674
|
"decryptWhen": null,
|
|
2681
|
-
"columnName": null
|
|
2682
|
-
"enableAuditTracking": false
|
|
2675
|
+
"columnName": null
|
|
2683
2676
|
},
|
|
2684
2677
|
{
|
|
2685
2678
|
"name": "endDate",
|
|
@@ -2695,8 +2688,7 @@
|
|
|
2695
2688
|
"encrypt": false,
|
|
2696
2689
|
"encryptionType": null,
|
|
2697
2690
|
"decryptWhen": null,
|
|
2698
|
-
"columnName": null
|
|
2699
|
-
"enableAuditTracking": false
|
|
2691
|
+
"columnName": null
|
|
2700
2692
|
},
|
|
2701
2693
|
{
|
|
2702
2694
|
"name": "dayOfMonth",
|
|
@@ -2714,8 +2706,7 @@
|
|
|
2714
2706
|
"encrypt": false,
|
|
2715
2707
|
"encryptionType": null,
|
|
2716
2708
|
"decryptWhen": null,
|
|
2717
|
-
"columnName": null
|
|
2718
|
-
"enableAuditTracking": false
|
|
2709
|
+
"columnName": null
|
|
2719
2710
|
},
|
|
2720
2711
|
{
|
|
2721
2712
|
"name": "lastRunAt",
|
|
@@ -2730,8 +2721,7 @@
|
|
|
2730
2721
|
"encrypt": false,
|
|
2731
2722
|
"encryptionType": null,
|
|
2732
2723
|
"decryptWhen": null,
|
|
2733
|
-
"columnName": null
|
|
2734
|
-
"enableAuditTracking": false
|
|
2724
|
+
"columnName": null
|
|
2735
2725
|
},
|
|
2736
2726
|
{
|
|
2737
2727
|
"name": "nextRunAt",
|
|
@@ -2746,8 +2736,7 @@
|
|
|
2746
2736
|
"encrypt": false,
|
|
2747
2737
|
"encryptionType": null,
|
|
2748
2738
|
"decryptWhen": null,
|
|
2749
|
-
"columnName": null
|
|
2750
|
-
"enableAuditTracking": false
|
|
2739
|
+
"columnName": null
|
|
2751
2740
|
},
|
|
2752
2741
|
{
|
|
2753
2742
|
"name": "dayOfWeek",
|
|
@@ -2774,7 +2763,6 @@
|
|
|
2774
2763
|
"encryptionType": null,
|
|
2775
2764
|
"decryptWhen": null,
|
|
2776
2765
|
"columnName": null,
|
|
2777
|
-
"enableAuditTracking": false,
|
|
2778
2766
|
"isMultiSelect": true
|
|
2779
2767
|
},
|
|
2780
2768
|
{
|
|
@@ -2795,7 +2783,6 @@
|
|
|
2795
2783
|
"decryptWhen": null,
|
|
2796
2784
|
"columnName": null,
|
|
2797
2785
|
"isUserKey": false,
|
|
2798
|
-
"enableAuditTracking": false,
|
|
2799
2786
|
"selectionValueType": "string",
|
|
2800
2787
|
"selectionDynamicProvider": "ListOfScheduledJobsSelectionProvider",
|
|
2801
2788
|
"selectionDynamicProviderCtxt": "{}"
|
|
@@ -5269,9 +5256,9 @@
|
|
|
5269
5256
|
],
|
|
5270
5257
|
"users": [
|
|
5271
5258
|
{
|
|
5272
|
-
"username": "
|
|
5273
|
-
"email": "
|
|
5274
|
-
"password": "
|
|
5259
|
+
"username": "sa",
|
|
5260
|
+
"email": "sa@solidxai.com",
|
|
5261
|
+
"password": "",
|
|
5275
5262
|
"forcePasswordChange": true,
|
|
5276
5263
|
"fullName": "Default Admin",
|
|
5277
5264
|
"roles": [
|
|
@@ -8993,6 +8980,13 @@
|
|
|
8993
8980
|
"widget": "SolidUserNameAvatarWidget"
|
|
8994
8981
|
}
|
|
8995
8982
|
},
|
|
8983
|
+
{
|
|
8984
|
+
"type": "field",
|
|
8985
|
+
"attrs": {
|
|
8986
|
+
"name": "fullName",
|
|
8987
|
+
"isSearchable": true
|
|
8988
|
+
}
|
|
8989
|
+
},
|
|
8996
8990
|
{
|
|
8997
8991
|
"type": "field",
|
|
8998
8992
|
"attrs": {
|
|
@@ -11026,6 +11020,22 @@
|
|
|
11026
11020
|
"sortable": true,
|
|
11027
11021
|
"filterable": true
|
|
11028
11022
|
}
|
|
11023
|
+
},
|
|
11024
|
+
{
|
|
11025
|
+
"type": "field",
|
|
11026
|
+
"attrs": {
|
|
11027
|
+
"name": "event",
|
|
11028
|
+
"sortable": true,
|
|
11029
|
+
"filterable": true
|
|
11030
|
+
}
|
|
11031
|
+
},
|
|
11032
|
+
{
|
|
11033
|
+
"type": "field",
|
|
11034
|
+
"attrs": {
|
|
11035
|
+
"name": "ipAddress",
|
|
11036
|
+
"sortable": true,
|
|
11037
|
+
"filterable": true
|
|
11038
|
+
}
|
|
11029
11039
|
}
|
|
11030
11040
|
]
|
|
11031
11041
|
}
|
|
@@ -11070,6 +11080,24 @@
|
|
|
11070
11080
|
"attrs": {
|
|
11071
11081
|
"name": "user"
|
|
11072
11082
|
}
|
|
11083
|
+
},
|
|
11084
|
+
{
|
|
11085
|
+
"type": "field",
|
|
11086
|
+
"attrs": {
|
|
11087
|
+
"name": "event"
|
|
11088
|
+
}
|
|
11089
|
+
},
|
|
11090
|
+
{
|
|
11091
|
+
"type": "field",
|
|
11092
|
+
"attrs": {
|
|
11093
|
+
"name": "ipAddress"
|
|
11094
|
+
}
|
|
11095
|
+
},
|
|
11096
|
+
{
|
|
11097
|
+
"type": "field",
|
|
11098
|
+
"attrs": {
|
|
11099
|
+
"name": "userAgent"
|
|
11100
|
+
}
|
|
11073
11101
|
}
|
|
11074
11102
|
]
|
|
11075
11103
|
},
|
|
@@ -12457,6 +12485,15 @@
|
|
|
12457
12485
|
"description": "This template notifies users that their account password was successfully changed.",
|
|
12458
12486
|
"active": true,
|
|
12459
12487
|
"type": "text"
|
|
12488
|
+
},
|
|
12489
|
+
{
|
|
12490
|
+
"name": "email-on-signup",
|
|
12491
|
+
"displayName": "Default: Email On Signup",
|
|
12492
|
+
"body": "email-on-signup.handlebars.html",
|
|
12493
|
+
"subject": "Welcome to {{solidAppName}}",
|
|
12494
|
+
"description": "Welcome email sent to users after signup.",
|
|
12495
|
+
"active": true,
|
|
12496
|
+
"type": "text"
|
|
12460
12497
|
}
|
|
12461
12498
|
],
|
|
12462
12499
|
"smsTemplates": [
|
|
@@ -12486,6 +12523,15 @@
|
|
|
12486
12523
|
"smsProviderTemplateId": "666bd246d6fc051047560595",
|
|
12487
12524
|
"active": true,
|
|
12488
12525
|
"type": "text"
|
|
12526
|
+
},
|
|
12527
|
+
{
|
|
12528
|
+
"name": "text-on-signup",
|
|
12529
|
+
"displayName": "Default: Text On Signup",
|
|
12530
|
+
"body": "text-on-signup.handlebars.txt",
|
|
12531
|
+
"description": "Welcome SMS sent to users after signup.",
|
|
12532
|
+
"smsProviderTemplateId": "666bd246d6fc051047560595",
|
|
12533
|
+
"active": true,
|
|
12534
|
+
"type": "text"
|
|
12489
12535
|
}
|
|
12490
12536
|
],
|
|
12491
12537
|
"mediaStorageProviders": [
|
|
@@ -12526,4 +12572,4 @@
|
|
|
12526
12572
|
}
|
|
12527
12573
|
],
|
|
12528
12574
|
"modelSequences": []
|
|
12529
|
-
}
|
|
12575
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Injectable, Logger } from '@nestjs/common';
|
|
2
2
|
import { AuthenticationService } from '../services/authentication.service';
|
|
3
3
|
import { UserService } from '../services/user.service';
|
|
4
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
4
5
|
|
|
5
6
|
@Injectable()
|
|
6
7
|
export class UserSeederService {
|
|
@@ -13,13 +14,13 @@ export class UserSeederService {
|
|
|
13
14
|
|
|
14
15
|
async seed() {
|
|
15
16
|
// see if the user already exists,
|
|
16
|
-
let user = await this.userService.findOneByUsername("
|
|
17
|
+
let user = await this.userService.findOneByUsername("sa");
|
|
17
18
|
|
|
18
19
|
if (!user) {
|
|
19
20
|
user = await this.authenticationService.signUp({
|
|
20
|
-
username: '
|
|
21
|
-
email: '
|
|
22
|
-
password:
|
|
21
|
+
username: 'sa',
|
|
22
|
+
email: 'sa@solidxai.com',
|
|
23
|
+
password: uuidv4(),
|
|
23
24
|
});
|
|
24
25
|
|
|
25
26
|
this.logger.log(`Newly created user is ${user}`);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
1. Do i need to create a storeStreams method for aws service too?
|
|
2
|
+
- Handle later
|
|
3
|
+
2. queues handling -> if queues is enabled by default, i.e triggerExport(exportTransactionEntity.id).
|
|
4
|
+
- startExport should either return the data or return the transaction id
|
|
5
|
+
3. How to handle scenarios wherein, nested related exist.(do i need to only get the userkey)
|
|
6
|
+
- show the userKey
|
|
@@ -49,6 +49,7 @@ import { RoleMetadataService } from './role-metadata.service';
|
|
|
49
49
|
import { SettingService } from './setting.service';
|
|
50
50
|
import { UserActivityHistoryService } from './user-activity-history.service';
|
|
51
51
|
import { UserService } from './user.service';
|
|
52
|
+
import { SmsFactory } from 'src/factories/sms.factory';
|
|
52
53
|
|
|
53
54
|
enum LoginProvider {
|
|
54
55
|
LOCAL = 'local',
|
|
@@ -79,7 +80,8 @@ export class AuthenticationService {
|
|
|
79
80
|
private readonly httpService: HttpService,
|
|
80
81
|
// private readonly mailService: SMTPEMailService,
|
|
81
82
|
private readonly mailServiceFactory: MailFactory,
|
|
82
|
-
private readonly smsService: Msg91OTPService,
|
|
83
|
+
// private readonly smsService: Msg91OTPService,
|
|
84
|
+
private readonly smsFactory: SmsFactory,
|
|
83
85
|
private readonly eventEmitter: EventEmitter2,
|
|
84
86
|
private readonly settingService: SettingService,
|
|
85
87
|
private readonly roleMetadataService: RoleMetadataService,
|
|
@@ -174,7 +176,7 @@ export class AuthenticationService {
|
|
|
174
176
|
const savedUser = await this.userRepository.save(user);
|
|
175
177
|
// Also assign a default role to the newly created user.
|
|
176
178
|
const userRoles = signUpDto.roles ?? [];
|
|
177
|
-
if (this.iamConfiguration.defaultRole) {
|
|
179
|
+
if (signUpDto.username !== 'sa' && this.iamConfiguration.defaultRole) {
|
|
178
180
|
userRoles.push(this.iamConfiguration.defaultRole);
|
|
179
181
|
}
|
|
180
182
|
await this.handlePostSignup(savedUser, userRoles, pwd, autoGeneratedPwd);
|
|
@@ -197,7 +199,7 @@ export class AuthenticationService {
|
|
|
197
199
|
// Merge the extended signUpDto attributes into the user entity
|
|
198
200
|
//@ts-ignore
|
|
199
201
|
const extensionUser = extensionUserRepo.merge(extensionUserRepo.create() as T, extensionUserDto);
|
|
200
|
-
var { user, pwd, autoGeneratedPwd } = await this.populateForSignup<T>(extensionUser, signUpDto, true, onForcePasswordChange);
|
|
202
|
+
var { user, pwd, autoGeneratedPwd } = await this.populateForSignup<T>(extensionUser, signUpDto, extensionUserDto.active ?? true, onForcePasswordChange);
|
|
201
203
|
const savedUser = await extensionUserRepo.save(user);
|
|
202
204
|
|
|
203
205
|
await this.handlePostSignup(savedUser, signUpDto.roles, pwd, autoGeneratedPwd);
|
|
@@ -278,6 +280,9 @@ export class AuthenticationService {
|
|
|
278
280
|
if (user.forcePasswordChange && autoGeneratedPwd) {
|
|
279
281
|
this.notifyUserOnForcePasswordChange(user, autoGeneratedPwd);
|
|
280
282
|
}
|
|
283
|
+
|
|
284
|
+
// Send welcome notifications (email/SMS) if enabled.
|
|
285
|
+
await this.notifyUserOnSignup(user);
|
|
281
286
|
}
|
|
282
287
|
|
|
283
288
|
|
|
@@ -323,6 +328,56 @@ export class AuthenticationService {
|
|
|
323
328
|
|
|
324
329
|
}
|
|
325
330
|
|
|
331
|
+
private isWelcomeEmailEnabled(): boolean {
|
|
332
|
+
return this.iamConfiguration.sendWelcomeEmailOnSignup;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
private isWelcomeSmsEnabled(): boolean {
|
|
336
|
+
return this.iamConfiguration.sendWelcomeSmsOnSignup;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
private async notifyUserOnSignup(user: User) {
|
|
340
|
+
const companyLogo = await this.getCompanyLogo();
|
|
341
|
+
// Email welcome
|
|
342
|
+
if (this.isWelcomeEmailEnabled()) {
|
|
343
|
+
const mailService = this.mailServiceFactory.getMailService();
|
|
344
|
+
mailService.sendEmailUsingTemplate(
|
|
345
|
+
user.email,
|
|
346
|
+
'email-on-signup',
|
|
347
|
+
{
|
|
348
|
+
solidAppName: process.env.SOLID_APP_NAME,
|
|
349
|
+
solidAppWebsiteUrl: process.env.SOLID_APP_WEBSITE_URL,
|
|
350
|
+
frontendLoginPageUrl: process.env.IAM_FRONTEND_APP_LOGIN_PAGE_URL,
|
|
351
|
+
email: user.email,
|
|
352
|
+
fullName: user.fullName,
|
|
353
|
+
userName: user.username,
|
|
354
|
+
companyLogoUrl: companyLogo
|
|
355
|
+
},
|
|
356
|
+
this.commonConfiguration.shouldQueueEmails,
|
|
357
|
+
null,
|
|
358
|
+
null,
|
|
359
|
+
'user',
|
|
360
|
+
user.id
|
|
361
|
+
);
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
// SMS welcome
|
|
365
|
+
if (this.isWelcomeSmsEnabled() && user.mobile) {
|
|
366
|
+
const smsService = this.smsFactory.getSmsService();
|
|
367
|
+
smsService.sendSMSUsingTemplate(
|
|
368
|
+
user.mobile,
|
|
369
|
+
'text-on-signup',
|
|
370
|
+
{
|
|
371
|
+
solidAppName: process.env.SOLID_APP_NAME,
|
|
372
|
+
frontendLoginPageUrl: process.env.IAM_FRONTEND_APP_LOGIN_PAGE_URL,
|
|
373
|
+
firstName: user.username,
|
|
374
|
+
fullName: user.fullName ? user.fullName : user.username
|
|
375
|
+
},
|
|
376
|
+
this.commonConfiguration.shouldQueueSms,
|
|
377
|
+
);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
326
381
|
async otpInitiateRegistration(signUpDto: OTPSignUpDto) {
|
|
327
382
|
try {
|
|
328
383
|
if (!this.isPasswordlessRegistrationEnabled()) {
|
|
@@ -444,7 +499,8 @@ export class AuthenticationService {
|
|
|
444
499
|
);
|
|
445
500
|
}
|
|
446
501
|
if (registrationValidationSources.includes(RegistrationValidationSource.MOBILE)) {
|
|
447
|
-
this.
|
|
502
|
+
const smsService = this.smsFactory.getSmsService();
|
|
503
|
+
smsService.sendSMSUsingTemplate(
|
|
448
504
|
user.mobile,
|
|
449
505
|
'otp-on-register',
|
|
450
506
|
{
|
|
@@ -454,7 +510,8 @@ export class AuthenticationService {
|
|
|
454
510
|
firstName: user.username,
|
|
455
511
|
fullName: user.fullName ? user.fullName : user.username,
|
|
456
512
|
companyLogoUrl: companyLogo
|
|
457
|
-
}
|
|
513
|
+
},
|
|
514
|
+
this.commonConfiguration.shouldQueueSms,
|
|
458
515
|
);
|
|
459
516
|
}
|
|
460
517
|
}
|
|
@@ -649,7 +706,8 @@ export class AuthenticationService {
|
|
|
649
706
|
);
|
|
650
707
|
}
|
|
651
708
|
if (loginType === RegistrationValidationSource.MOBILE) {
|
|
652
|
-
this.
|
|
709
|
+
const smsService = this.smsFactory.getSmsService();
|
|
710
|
+
smsService.sendSMSUsingTemplate(
|
|
653
711
|
user.mobile,
|
|
654
712
|
'otp-on-login',
|
|
655
713
|
{
|
|
@@ -659,7 +717,8 @@ export class AuthenticationService {
|
|
|
659
717
|
firstName: user.username,
|
|
660
718
|
fullName: user.fullName ? user.fullName : user.username,
|
|
661
719
|
companyLogoUrl: companyLogo
|
|
662
|
-
}
|
|
720
|
+
},
|
|
721
|
+
this.commonConfiguration.shouldQueueSms,
|
|
663
722
|
);
|
|
664
723
|
}
|
|
665
724
|
}
|
|
@@ -783,14 +842,16 @@ export class AuthenticationService {
|
|
|
783
842
|
}
|
|
784
843
|
|
|
785
844
|
// Update Password
|
|
786
|
-
const
|
|
845
|
+
const pwdData = await this.userService.hashPassword(
|
|
846
|
+
changePasswordDto.newPassword,
|
|
847
|
+
);
|
|
787
848
|
user.password = changePasswordDto.newPassword;
|
|
788
|
-
user.passwordScheme = this.hashingService.name(); // e.g. bcrypt
|
|
789
|
-
user.passwordSchemeVersion = this.hashingService.currentVersion(); // e.g. 1, 2, 3 ...
|
|
790
849
|
|
|
850
|
+
user.password = pwdData.password;
|
|
851
|
+
user.passwordScheme = pwdData.passwordScheme;
|
|
852
|
+
user.passwordSchemeVersion = pwdData.passwordSchemeVersion;
|
|
791
853
|
// Everytime the user changes the password we reset the forcePasswordChange flag back to false.
|
|
792
854
|
user.forcePasswordChange = false;
|
|
793
|
-
user.password = newPwd;
|
|
794
855
|
|
|
795
856
|
await this.userRepository.save(user);
|
|
796
857
|
|
|
@@ -888,7 +949,8 @@ export class AuthenticationService {
|
|
|
888
949
|
}
|
|
889
950
|
// Assuming all users do not have mobile as mandatory.
|
|
890
951
|
if (forgotPasswordSendVerificationTokenOn == ForgotPasswordSendVerificationTokenOn.MOBILE && user.mobile) {
|
|
891
|
-
this.
|
|
952
|
+
const smsService = this.smsFactory.getSmsService();
|
|
953
|
+
smsService.sendSMSUsingTemplate(
|
|
892
954
|
user.mobile,
|
|
893
955
|
'forgot-password',
|
|
894
956
|
{
|
|
@@ -897,7 +959,8 @@ export class AuthenticationService {
|
|
|
897
959
|
verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
|
|
898
960
|
firstName: user.username,
|
|
899
961
|
companyLogoUrl: companyLogo
|
|
900
|
-
}
|
|
962
|
+
},
|
|
963
|
+
this.commonConfiguration.shouldQueueSms,
|
|
901
964
|
);
|
|
902
965
|
}
|
|
903
966
|
}
|
|
@@ -977,7 +1040,8 @@ export class AuthenticationService {
|
|
|
977
1040
|
}
|
|
978
1041
|
// Assuming all users do not have mobile as mandatory.
|
|
979
1042
|
if (forgotPasswordSendVerificationTokenOn == ForgotPasswordSendVerificationTokenOn.MOBILE && user.mobile) {
|
|
980
|
-
this.
|
|
1043
|
+
const smsService = this.smsFactory.getSmsService();
|
|
1044
|
+
smsService.sendSMSUsingTemplate(
|
|
981
1045
|
user.mobile,
|
|
982
1046
|
'forgot-password',
|
|
983
1047
|
{
|
|
@@ -986,7 +1050,8 @@ export class AuthenticationService {
|
|
|
986
1050
|
verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
|
|
987
1051
|
firstName: user.username,
|
|
988
1052
|
companyLogoUrl: companyLogo
|
|
989
|
-
}
|
|
1053
|
+
},
|
|
1054
|
+
this.commonConfiguration.shouldQueueSms,
|
|
990
1055
|
);
|
|
991
1056
|
}
|
|
992
1057
|
}
|
package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts
CHANGED
|
@@ -28,8 +28,7 @@ export class AlphaNumExternalIdComputationProvider<T extends CommonEntity> imple
|
|
|
28
28
|
return 'Provider used to compute external ID for a CommonEntity with support for static or dynamic prefix.';
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
async preComputeValue(triggerEntity: T, computedFieldMetadata: ComputedFieldMetadata<AlphaNumExternalIdContext>
|
|
32
|
-
) {
|
|
31
|
+
async preComputeValue(triggerEntity: T, computedFieldMetadata: ComputedFieldMetadata<AlphaNumExternalIdContext>) {
|
|
33
32
|
const { prefix, length, dynamicFieldPrefix } = computedFieldMetadata.computedFieldValueProviderCtxt;
|
|
34
33
|
const eventContext = computedFieldMetadata.eventContext;
|
|
35
34
|
const entityName = eventContext?.metadataName ?? eventContext.databaseEntity?.constructor?.name ?? '';
|