@kya-os/consent 0.1.0 → 0.1.2
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/bundle/index.d.ts +44 -0
- package/dist/bundle/index.d.ts.map +1 -0
- package/dist/bundle/index.js +45 -0
- package/dist/bundle/index.js.map +1 -0
- package/dist/bundle/inline.d.ts +18 -0
- package/dist/bundle/inline.d.ts.map +1 -0
- package/dist/bundle/inline.js +18 -0
- package/dist/bundle/inline.js.map +1 -0
- package/dist/bundle/shell.d.ts +91 -0
- package/dist/bundle/shell.d.ts.map +1 -0
- package/dist/bundle/shell.js +282 -0
- package/dist/bundle/shell.js.map +1 -0
- package/dist/components/consent-button.d.ts +61 -0
- package/dist/components/consent-button.d.ts.map +1 -0
- package/dist/components/consent-button.js +177 -0
- package/dist/components/consent-button.js.map +1 -0
- package/dist/components/consent-checkbox.d.ts +61 -0
- package/dist/components/consent-checkbox.d.ts.map +1 -0
- package/dist/components/consent-checkbox.js +220 -0
- package/dist/components/consent-checkbox.js.map +1 -0
- package/dist/components/consent-input.d.ts +91 -0
- package/dist/components/consent-input.d.ts.map +1 -0
- package/dist/components/consent-input.js +332 -0
- package/dist/components/consent-input.js.map +1 -0
- package/dist/components/consent-oauth-button.d.ts +87 -0
- package/dist/components/consent-oauth-button.d.ts.map +1 -0
- package/dist/components/consent-oauth-button.js +389 -0
- package/dist/components/consent-oauth-button.js.map +1 -0
- package/dist/components/consent-otp-input.d.ts +92 -0
- package/dist/components/consent-otp-input.d.ts.map +1 -0
- package/dist/components/consent-otp-input.js +385 -0
- package/dist/components/consent-otp-input.js.map +1 -0
- package/dist/components/consent-permissions.d.ts +104 -0
- package/dist/components/consent-permissions.d.ts.map +1 -0
- package/dist/components/consent-permissions.js +430 -0
- package/dist/components/consent-permissions.js.map +1 -0
- package/dist/components/consent-shell.d.ts +72 -0
- package/dist/components/consent-shell.d.ts.map +1 -0
- package/dist/components/consent-shell.js +231 -0
- package/dist/components/consent-shell.js.map +1 -0
- package/dist/components/consent-terms.d.ts +89 -0
- package/dist/components/consent-terms.d.ts.map +1 -0
- package/dist/components/consent-terms.js +284 -0
- package/dist/components/consent-terms.js.map +1 -0
- package/dist/components/index.d.ts +19 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +23 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/mcp-consent.d.ts +152 -0
- package/dist/components/mcp-consent.d.ts.map +1 -0
- package/dist/components/mcp-consent.js +874 -0
- package/dist/components/mcp-consent.js.map +1 -0
- package/dist/consent.js +3744 -0
- package/dist/consent.min.js +1564 -0
- package/dist/constants/auth-modes.d.ts +7 -2
- package/dist/constants/auth-modes.d.ts.map +1 -1
- package/dist/constants/auth-modes.js +28 -36
- package/dist/constants/auth-modes.js.map +1 -1
- package/dist/constants/colors.js +1 -4
- package/dist/constants/colors.js.map +1 -1
- package/dist/constants/defaults.d.ts +1 -1
- package/dist/constants/defaults.d.ts.map +1 -1
- package/dist/constants/defaults.js +16 -19
- package/dist/constants/defaults.js.map +1 -1
- package/dist/constants/index.d.ts +3 -3
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +3 -26
- package/dist/constants/index.js.map +1 -1
- package/dist/index.d.ts +10 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -23
- package/dist/index.js.map +1 -1
- package/dist/react/index.d.ts +123 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +154 -0
- package/dist/react/index.js.map +1 -0
- package/dist/resolution/index.d.ts +3 -3
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/resolution/index.js +3 -19
- package/dist/resolution/index.js.map +1 -1
- package/dist/resolution/resolve-branding.d.ts +1 -1
- package/dist/resolution/resolve-branding.d.ts.map +1 -1
- package/dist/resolution/resolve-branding.js +14 -24
- package/dist/resolution/resolve-branding.js.map +1 -1
- package/dist/resolution/resolve-config.d.ts +2 -2
- package/dist/resolution/resolve-config.d.ts.map +1 -1
- package/dist/resolution/resolve-config.js +57 -53
- package/dist/resolution/resolve-config.js.map +1 -1
- package/dist/resolution/resolve-copy.d.ts +2 -2
- package/dist/resolution/resolve-copy.d.ts.map +1 -1
- package/dist/resolution/resolve-copy.js +35 -43
- package/dist/resolution/resolve-copy.js.map +1 -1
- package/dist/schemas/api.schemas.d.ts +7 -4
- package/dist/schemas/api.schemas.d.ts.map +1 -1
- package/dist/schemas/api.schemas.js +70 -74
- package/dist/schemas/api.schemas.js.map +1 -1
- package/dist/schemas/branding.schemas.js +17 -20
- package/dist/schemas/branding.schemas.js.map +1 -1
- package/dist/schemas/config.schemas.d.ts +1 -1
- package/dist/schemas/config.schemas.d.ts.map +1 -1
- package/dist/schemas/config.schemas.js +64 -70
- package/dist/schemas/config.schemas.js.map +1 -1
- package/dist/schemas/index.d.ts +4 -4
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +4 -20
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/modes.schemas.js +60 -63
- package/dist/schemas/modes.schemas.js.map +1 -1
- package/dist/security/escape.d.ts.map +1 -1
- package/dist/security/escape.js +12 -17
- package/dist/security/escape.js.map +1 -1
- package/dist/security/index.d.ts +2 -2
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +2 -18
- package/dist/security/index.js.map +1 -1
- package/dist/security/validators.js +9 -20
- package/dist/security/validators.js.map +1 -1
- package/dist/styles/css-variables.d.ts +1 -1
- package/dist/styles/css-variables.d.ts.map +1 -1
- package/dist/styles/css-variables.js +18 -27
- package/dist/styles/css-variables.js.map +1 -1
- package/dist/styles/index.d.ts +3 -3
- package/dist/styles/index.d.ts.map +1 -1
- package/dist/styles/index.js +3 -19
- package/dist/styles/index.js.map +1 -1
- package/dist/styles/stylesheet.d.ts +1 -1
- package/dist/styles/stylesheet.d.ts.map +1 -1
- package/dist/styles/stylesheet.js +20 -27
- package/dist/styles/stylesheet.js.map +1 -1
- package/dist/styles/tokens.js +1 -4
- package/dist/styles/tokens.js.map +1 -1
- package/dist/templates/base/base-template.d.ts +3 -3
- package/dist/templates/base/base-template.d.ts.map +1 -1
- package/dist/templates/base/base-template.js +31 -35
- package/dist/templates/base/base-template.js.map +1 -1
- package/dist/templates/base/components.js +49 -65
- package/dist/templates/base/components.js.map +1 -1
- package/dist/templates/base/index.d.ts +2 -2
- package/dist/templates/base/index.d.ts.map +1 -1
- package/dist/templates/base/index.js +2 -20
- package/dist/templates/base/index.js.map +1 -1
- package/dist/templates/index.d.ts +9 -9
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +9 -25
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/modes/consent-only.template.d.ts +2 -2
- package/dist/templates/modes/consent-only.template.d.ts.map +1 -1
- package/dist/templates/modes/consent-only.template.js +11 -15
- package/dist/templates/modes/consent-only.template.js.map +1 -1
- package/dist/templates/modes/credentials.template.d.ts +4 -4
- package/dist/templates/modes/credentials.template.d.ts.map +1 -1
- package/dist/templates/modes/credentials.template.js +20 -24
- package/dist/templates/modes/credentials.template.js.map +1 -1
- package/dist/templates/modes/index.d.ts +6 -6
- package/dist/templates/modes/index.d.ts.map +1 -1
- package/dist/templates/modes/index.js +6 -16
- package/dist/templates/modes/index.js.map +1 -1
- package/dist/templates/modes/magic-link.template.d.ts +2 -2
- package/dist/templates/modes/magic-link.template.d.ts.map +1 -1
- package/dist/templates/modes/magic-link.template.js +14 -18
- package/dist/templates/modes/magic-link.template.js.map +1 -1
- package/dist/templates/modes/oauth.template.d.ts +2 -2
- package/dist/templates/modes/oauth.template.d.ts.map +1 -1
- package/dist/templates/modes/oauth.template.js +21 -25
- package/dist/templates/modes/oauth.template.js.map +1 -1
- package/dist/templates/modes/otp.template.d.ts +2 -2
- package/dist/templates/modes/otp.template.d.ts.map +1 -1
- package/dist/templates/modes/otp.template.js +17 -21
- package/dist/templates/modes/otp.template.js.map +1 -1
- package/dist/templates/modes/success.template.d.ts +2 -2
- package/dist/templates/modes/success.template.d.ts.map +1 -1
- package/dist/templates/modes/success.template.js +24 -29
- package/dist/templates/modes/success.template.js.map +1 -1
- package/dist/templates/registry.d.ts +4 -4
- package/dist/templates/registry.d.ts.map +1 -1
- package/dist/templates/registry.js +30 -38
- package/dist/templates/registry.js.map +1 -1
- package/dist/types/api.types.d.ts +6 -5
- package/dist/types/api.types.d.ts.map +1 -1
- package/dist/types/api.types.js +1 -2
- package/dist/types/api.types.js.map +1 -1
- package/dist/types/branding.types.js +1 -2
- package/dist/types/branding.types.js.map +1 -1
- package/dist/types/config.types.d.ts +5 -5
- package/dist/types/config.types.d.ts.map +1 -1
- package/dist/types/config.types.js +1 -2
- package/dist/types/config.types.js.map +1 -1
- package/dist/types/copy.types.js +1 -2
- package/dist/types/copy.types.js.map +1 -1
- package/dist/types/index.d.ts +6 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +6 -22
- package/dist/types/index.js.map +1 -1
- package/dist/types/modes.types.js +1 -4
- package/dist/types/modes.types.js.map +1 -1
- package/dist/types/page.types.d.ts +6 -6
- package/dist/types/page.types.d.ts.map +1 -1
- package/dist/types/page.types.js +1 -2
- package/dist/types/page.types.js.map +1 -1
- package/package.json +41 -4
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Credentials Template
|
|
4
3
|
*
|
|
@@ -10,12 +9,10 @@
|
|
|
10
9
|
*
|
|
11
10
|
* @module @kya-os/consent/templates/modes/credentials
|
|
12
11
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const stylesheet_1 = require("../../styles/stylesheet");
|
|
18
|
-
const modes_types_1 = require("../../types/modes.types");
|
|
12
|
+
import { BaseConsentTemplate } from "../base/base-template.js";
|
|
13
|
+
import { escapeHtml, escapeAttr } from "../../security/escape.js";
|
|
14
|
+
import { generateHeadStyles } from "../../styles/stylesheet.js";
|
|
15
|
+
import { AUTH_MODES } from "../../types/modes.types.js";
|
|
19
16
|
/**
|
|
20
17
|
* Credentials Template
|
|
21
18
|
*
|
|
@@ -30,13 +27,13 @@ const modes_types_1 = require("../../types/modes.types");
|
|
|
30
27
|
* - Forgot password link
|
|
31
28
|
* - Cancel + Sign in buttons (PreviewButtonGroup)
|
|
32
29
|
*/
|
|
33
|
-
class CredentialsTemplate extends
|
|
30
|
+
export class CredentialsTemplate extends BaseConsentTemplate {
|
|
34
31
|
constructor(config, resolved, remoteCredentials) {
|
|
35
32
|
super(config, resolved);
|
|
36
33
|
this.remoteCredentialsConfig = remoteCredentials;
|
|
37
34
|
}
|
|
38
35
|
get authMode() {
|
|
39
|
-
return
|
|
36
|
+
return AUTH_MODES.CREDENTIALS;
|
|
40
37
|
}
|
|
41
38
|
get credentialsConfig() {
|
|
42
39
|
// Merge remote config with modeConfig, preferring modeConfig for overrides
|
|
@@ -73,11 +70,11 @@ class CredentialsTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
73
70
|
<!-- PreviewShell: bg-white rounded-[20px] border border-black/10 shadow-xl w-full overflow-hidden max-w-[512px] -->
|
|
74
71
|
<div
|
|
75
72
|
class="bg-white rounded-[20px] border border-black/10 shadow-xl w-full overflow-hidden"
|
|
76
|
-
style="max-width: 512px; --consent-primary: ${
|
|
73
|
+
style="max-width: 512px; --consent-primary: ${escapeAttr(primaryColor)}; --consent-secondary: ${escapeAttr(branding.secondaryColor)};"
|
|
77
74
|
>
|
|
78
75
|
<!-- PreviewHeader: px-8 pt-5 -->
|
|
79
76
|
<div class="px-8 pt-5">
|
|
80
|
-
<h2 class="text-2xl font-bold text-[#333333]">${
|
|
77
|
+
<h2 class="text-2xl font-bold text-[#333333]">${escapeHtml(copy.title)}</h2>
|
|
81
78
|
</div>
|
|
82
79
|
|
|
83
80
|
<!-- PreviewContent: p-8 pt-4 space-y-6 -->
|
|
@@ -89,7 +86,7 @@ class CredentialsTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
89
86
|
${this.renderAgentIcon()}
|
|
90
87
|
</div>
|
|
91
88
|
<!-- Description: text-base text-black leading-[1.4] flex-1 -->
|
|
92
|
-
<p class="text-base text-black leading-[1.4] flex-1">${
|
|
89
|
+
<p class="text-base text-black leading-[1.4] flex-1">${escapeHtml(copy.resolvedDescription)}</p>
|
|
93
90
|
</div>
|
|
94
91
|
|
|
95
92
|
<!-- Login Form: space-y-4 -->
|
|
@@ -97,13 +94,13 @@ class CredentialsTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
97
94
|
<!-- Username Field: space-y-2 -->
|
|
98
95
|
<div class="space-y-2">
|
|
99
96
|
<label for="username" class="text-sm font-medium text-gray-700">
|
|
100
|
-
${
|
|
97
|
+
${escapeHtml(config.usernameLabel || "Username")}
|
|
101
98
|
</label>
|
|
102
99
|
<input
|
|
103
100
|
type="text"
|
|
104
101
|
id="username"
|
|
105
102
|
name="username"
|
|
106
|
-
placeholder="${
|
|
103
|
+
placeholder="${escapeAttr(config.usernamePlaceholder || "Enter your username")}"
|
|
107
104
|
required
|
|
108
105
|
autocomplete="username"
|
|
109
106
|
class="flex h-11 w-full rounded-md border border-gray-200 bg-white px-3 py-2 text-sm text-gray-900 placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:cursor-not-allowed disabled:opacity-50"
|
|
@@ -113,14 +110,14 @@ class CredentialsTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
113
110
|
<!-- Password Field: space-y-2 -->
|
|
114
111
|
<div class="space-y-2">
|
|
115
112
|
<label for="password" class="text-sm font-medium text-gray-700">
|
|
116
|
-
${
|
|
113
|
+
${escapeHtml(config.passwordLabel || "Password")}
|
|
117
114
|
</label>
|
|
118
115
|
<div class="relative">
|
|
119
116
|
<input
|
|
120
117
|
type="password"
|
|
121
118
|
id="password"
|
|
122
119
|
name="password"
|
|
123
|
-
placeholder="${
|
|
120
|
+
placeholder="${escapeAttr(config.passwordPlaceholder || "Enter your password")}"
|
|
124
121
|
required
|
|
125
122
|
autocomplete="current-password"
|
|
126
123
|
class="flex h-11 w-full rounded-md border border-gray-200 bg-white px-3 py-2 text-sm text-gray-900 placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:cursor-not-allowed disabled:opacity-50 pr-10"
|
|
@@ -159,15 +156,15 @@ class CredentialsTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
159
156
|
type="button"
|
|
160
157
|
onclick="window.close()"
|
|
161
158
|
class="font-medium text-sm rounded-lg transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed px-4 py-2.5 h-10 border-[1.5px] bg-transparent"
|
|
162
|
-
style="border-color: ${
|
|
159
|
+
style="border-color: ${escapeAttr(primaryColor)}; color: ${escapeAttr(primaryColor)};"
|
|
163
160
|
>
|
|
164
|
-
${
|
|
161
|
+
${escapeHtml(copy.cancelButtonText)}
|
|
165
162
|
</button>
|
|
166
163
|
<button
|
|
167
164
|
type="submit"
|
|
168
165
|
form="credential-form"
|
|
169
166
|
class="font-medium text-sm rounded-lg transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed px-4 py-3 h-11 text-white"
|
|
170
|
-
style="background-color: ${
|
|
167
|
+
style="background-color: ${escapeAttr(primaryColor)};"
|
|
171
168
|
>
|
|
172
169
|
Sign in
|
|
173
170
|
</button>
|
|
@@ -191,7 +188,7 @@ class CredentialsTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
191
188
|
<title>${this.getPageTitle()}</title>
|
|
192
189
|
<script src="https://cdn.tailwindcss.com"></script>
|
|
193
190
|
<style>
|
|
194
|
-
${
|
|
191
|
+
${generateHeadStyles(branding)}
|
|
195
192
|
</style>
|
|
196
193
|
`;
|
|
197
194
|
}
|
|
@@ -201,7 +198,7 @@ class CredentialsTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
201
198
|
renderAgentIcon() {
|
|
202
199
|
const logoUrl = this.resolved.branding.logoUrl;
|
|
203
200
|
if (logoUrl) {
|
|
204
|
-
return `<img src="${
|
|
201
|
+
return `<img src="${escapeAttr(logoUrl)}" alt="Agent" class="w-full h-full object-contain" />`;
|
|
205
202
|
}
|
|
206
203
|
// Default placeholder icon matching AgentShield exactly
|
|
207
204
|
return `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" class="text-gray-400">
|
|
@@ -243,9 +240,9 @@ class CredentialsTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
243
240
|
: "<span></span>";
|
|
244
241
|
const forgotHtml = showForgot
|
|
245
242
|
? `
|
|
246
|
-
<a href="${
|
|
243
|
+
<a href="${escapeAttr(config.forgotPasswordUrl || "#")}"
|
|
247
244
|
class="text-sm hover:underline"
|
|
248
|
-
style="color: ${
|
|
245
|
+
style="color: ${escapeAttr(primaryColor)}">
|
|
249
246
|
Forgot password?
|
|
250
247
|
</a>
|
|
251
248
|
`
|
|
@@ -410,5 +407,4 @@ class CredentialsTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
410
407
|
</script>`;
|
|
411
408
|
}
|
|
412
409
|
}
|
|
413
|
-
exports.CredentialsTemplate = CredentialsTemplate;
|
|
414
410
|
//# sourceMappingURL=credentials.template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.template.js","sourceRoot":"","sources":["../../../src/templates/modes/credentials.template.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"credentials.template.js","sourceRoot":"","sources":["../../../src/templates/modes/credentials.template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAIhE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,mBAAoB,SAAQ,mBAAmB;IAG1D,YACE,MAAiC,EACjC,QAA+B,EAC/B,iBAAqC;QAErC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACxB,IAAI,CAAC,uBAAuB,GAAG,iBAAiB,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,UAAU,CAAC,WAAW,CAAC;IAChC,CAAC;IAED,IAAY,iBAAiB;QAC3B,2EAA2E;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,IAAI,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,IAAI,EAAE,CAAC;QACxD,OAAO;YACL,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,IAAI,UAAU;YACxE,mBAAmB,EACjB,KAAK,CAAC,mBAAmB;gBACzB,MAAM,CAAC,mBAAmB;gBAC1B,qBAAqB;YACvB,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,IAAI,UAAU;YACxE,mBAAmB,EACjB,KAAK,CAAC,mBAAmB;gBACzB,MAAM,CAAC,mBAAmB;gBAC1B,qBAAqB;YACvB,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI;YACrE,kBAAkB,EAChB,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,kBAAkB,IAAI,IAAI;YAC/D,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,IAAI,MAAM,CAAC,iBAAiB;SACvE,CAAC;IACJ,CAAC;IAED;;;OAGG;IACM,MAAM;QACb,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAE3C,OAAO;;;IAGP,IAAI,CAAC,UAAU,EAAE;;;;;;kDAM6B,UAAU,CAAC,YAAY,CAAC,0BAA0B,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;;;;sDAIjF,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;;;;YAShE,IAAI,CAAC,eAAe,EAAE;;;+DAG6B,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC;;;;;;;;cAQrF,UAAU,CAAC,MAAM,CAAC,aAAa,IAAI,UAAU,CAAC;;;;;;2BAMjC,UAAU,CAAC,MAAM,CAAC,mBAAmB,IAAI,qBAAqB,CAAC;;;;;;;;;;cAU5E,UAAU,CAAC,MAAM,CAAC,aAAa,IAAI,UAAU,CAAC;;;;;;;6BAO/B,UAAU,CAAC,MAAM,CAAC,mBAAmB,IAAI,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;UAyBlF,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,YAAY,CAAC;;;;;;;;;;;;;;iCAc3B,UAAU,CAAC,YAAY,CAAC,YAAY,UAAU,CAAC,YAAY,CAAC;;YAEjF,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC;;;;;;qCAMR,UAAU,CAAC,YAAY,CAAC;;;;;;;;IAQzD,IAAI,CAAC,gBAAgB,EAAE;;QAEnB,CAAC;IACP,CAAC;IAED;;OAEG;IACgB,UAAU;QAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnC,OAAO;;;;eAII,IAAI,CAAC,YAAY,EAAE;;;UAGxB,kBAAkB,CAAC,QAAQ,CAAC;;KAEjC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,aAAa,UAAU,CAAC,OAAO,CAAC,uDAAuD,CAAC;QACjG,CAAC;QACD,wDAAwD;QACxD,OAAO;;;;;WAKA,CAAC;IACV,CAAC;IAED;;;OAGG;IACK,uBAAuB,CAC7B,MAAyB,EACzB,YAAoB;QAEpB,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,KAAK,KAAK,CAAC;QACrD,MAAM,UAAU,GAAG,MAAM,CAAC,kBAAkB,KAAK,IAAI,CAAC;QAEtD,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAE5C,kGAAkG;QAClG,2FAA2F;QAC3F,MAAM,YAAY,GAAG,YAAY;YAC/B,CAAC,CAAC;;;;;;;;;;;;;;;;KAgBH;YACC,CAAC,CAAC,eAAe,CAAC;QAEpB,MAAM,UAAU,GAAG,UAAU;YAC3B,CAAC,CAAC;iBACS,UAAU,CAAC,MAAM,CAAC,iBAAiB,IAAI,GAAG,CAAC;;yBAEnC,UAAU,CAAC,YAAY,CAAC;;;KAG5C;YACC,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO;;UAED,YAAY;UACZ,UAAU;;KAEf,CAAC;IACJ,CAAC;IAED;;;OAGG;IACM,iBAAiB;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAEkB,mBAAmB;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAEkB,kBAAkB;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACgB,gBAAgB;QACjC,2DAA2D;QAC3D,+CAA+C;QAC/C,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,CAClC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEvE,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAEtE,OAAO;;;;;;;;;;;;;;;;;;;;;;;yBAuBc,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA2BZ,SAAS;yBACT,SAAS;;;;;;;;;;;;;;;;;;;;;mBAqBf,QAAQ;;;;eAIZ,IAAI;gBACH,MAAM;oBACF,QAAQ;qBACP,SAAS;qBACT,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA0CpB,CAAC;IACT,CAAC;CACF"}
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @module @kya-os/consent/templates/modes
|
|
7
7
|
*/
|
|
8
|
-
export { ConsentOnlyTemplate } from "./consent-only.template";
|
|
9
|
-
export { CredentialsTemplate } from "./credentials.template";
|
|
10
|
-
export { OAuthTemplate } from "./oauth.template";
|
|
11
|
-
export { MagicLinkTemplate } from "./magic-link.template";
|
|
12
|
-
export { OTPTemplate } from "./otp.template";
|
|
13
|
-
export { SuccessTemplate, renderSuccessPage } from "./success.template";
|
|
8
|
+
export { ConsentOnlyTemplate } from "./consent-only.template.js";
|
|
9
|
+
export { CredentialsTemplate } from "./credentials.template.js";
|
|
10
|
+
export { OAuthTemplate } from "./oauth.template.js";
|
|
11
|
+
export { MagicLinkTemplate } from "./magic-link.template.js";
|
|
12
|
+
export { OTPTemplate } from "./otp.template.js";
|
|
13
|
+
export { SuccessTemplate, renderSuccessPage } from "./success.template.js";
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/modes/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/modes/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Mode Templates Index
|
|
4
3
|
*
|
|
@@ -6,19 +5,10 @@
|
|
|
6
5
|
*
|
|
7
6
|
* @module @kya-os/consent/templates/modes
|
|
8
7
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var oauth_template_1 = require("./oauth.template");
|
|
16
|
-
Object.defineProperty(exports, "OAuthTemplate", { enumerable: true, get: function () { return oauth_template_1.OAuthTemplate; } });
|
|
17
|
-
var magic_link_template_1 = require("./magic-link.template");
|
|
18
|
-
Object.defineProperty(exports, "MagicLinkTemplate", { enumerable: true, get: function () { return magic_link_template_1.MagicLinkTemplate; } });
|
|
19
|
-
var otp_template_1 = require("./otp.template");
|
|
20
|
-
Object.defineProperty(exports, "OTPTemplate", { enumerable: true, get: function () { return otp_template_1.OTPTemplate; } });
|
|
21
|
-
var success_template_1 = require("./success.template");
|
|
22
|
-
Object.defineProperty(exports, "SuccessTemplate", { enumerable: true, get: function () { return success_template_1.SuccessTemplate; } });
|
|
23
|
-
Object.defineProperty(exports, "renderSuccessPage", { enumerable: true, get: function () { return success_template_1.renderSuccessPage; } });
|
|
8
|
+
export { ConsentOnlyTemplate } from "./consent-only.template.js";
|
|
9
|
+
export { CredentialsTemplate } from "./credentials.template.js";
|
|
10
|
+
export { OAuthTemplate } from "./oauth.template.js";
|
|
11
|
+
export { MagicLinkTemplate } from "./magic-link.template.js";
|
|
12
|
+
export { OTPTemplate } from "./otp.template.js";
|
|
13
|
+
export { SuccessTemplate, renderSuccessPage } from "./success.template.js";
|
|
24
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/modes/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/modes/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @module @kya-os/consent/templates/modes/magic-link
|
|
7
7
|
*/
|
|
8
|
-
import { BaseConsentTemplate } from "../base/base-template";
|
|
9
|
-
import type { AuthMode } from "../../types/modes.types";
|
|
8
|
+
import { BaseConsentTemplate } from "../base/base-template.js";
|
|
9
|
+
import type { AuthMode } from "../../types/modes.types.js";
|
|
10
10
|
/**
|
|
11
11
|
* Magic Link Template
|
|
12
12
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magic-link.template.d.ts","sourceRoot":"","sources":["../../../src/templates/modes/magic-link.template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"magic-link.template.d.ts","sourceRoot":"","sources":["../../../src/templates/modes/magic-link.template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAO/D,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,4BAA4B,CAAC;AAG5E;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,OAAO,KAAK,eAAe,GAE1B;IAEQ,iBAAiB,IAAI,MAAM;IA6BpC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;cACgB,mBAAmB,IAAI,MAAM;cAI7B,gBAAgB,IAAI,MAAM;CA6H9C"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Magic Link Template
|
|
4
3
|
*
|
|
@@ -6,12 +5,10 @@
|
|
|
6
5
|
*
|
|
7
6
|
* @module @kya-os/consent/templates/modes/magic-link
|
|
8
7
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const escape_1 = require("../../security/escape");
|
|
14
|
-
const modes_types_1 = require("../../types/modes.types");
|
|
8
|
+
import { BaseConsentTemplate } from "../base/base-template.js";
|
|
9
|
+
import { renderInput, renderFullWidthButton, renderErrorContainer, } from "../base/components.js";
|
|
10
|
+
import { escapeJs } from "../../security/escape.js";
|
|
11
|
+
import { AUTH_MODES } from "../../types/modes.types.js";
|
|
15
12
|
/**
|
|
16
13
|
* Magic Link Template
|
|
17
14
|
*
|
|
@@ -21,9 +18,9 @@ const modes_types_1 = require("../../types/modes.types");
|
|
|
21
18
|
* - Success/waiting state
|
|
22
19
|
* - Resend link functionality
|
|
23
20
|
*/
|
|
24
|
-
class MagicLinkTemplate extends
|
|
21
|
+
export class MagicLinkTemplate extends BaseConsentTemplate {
|
|
25
22
|
get authMode() {
|
|
26
|
-
return
|
|
23
|
+
return AUTH_MODES.MAGIC_LINK;
|
|
27
24
|
}
|
|
28
25
|
get magicLinkConfig() {
|
|
29
26
|
return this.config.modeConfig?.magicLink;
|
|
@@ -34,8 +31,8 @@ class MagicLinkTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
34
31
|
<div id="magic-link-form-container">
|
|
35
32
|
<form id="magic-link-form" class="space-y-4">
|
|
36
33
|
${this.renderEmailField(config)}
|
|
37
|
-
${
|
|
38
|
-
${
|
|
34
|
+
${renderErrorContainer()}
|
|
35
|
+
${renderFullWidthButton(config?.buttonText || "Send Magic Link", "submit")}
|
|
39
36
|
</form>
|
|
40
37
|
</div>
|
|
41
38
|
<div id="magic-link-sent" class="hidden text-center py-4 space-y-4">
|
|
@@ -59,7 +56,7 @@ class MagicLinkTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
59
56
|
* Render email input field.
|
|
60
57
|
*/
|
|
61
58
|
renderEmailField(config) {
|
|
62
|
-
return
|
|
59
|
+
return renderInput("email", "email", config?.emailLabel || "Email address", config?.emailPlaceholder || "Enter your email", true, "email");
|
|
63
60
|
}
|
|
64
61
|
/**
|
|
65
62
|
* Override action buttons - form has its own submit.
|
|
@@ -68,11 +65,11 @@ class MagicLinkTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
68
65
|
return "";
|
|
69
66
|
}
|
|
70
67
|
renderModeScript() {
|
|
71
|
-
const serverUrl =
|
|
72
|
-
const projectId =
|
|
73
|
-
const sessionId =
|
|
74
|
-
const agentDid =
|
|
75
|
-
const tool =
|
|
68
|
+
const serverUrl = escapeJs(this.config.serverUrl);
|
|
69
|
+
const projectId = escapeJs(this.config.projectId);
|
|
70
|
+
const sessionId = escapeJs(this.config.sessionId);
|
|
71
|
+
const agentDid = escapeJs(this.config.agentDid);
|
|
72
|
+
const tool = escapeJs(this.config.tool);
|
|
76
73
|
const scopes = JSON.stringify(this.config.scopes);
|
|
77
74
|
const resendCooldown = this.magicLinkConfig?.resendCooldown || 60;
|
|
78
75
|
return `
|
|
@@ -192,5 +189,4 @@ class MagicLinkTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
192
189
|
</script>`;
|
|
193
190
|
}
|
|
194
191
|
}
|
|
195
|
-
exports.MagicLinkTemplate = MagicLinkTemplate;
|
|
196
192
|
//# sourceMappingURL=magic-link.template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magic-link.template.js","sourceRoot":"","sources":["../../../src/templates/modes/magic-link.template.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"magic-link.template.js","sourceRoot":"","sources":["../../../src/templates/modes/magic-link.template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,OAAO,iBAAkB,SAAQ,mBAAmB;IACxD,IAAI,QAAQ;QACV,OAAO,UAAU,CAAC,UAAU,CAAC;IAC/B,CAAC;IAED,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC;IAC3C,CAAC;IAEQ,iBAAiB;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QAEpC,OAAO;;;YAGC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAC7B,oBAAoB,EAAE;YACtB,qBAAqB,CAAC,MAAM,EAAE,UAAU,IAAI,iBAAiB,EAAE,QAAQ,CAAC;;;;;;;;;;;;;;;;;;KAkB/E,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,MAAwB;QAC/C,OAAO,WAAW,CAChB,OAAO,EACP,OAAO,EACP,MAAM,EAAE,UAAU,IAAI,eAAe,EACrC,MAAM,EAAE,gBAAgB,IAAI,kBAAkB,EAC9C,IAAI,EACJ,OAAO,CACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACgB,mBAAmB;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAEkB,gBAAgB;QACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,cAAc,IAAI,EAAE,CAAC;QAElE,OAAO;;;;;;;;;;;;;sBAaW,SAAS;qBACV,cAAc;;;;;;;;cAQrB,IAAI;gBACF,MAAM;mBACH,QAAQ;oBACP,SAAS;oBACT,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAwFnB,CAAC;IACT,CAAC;CACF"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @module @kya-os/consent/templates/modes/oauth
|
|
7
7
|
*/
|
|
8
|
-
import { BaseConsentTemplate } from "../base/base-template";
|
|
9
|
-
import type { AuthMode } from "../../types/modes.types";
|
|
8
|
+
import { BaseConsentTemplate } from "../base/base-template.js";
|
|
9
|
+
import type { AuthMode } from "../../types/modes.types.js";
|
|
10
10
|
/**
|
|
11
11
|
* OAuth Template
|
|
12
12
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.template.d.ts","sourceRoot":"","sources":["../../../src/templates/modes/oauth.template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"oauth.template.d.ts","sourceRoot":"","sources":["../../../src/templates/modes/oauth.template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,4BAA4B,CAAC;AAqCxE;;;;;;;GAOG;AACH,qBAAa,aAAc,SAAQ,mBAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,CAAS;IAE1B,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B,OAAO,KAAK,WAAW,GAEtB;IAEQ,iBAAiB,IAAI,MAAM;IAkBpC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;OAEG;cACgB,mBAAmB,IAAI,MAAM;CA8CjD"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* OAuth Template
|
|
4
3
|
*
|
|
@@ -6,13 +5,11 @@
|
|
|
6
5
|
*
|
|
7
6
|
* @module @kya-os/consent/templates/modes/oauth
|
|
8
7
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const escape_1 = require("../../security/escape");
|
|
15
|
-
const modes_types_1 = require("../../types/modes.types");
|
|
8
|
+
import { BaseConsentTemplate } from "../base/base-template.js";
|
|
9
|
+
import { renderExpirationNotice } from "../base/components.js";
|
|
10
|
+
import { CONSENT_CLASSES } from "../../styles/tokens.js";
|
|
11
|
+
import { escapeHtml, escapeAttr } from "../../security/escape.js";
|
|
12
|
+
import { AUTH_MODES } from "../../types/modes.types.js";
|
|
16
13
|
/**
|
|
17
14
|
* OAuth provider branding information.
|
|
18
15
|
*/
|
|
@@ -51,9 +48,9 @@ const PROVIDER_BRANDING = {
|
|
|
51
48
|
* - Expiration notice
|
|
52
49
|
* - Provider-branded continue button
|
|
53
50
|
*/
|
|
54
|
-
class OAuthTemplate extends
|
|
51
|
+
export class OAuthTemplate extends BaseConsentTemplate {
|
|
55
52
|
get authMode() {
|
|
56
|
-
return
|
|
53
|
+
return AUTH_MODES.OAUTH;
|
|
57
54
|
}
|
|
58
55
|
/**
|
|
59
56
|
* Set the OAuth authorization URL.
|
|
@@ -73,7 +70,7 @@ class OAuthTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
73
70
|
${this.renderPermissionsList()}
|
|
74
71
|
<div class="pt-2">
|
|
75
72
|
<p class="text-sm text-gray-600">
|
|
76
|
-
You will be redirected to ${
|
|
73
|
+
You will be redirected to ${escapeHtml(branding?.name || config?.providerName || "the identity provider")} to authenticate.
|
|
77
74
|
</p>
|
|
78
75
|
</div>
|
|
79
76
|
${this.renderExpirationNotice()}
|
|
@@ -87,7 +84,7 @@ class OAuthTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
87
84
|
const { scopes } = this.config;
|
|
88
85
|
if (scopes.length === 0)
|
|
89
86
|
return "";
|
|
90
|
-
const items = scopes.map((s) => `<li>${
|
|
87
|
+
const items = scopes.map((s) => `<li>${escapeHtml(s)}</li>`).join("");
|
|
91
88
|
return `
|
|
92
89
|
<div class="space-y-2">
|
|
93
90
|
<p class="text-sm font-medium text-gray-700">Requested permissions:</p>
|
|
@@ -103,7 +100,7 @@ class OAuthTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
103
100
|
renderExpirationNotice() {
|
|
104
101
|
const { copy } = this.resolved;
|
|
105
102
|
const expirationDays = this.resolved.expirationDays || 30;
|
|
106
|
-
return
|
|
103
|
+
return renderExpirationNotice(copy.expirationText, expirationDays);
|
|
107
104
|
}
|
|
108
105
|
/**
|
|
109
106
|
* Override action buttons to show OAuth provider button.
|
|
@@ -122,32 +119,31 @@ class OAuthTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
122
119
|
? `style="background-color: ${branding.color}"`
|
|
123
120
|
: "";
|
|
124
121
|
return `
|
|
125
|
-
<div class="${
|
|
126
|
-
<button type="button" onclick="window.close()" class="${
|
|
127
|
-
${
|
|
122
|
+
<div class="${CONSENT_CLASSES.buttonGroup}">
|
|
123
|
+
<button type="button" onclick="window.close()" class="${CONSENT_CLASSES.buttonSecondary}">
|
|
124
|
+
${escapeHtml(copy.cancelButtonText)}
|
|
128
125
|
</button>
|
|
129
|
-
<a href="${
|
|
130
|
-
class="${
|
|
126
|
+
<a href="${escapeAttr(oauthUrl)}"
|
|
127
|
+
class="${CONSENT_CLASSES.buttonPrimary} flex items-center justify-center gap-2"
|
|
131
128
|
${buttonStyle}>
|
|
132
129
|
${branding?.icon || ""}
|
|
133
|
-
${
|
|
130
|
+
${escapeHtml(buttonText)}
|
|
134
131
|
</a>
|
|
135
132
|
</div>
|
|
136
133
|
`;
|
|
137
134
|
}
|
|
138
135
|
// Fallback to standard buttons
|
|
139
136
|
return `
|
|
140
|
-
<div class="${
|
|
141
|
-
<button type="button" onclick="window.close()" class="${
|
|
142
|
-
${
|
|
137
|
+
<div class="${CONSENT_CLASSES.buttonGroup}">
|
|
138
|
+
<button type="button" onclick="window.close()" class="${CONSENT_CLASSES.buttonSecondary}">
|
|
139
|
+
${escapeHtml(copy.cancelButtonText)}
|
|
143
140
|
</button>
|
|
144
|
-
<button type="submit" class="${
|
|
141
|
+
<button type="submit" class="${CONSENT_CLASSES.buttonPrimary} btn-primary flex items-center justify-center gap-2">
|
|
145
142
|
${branding?.icon || ""}
|
|
146
|
-
${
|
|
143
|
+
${escapeHtml(buttonText)}
|
|
147
144
|
</button>
|
|
148
145
|
</div>
|
|
149
146
|
`;
|
|
150
147
|
}
|
|
151
148
|
}
|
|
152
|
-
exports.OAuthTemplate = OAuthTemplate;
|
|
153
149
|
//# sourceMappingURL=oauth.template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.template.js","sourceRoot":"","sources":["../../../src/templates/modes/oauth.template.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth.template.js","sourceRoot":"","sources":["../../../src/templates/modes/oauth.template.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @module @kya-os/consent/templates/modes/otp
|
|
7
7
|
*/
|
|
8
|
-
import { BaseConsentTemplate } from "../base/base-template";
|
|
9
|
-
import type { AuthMode } from "../../types/modes.types";
|
|
8
|
+
import { BaseConsentTemplate } from "../base/base-template.js";
|
|
9
|
+
import type { AuthMode } from "../../types/modes.types.js";
|
|
10
10
|
/**
|
|
11
11
|
* OTP Template
|
|
12
12
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otp.template.d.ts","sourceRoot":"","sources":["../../../src/templates/modes/otp.template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"otp.template.d.ts","sourceRoot":"","sources":["../../../src/templates/modes/otp.template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAO/D,OAAO,KAAK,EAAE,QAAQ,EAAa,MAAM,4BAA4B,CAAC;AAGtE;;;;;;GAMG;AACH,qBAAa,WAAY,SAAQ,mBAAmB;IAClD,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,OAAO,KAAK,SAAS,GAEpB;IAEQ,iBAAiB,IAAI,MAAM;IAkCpC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;cACgB,mBAAmB,IAAI,MAAM;cAI7B,gBAAgB,IAAI,MAAM;CAmO9C"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* OTP Template
|
|
4
3
|
*
|
|
@@ -6,12 +5,10 @@
|
|
|
6
5
|
*
|
|
7
6
|
* @module @kya-os/consent/templates/modes/otp
|
|
8
7
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const escape_1 = require("../../security/escape");
|
|
14
|
-
const modes_types_1 = require("../../types/modes.types");
|
|
8
|
+
import { BaseConsentTemplate } from "../base/base-template.js";
|
|
9
|
+
import { renderInput, renderFullWidthButton, renderErrorContainer, } from "../base/components.js";
|
|
10
|
+
import { escapeJs, escapeHtml } from "../../security/escape.js";
|
|
11
|
+
import { AUTH_MODES } from "../../types/modes.types.js";
|
|
15
12
|
/**
|
|
16
13
|
* OTP Template
|
|
17
14
|
*
|
|
@@ -19,9 +16,9 @@ const modes_types_1 = require("../../types/modes.types");
|
|
|
19
16
|
* 1. Phone/email input to request code
|
|
20
17
|
* 2. Code input to verify
|
|
21
18
|
*/
|
|
22
|
-
class OTPTemplate extends
|
|
19
|
+
export class OTPTemplate extends BaseConsentTemplate {
|
|
23
20
|
get authMode() {
|
|
24
|
-
return
|
|
21
|
+
return AUTH_MODES.OTP;
|
|
25
22
|
}
|
|
26
23
|
get otpConfig() {
|
|
27
24
|
return this.config.modeConfig?.otp;
|
|
@@ -33,22 +30,22 @@ class OTPTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
33
30
|
<div id="otp-request-container">
|
|
34
31
|
<form id="otp-request-form" class="space-y-4">
|
|
35
32
|
${this.renderPhoneField(config)}
|
|
36
|
-
${
|
|
37
|
-
${
|
|
33
|
+
${renderErrorContainer("otp-request-error")}
|
|
34
|
+
${renderFullWidthButton("Send verification code", "submit")}
|
|
38
35
|
</form>
|
|
39
36
|
</div>
|
|
40
37
|
<div id="otp-verify-container" class="hidden">
|
|
41
38
|
<form id="otp-verify-form" class="space-y-4">
|
|
42
39
|
<div class="text-center mb-4">
|
|
43
40
|
<p class="text-sm text-gray-600">
|
|
44
|
-
${
|
|
41
|
+
${escapeHtml(config?.instructions || `Enter the ${digits}-digit code sent to your phone`)}
|
|
45
42
|
</p>
|
|
46
43
|
</div>
|
|
47
44
|
<div class="flex justify-center gap-2" id="otp-inputs">
|
|
48
45
|
${this.renderOTPInputs(digits)}
|
|
49
46
|
</div>
|
|
50
|
-
${
|
|
51
|
-
${
|
|
47
|
+
${renderErrorContainer("otp-verify-error")}
|
|
48
|
+
${renderFullWidthButton("Verify", "submit")}
|
|
52
49
|
<div class="text-center">
|
|
53
50
|
<button type="button" id="resend-otp" class="text-sm link-primary disabled:opacity-50">
|
|
54
51
|
Resend code
|
|
@@ -62,7 +59,7 @@ class OTPTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
62
59
|
* Render phone/email input field.
|
|
63
60
|
*/
|
|
64
61
|
renderPhoneField(config) {
|
|
65
|
-
return
|
|
62
|
+
return renderInput("tel", "phone", config?.phoneLabel || "Phone number", config?.phonePlaceholder || "+1 (555) 123-4567", true, "tel");
|
|
66
63
|
}
|
|
67
64
|
/**
|
|
68
65
|
* Render OTP digit input boxes.
|
|
@@ -86,11 +83,11 @@ class OTPTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
86
83
|
return "";
|
|
87
84
|
}
|
|
88
85
|
renderModeScript() {
|
|
89
|
-
const serverUrl =
|
|
90
|
-
const projectId =
|
|
91
|
-
const sessionId =
|
|
92
|
-
const agentDid =
|
|
93
|
-
const tool =
|
|
86
|
+
const serverUrl = escapeJs(this.config.serverUrl);
|
|
87
|
+
const projectId = escapeJs(this.config.projectId);
|
|
88
|
+
const sessionId = escapeJs(this.config.sessionId);
|
|
89
|
+
const agentDid = escapeJs(this.config.agentDid);
|
|
90
|
+
const tool = escapeJs(this.config.tool);
|
|
94
91
|
const scopes = JSON.stringify(this.config.scopes);
|
|
95
92
|
const digits = this.otpConfig?.digits || 6;
|
|
96
93
|
const resendCooldown = this.otpConfig?.resendCooldown || 60;
|
|
@@ -312,5 +309,4 @@ class OTPTemplate extends base_template_1.BaseConsentTemplate {
|
|
|
312
309
|
</script>`;
|
|
313
310
|
}
|
|
314
311
|
}
|
|
315
|
-
exports.OTPTemplate = OTPTemplate;
|
|
316
312
|
//# sourceMappingURL=otp.template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otp.template.js","sourceRoot":"","sources":["../../../src/templates/modes/otp.template.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"otp.template.js","sourceRoot":"","sources":["../../../src/templates/modes/otp.template.ts"],"names":[],"mappings":"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"}
|