@solidstarters/solid-core 1.2.92 → 1.2.95
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/# Password field.md +8 -0
- package/dist/controllers/import-transaction.controller.d.ts +2 -1
- package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
- package/dist/controllers/import-transaction.controller.js +16 -4
- package/dist/controllers/import-transaction.controller.js.map +1 -1
- package/dist/controllers/locale.controller.d.ts +41 -0
- package/dist/controllers/locale.controller.d.ts.map +1 -0
- package/dist/controllers/locale.controller.js +179 -0
- package/dist/controllers/locale.controller.js.map +1 -0
- package/dist/controllers/view-metadata.controller.d.ts +1 -0
- package/dist/controllers/view-metadata.controller.d.ts.map +1 -1
- package/dist/dtos/basic-filters.dto.d.ts +2 -0
- package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
- package/dist/dtos/basic-filters.dto.js +11 -1
- package/dist/dtos/basic-filters.dto.js.map +1 -1
- package/dist/dtos/create-locale.dto.d.ts +6 -0
- package/dist/dtos/create-locale.dto.d.ts.map +1 -0
- package/dist/dtos/create-locale.dto.js +43 -0
- package/dist/dtos/create-locale.dto.js.map +1 -0
- package/dist/dtos/create-menu-item-metadata.dto.d.ts +2 -1
- package/dist/dtos/create-menu-item-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-menu-item-metadata.dto.js +22 -3
- package/dist/dtos/create-menu-item-metadata.dto.js.map +1 -1
- package/dist/dtos/create-model-metadata.dto.d.ts +1 -0
- package/dist/dtos/create-model-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-model-metadata.dto.js +7 -2
- package/dist/dtos/create-model-metadata.dto.js.map +1 -1
- package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-role-metadata.dto.js +11 -0
- package/dist/dtos/create-role-metadata.dto.js.map +1 -1
- package/dist/dtos/update-locale.dto.d.ts +7 -0
- package/dist/dtos/update-locale.dto.d.ts.map +1 -0
- package/dist/dtos/update-locale.dto.js +48 -0
- package/dist/dtos/update-locale.dto.js.map +1 -0
- package/dist/dtos/update-menu-item-metadata.dto.d.ts +2 -1
- package/dist/dtos/update-menu-item-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/update-menu-item-metadata.dto.js +24 -5
- package/dist/dtos/update-menu-item-metadata.dto.js.map +1 -1
- package/dist/dtos/update-role-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/update-role-metadata.dto.js +12 -1
- package/dist/dtos/update-role-metadata.dto.js.map +1 -1
- package/dist/entities/common.entity.d.ts +3 -0
- package/dist/entities/common.entity.d.ts.map +1 -1
- package/dist/entities/common.entity.js +13 -1
- package/dist/entities/common.entity.js.map +1 -1
- package/dist/entities/locale.entity.d.ts +7 -0
- package/dist/entities/locale.entity.d.ts.map +1 -0
- package/dist/entities/locale.entity.js +43 -0
- package/dist/entities/locale.entity.js.map +1 -0
- package/dist/entities/menu-item-metadata.entity.d.ts +2 -1
- package/dist/entities/menu-item-metadata.entity.d.ts.map +1 -1
- package/dist/entities/menu-item-metadata.entity.js +13 -8
- package/dist/entities/menu-item-metadata.entity.js.map +1 -1
- package/dist/entities/model-metadata.entity.d.ts +1 -0
- 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/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/module-metadata-helper.service.js.map +1 -1
- package/dist/helpers/solid-registry.d.ts +2 -0
- package/dist/helpers/solid-registry.d.ts.map +1 -1
- package/dist/helpers/solid-registry.js +5 -0
- package/dist/helpers/solid-registry.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +234 -0
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +8 -3
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/crud-helper.service.d.ts +1 -1
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +17 -2
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +19 -6
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/import-transaction.service.d.ts +19 -6
- package/dist/services/import-transaction.service.d.ts.map +1 -1
- package/dist/services/import-transaction.service.js +214 -87
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/locale.service.d.ts +26 -0
- package/dist/services/locale.service.d.ts.map +1 -0
- package/dist/services/locale.service.js +64 -0
- package/dist/services/locale.service.js.map +1 -0
- package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
- package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
- package/dist/services/menu-item-metadata.service.js +1 -0
- package/dist/services/menu-item-metadata.service.js.map +1 -1
- package/dist/services/selection-providers/locale-list-selection-provider.service.d.ts +9 -0
- package/dist/services/selection-providers/locale-list-selection-provider.service.d.ts.map +1 -0
- package/dist/services/selection-providers/locale-list-selection-provider.service.js +87 -0
- package/dist/services/selection-providers/locale-list-selection-provider.service.js.map +1 -0
- package/dist/services/setting.service.d.ts.map +1 -1
- package/dist/services/setting.service.js +4 -2
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts +3 -0
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +73 -7
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +8 -0
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/model.subscriber.d.ts.map +1 -1
- package/dist/subscribers/model.subscriber.js +24 -0
- package/dist/subscribers/model.subscriber.js.map +1 -1
- package/dist/transformers/datetime-transformer.d.ts +4 -0
- package/dist/transformers/datetime-transformer.d.ts.map +1 -0
- package/dist/transformers/datetime-transformer.js +11 -0
- package/dist/transformers/datetime-transformer.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/src/controllers/import-transaction.controller.ts +9 -3
- package/src/controllers/locale.controller.ts +94 -0
- package/src/dtos/basic-filters.dto.ts +13 -1
- package/src/dtos/create-locale.dto.ts +17 -0
- package/src/dtos/create-menu-item-metadata.dto.ts +21 -13
- package/src/dtos/create-model-metadata.dto.ts +5 -1
- package/src/dtos/create-role-metadata.dto.ts +48 -45
- package/src/dtos/update-locale.dto.ts +23 -0
- package/src/dtos/update-menu-item-metadata.dto.ts +23 -16
- package/src/dtos/update-role-metadata.dto.ts +49 -47
- package/src/entities/common.entity.ts +11 -1
- package/src/entities/locale.entity.ts +14 -0
- package/src/entities/menu-item-metadata.entity.ts +14 -14
- package/src/entities/model-metadata.entity.ts +3 -0
- package/src/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.ts +2 -1
- package/src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts +1 -0
- package/src/helpers/module-metadata-helper.service.ts +0 -1
- package/src/helpers/solid-registry.ts +11 -2
- package/src/index.ts +6 -3
- package/src/seeders/seed-data/email-templates/forgot-password.handlebars.html +134 -154
- package/src/seeders/seed-data/email-templates/on-force-password-change.handlebars.html +141 -195
- package/src/seeders/seed-data/email-templates/otp-on-login.handlebars.html +130 -144
- package/src/seeders/seed-data/email-templates/otp-on-register.handlebars.html +131 -145
- package/src/seeders/seed-data/solid-core-metadata.json +234 -0
- package/src/services/authentication.service.ts +8 -3
- package/src/services/crud-helper.service.ts +30 -12
- package/src/services/crud.service.ts +51 -35
- package/src/services/import-transaction.service.ts +313 -121
- package/src/services/locale.service.ts +37 -0
- package/src/services/mediaStorageProviders/file-storage-provider.ts +1 -1
- package/src/services/menu-item-metadata.service.ts +2 -0
- package/src/services/pending_import_issues +3 -0
- package/src/services/selection-providers/locale-list-selection-provider.service.ts +58 -0
- package/src/services/setting.service.ts +4 -2
- package/src/services/view-metadata.service.ts +179 -14
- package/src/solid-core.module.ts +8 -0
- package/src/subscribers/model.subscriber.ts +24 -0
- package/src/transformers/datetime-transformer.ts +12 -0
|
@@ -39,6 +39,9 @@ export class ModelMetadata extends CommonEntity {
|
|
|
39
39
|
@Column({ name: "internationalisation", default: false })
|
|
40
40
|
internationalisation: boolean;
|
|
41
41
|
|
|
42
|
+
@Column({ name: "draftPublishWorkflow", default: false })
|
|
43
|
+
draftPublishWorkflow: boolean;
|
|
44
|
+
|
|
42
45
|
@OneToMany(() => FieldMetadata, (field) => field.model)
|
|
43
46
|
fields: FieldMetadata[];
|
|
44
47
|
|
|
@@ -190,10 +190,11 @@ export class ManyToManyRelationFieldCrudManager implements FieldCrudManager {
|
|
|
190
190
|
return this.options.required;
|
|
191
191
|
}
|
|
192
192
|
|
|
193
|
+
// TODO: We have moved this to SolidRegistry service, refactor to use that service.
|
|
193
194
|
// Returns the entity target class from the entity name
|
|
194
195
|
private getEntityTarget(entityName: string): any { //TODO Can be refactored to use this function from crud helper service
|
|
195
196
|
const entityMetadatas = this.options.entityManager.connection.entityMetadatas;
|
|
196
197
|
const entityMetadata = entityMetadatas.find(em => em.name === entityName);
|
|
197
198
|
return entityMetadata.target;
|
|
198
199
|
}
|
|
199
|
-
}
|
|
200
|
+
}
|
|
@@ -195,6 +195,7 @@ export class OneToManyRelationFieldCrudManager implements FieldCrudManager {
|
|
|
195
195
|
return this.options.required;
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
+
// TODO: We have moved this to SolidRegistry service, refactor to use that service.
|
|
198
199
|
// Returns the entity target class from the entity name
|
|
199
200
|
private getEntityTarget(entityName: string): any { //TODO Can be refactored to use this function from crud helper service
|
|
200
201
|
const entityMetadatas = this.options.entityManager.connection.entityMetadatas;
|
|
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
|
|
|
2
2
|
import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';
|
|
3
3
|
import { ISelectionProvider, ISelectionProviderContext } from "../interfaces";
|
|
4
4
|
import { SecurityRule } from 'src/entities/security-rule.entity';
|
|
5
|
+
import { EntityManager } from 'typeorm';
|
|
5
6
|
|
|
6
7
|
type ControllerMetadata = {
|
|
7
8
|
name: string;
|
|
@@ -41,7 +42,7 @@ export class SolidRegistry {
|
|
|
41
42
|
private computedFieldProviders: Set<InstanceWrapper> = new Set();
|
|
42
43
|
private solidDatabaseModules: Set<InstanceWrapper> = new Set();
|
|
43
44
|
private controllers: Set<ControllerMetadata> = new Set();
|
|
44
|
-
private modules
|
|
45
|
+
private modules: Set<InstanceWrapper> = new Set();
|
|
45
46
|
private securityRules: SecurityRule[] = [];
|
|
46
47
|
|
|
47
48
|
registerController(name: string, methodNames: string[]): void {
|
|
@@ -116,7 +117,7 @@ export class SolidRegistry {
|
|
|
116
117
|
this.securityRules = securityRules;
|
|
117
118
|
}
|
|
118
119
|
|
|
119
|
-
getSecurityRules(modelSingularName:string, roleNames: string[] = []): SecurityRule[] {
|
|
120
|
+
getSecurityRules(modelSingularName: string, roleNames: string[] = []): SecurityRule[] {
|
|
120
121
|
// If no role is provided, return all security rules for the model
|
|
121
122
|
if (roleNames.length === 0) {
|
|
122
123
|
return this.securityRules.filter((rule) => rule.modelMetadata.singularName === modelSingularName);
|
|
@@ -126,4 +127,12 @@ export class SolidRegistry {
|
|
|
126
127
|
return rule.modelMetadata.singularName === modelSingularName && roleNames.includes(rule.role.name);
|
|
127
128
|
});
|
|
128
129
|
}
|
|
130
|
+
|
|
131
|
+
// Returns the entity target class from the entity name
|
|
132
|
+
getEntityTarget(entityManager: EntityManager, entityName: string): any { //TODO Can be refactored to use this function from crud helper service
|
|
133
|
+
const entityMetadatas = entityManager.connection.entityMetadatas;
|
|
134
|
+
const entityMetadata = entityMetadatas.find(em => em.name === entityName);
|
|
135
|
+
return entityMetadata.target;
|
|
136
|
+
}
|
|
137
|
+
|
|
129
138
|
}
|
package/src/index.ts
CHANGED
|
@@ -45,6 +45,7 @@ export * from './dtos/create-user.dto'
|
|
|
45
45
|
export * from './dtos/create-view-metadata.dto'
|
|
46
46
|
export * from './dtos/create-chatter-message.dto'
|
|
47
47
|
export * from './dtos/create-chatter-message-details.dto'
|
|
48
|
+
export * from './dtos/create-locale.dto'
|
|
48
49
|
export * from './dtos/fetch-roles.dto'
|
|
49
50
|
export * from './dtos/initiate-forgot-password.dto'
|
|
50
51
|
export * from './dtos/mutate-role-permissions.dto'
|
|
@@ -84,7 +85,7 @@ export * from './dtos/create-security-rule.dto'
|
|
|
84
85
|
export * from './dtos/update-security-rule.dto'
|
|
85
86
|
export * from './dtos/update-chatter-message.dto'
|
|
86
87
|
export * from './dtos/update-chatter-message-details.dto'
|
|
87
|
-
|
|
88
|
+
export * from './dtos/update-locale.dto'
|
|
88
89
|
export * from './entities/action-metadata.entity'
|
|
89
90
|
export * from './entities/common.entity'
|
|
90
91
|
export * from './entities/email-attachment.entity'
|
|
@@ -115,7 +116,7 @@ export * from './entities/export-template.entity'
|
|
|
115
116
|
export * from './entities/export-transaction.entity'
|
|
116
117
|
export * from './entities/import-transaction.entity'
|
|
117
118
|
export * from './entities/import-transaction-error-log.entity'
|
|
118
|
-
|
|
119
|
+
export * from './entities/locale.entity'
|
|
119
120
|
export * from './enums/auth-type.enum'
|
|
120
121
|
|
|
121
122
|
export * from './filters/http-exception.filter'
|
|
@@ -232,6 +233,7 @@ export * from './services/security-rule.service'
|
|
|
232
233
|
export * from './services/request-context.service'
|
|
233
234
|
export * from './services/chatter-message.service'
|
|
234
235
|
export * from './services/chatter-message-details.service'
|
|
236
|
+
export * from './services/locale.service'
|
|
235
237
|
// Repositories
|
|
236
238
|
export * from './repository/solid-base.repository'
|
|
237
239
|
export * from './repository/security-rule.repository'
|
|
@@ -256,4 +258,5 @@ export * from './constants'
|
|
|
256
258
|
export * from './interfaces'
|
|
257
259
|
export * from './solid-core.module'
|
|
258
260
|
|
|
259
|
-
|
|
261
|
+
export * from './winston.logger'
|
|
262
|
+
export * from './transformers/datetime-transformer'
|
|
@@ -1,169 +1,149 @@
|
|
|
1
|
-
<!DOCTYPE html
|
|
2
|
-
|
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
4
3
|
|
|
5
4
|
<head>
|
|
6
|
-
<meta
|
|
7
|
-
<
|
|
8
|
-
<
|
|
9
|
-
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<title>Reset Your Password</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;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.credentials {
|
|
53
|
+
background-color: #f9f9f9;
|
|
54
|
+
padding: 15px;
|
|
55
|
+
border-radius: 5px;
|
|
56
|
+
margin-bottom: 30px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.credentials p {
|
|
60
|
+
margin: 0 0 10px;
|
|
61
|
+
font-size: 16px;
|
|
62
|
+
}
|
|
10
63
|
|
|
11
|
-
|
|
12
|
-
|
|
64
|
+
.button-container {
|
|
65
|
+
text-align: center;
|
|
66
|
+
margin-bottom: 30px;
|
|
67
|
+
margin-top: 20px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.button {
|
|
71
|
+
display: inline-block;
|
|
72
|
+
padding: 12px 24px;
|
|
73
|
+
background-color: #722ED1;
|
|
74
|
+
color: #ffffff;
|
|
75
|
+
text-decoration: none;
|
|
76
|
+
font-weight: bold;
|
|
77
|
+
border-radius: 5px;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.footer-text {
|
|
81
|
+
font-size: 16px;
|
|
82
|
+
line-height: 1.6;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.footer {
|
|
86
|
+
text-align: center;
|
|
87
|
+
font-size: 12px;
|
|
88
|
+
color: #6b6e76;
|
|
89
|
+
margin-top: 40px;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@media only screen and (max-width: 600px) {
|
|
93
|
+
.email-wrapper {
|
|
13
94
|
width: 100% !important;
|
|
95
|
+
padding: 20px 0 !important;
|
|
96
|
+
margin: 0;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.content-box {
|
|
100
|
+
padding: 20px !important;
|
|
101
|
+
border-radius: 0;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.title {
|
|
105
|
+
font-size: 18px !important;
|
|
14
106
|
}
|
|
15
|
-
}
|
|
16
107
|
|
|
17
|
-
@media only screen and (max-width: 500px) {
|
|
18
108
|
.button {
|
|
19
|
-
width: 100% !important;
|
|
109
|
+
/* width: 100% !important; */
|
|
110
|
+
padding: 10px !important;
|
|
111
|
+
font-size: 14px;
|
|
20
112
|
}
|
|
21
113
|
}
|
|
22
114
|
</style>
|
|
23
115
|
</head>
|
|
24
116
|
|
|
25
|
-
<body
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
Holistic Wellness
|
|
56
|
-
</h1>
|
|
57
|
-
</td>
|
|
58
|
-
</tr>
|
|
59
|
-
<!-- Email Body -->
|
|
60
|
-
<tr>
|
|
61
|
-
<td class="email-body" width="100%"
|
|
62
|
-
style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; -webkit-box-sizing: border-box; box-sizing: border-box; width: 100%; margin: 0; padding: 0; border-top: 1px solid #EDEFF2; border-bottom: 1px solid #EDEFF2; background-color: #F2F4F6;"
|
|
63
|
-
bgcolor="#FFF">
|
|
64
|
-
<table class="email-body_inner" align="center" width="600" cellpadding="0" cellspacing="0"
|
|
65
|
-
style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; -webkit-box-sizing: border-box; box-sizing: border-box; width: 600px; margin: 0 auto; padding: 0; background-color: #fff;">
|
|
66
|
-
<!-- Body content -->
|
|
67
|
-
<tr>
|
|
68
|
-
<td class="content-cell"
|
|
69
|
-
style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 35px;">
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
<!-- Dictionary -->
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
<!-- Table -->
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
<!-- Action -->
|
|
82
|
-
|
|
83
|
-
<p
|
|
84
|
-
style="margin-top: 0; color: #333; font-size: 16px; line-height: 1.5em; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; -webkit-box-sizing: border-box; box-sizing: border-box; text-align: center;">
|
|
85
|
-
Click on the below link to reset your password.
|
|
86
|
-
</p>
|
|
87
|
-
<!--[if mso]>
|
|
88
|
-
<center>
|
|
89
|
-
<v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="https://example.com" style="height: 45px; v-text-anchor: middle; width: 200px;" arcsize="10%" stroke="f" fillcolor="#22BC66">
|
|
90
|
-
<w:anchorlock/>
|
|
91
|
-
<center style="color: #ffffff; font-family: sans-serif; font-size: 15px;">
|
|
92
|
-
Reset Password
|
|
93
|
-
</center>
|
|
94
|
-
</v:roundrect>
|
|
95
|
-
</center>
|
|
96
|
-
<![endif]-->
|
|
97
|
-
<![if !mso]>
|
|
98
|
-
<table class="body-action" align="center" cellpadding="0" cellspacing="0"
|
|
99
|
-
style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; width: 100%; margin: 30px auto; padding: 0; text-align: center;">
|
|
100
|
-
<tr>
|
|
101
|
-
<td align="center"
|
|
102
|
-
style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; text-align: center;">
|
|
103
|
-
<a href="{{ passwordResetLink }}" target="_blank" style="
|
|
104
|
-
display: inline-block;
|
|
105
|
-
background-color: #E48C74;
|
|
106
|
-
color: #fff;
|
|
107
|
-
text-decoration: none;
|
|
108
|
-
padding: 12px 24px;
|
|
109
|
-
font-weight: 700;
|
|
110
|
-
font-size: 14px;
|
|
111
|
-
line-height: normal;
|
|
112
|
-
border-radius: 8px; /* Rounded corners */
|
|
113
|
-
text-align: center;
|
|
114
|
-
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); /* Shadow for better design */
|
|
115
|
-
">
|
|
116
|
-
Reset Password
|
|
117
|
-
<span style="display: inline-block; vertical-align: middle;">
|
|
118
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="15"
|
|
119
|
-
height="14" viewBox="0 0 15 14" fill="none">
|
|
120
|
-
<path d="M9.83398 7L6.33398 10.5V3.5L9.83398 7Z"
|
|
121
|
-
fill="white" />
|
|
122
|
-
</svg>
|
|
123
|
-
</span>
|
|
124
|
-
</a>
|
|
125
|
-
</td>
|
|
126
|
-
</tr>
|
|
127
|
-
</table>
|
|
128
|
-
<![endif]>
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
<!-- Support for Gmail Go-To Actions -->
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
<p
|
|
136
|
-
style="margin-top: 30px; color: #74787E; font-size: 16px; line-height: 1.5em; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; -webkit-box-sizing: border-box; box-sizing: border-box; text-align: center; font-size: 1.2rem; font-weight: 400; color: #333;">
|
|
137
|
-
Incase of any queries or support, please reach out to us at <span
|
|
138
|
-
style="color: #EBB26F; font-weight: 600;">support@srmdcourses.org</span>
|
|
139
|
-
</p>
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
</td>
|
|
145
|
-
</tr>
|
|
146
|
-
</table>
|
|
147
|
-
</td>
|
|
148
|
-
</tr>
|
|
149
|
-
|
|
150
|
-
<tr>
|
|
151
|
-
<td
|
|
152
|
-
style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; -webkit-box-sizing: border-box; box-sizing: border-box;">
|
|
153
|
-
<table class="email-footer" align="center" width="600" cellpadding="0" cellspacing="0"
|
|
154
|
-
style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; -webkit-box-sizing: border-box; box-sizing: border-box; width: 600px; margin: 0 auto; padding: 0; text-align: center;">
|
|
155
|
-
<tr>
|
|
156
|
-
<td class="content-cell"
|
|
157
|
-
style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 35px;">
|
|
158
|
-
</td>
|
|
159
|
-
</tr>
|
|
160
|
-
</table>
|
|
161
|
-
</td>
|
|
162
|
-
</tr>
|
|
163
|
-
</table>
|
|
164
|
-
</td>
|
|
165
|
-
</tr>
|
|
166
|
-
</table>
|
|
117
|
+
<body>
|
|
118
|
+
<div class="email-wrapper">
|
|
119
|
+
<!-- Logo outside the box -->
|
|
120
|
+
<div class="logo">
|
|
121
|
+
<img src="https://yourcompany.com/logo.png" alt="Company Logo" />
|
|
122
|
+
</div>
|
|
123
|
+
|
|
124
|
+
<!-- Content Box -->
|
|
125
|
+
<div class="content-box">
|
|
126
|
+
<h2 class="title">Hi, {{ fullName }} !</h2>
|
|
127
|
+
<p class="intro">
|
|
128
|
+
Welcome to {{ solidAppName }}
|
|
129
|
+
</p>
|
|
130
|
+
<p class="intro">
|
|
131
|
+
You requested a password reset. Click the button below to set a new password:
|
|
132
|
+
</p>
|
|
133
|
+
<div class="button-container">
|
|
134
|
+
<a href="{{ passwordResetLink }}" class="button" target="_blank">
|
|
135
|
+
Reset Password
|
|
136
|
+
</a>
|
|
137
|
+
</div>
|
|
138
|
+
<p class="footer-text">
|
|
139
|
+
If you have any questions, just reply to this email—we’re happy to help.
|
|
140
|
+
</p>
|
|
141
|
+
</div>
|
|
142
|
+
|
|
143
|
+
<div class="footer">
|
|
144
|
+
© 2025 <a href="{{ solidAppWebsiteUrl }}" target="_blank">{{ solidAppName }}</a>. All rights reserved.
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
167
147
|
</body>
|
|
168
148
|
|
|
169
149
|
</html>
|