79 lines
3.1 KiB
JavaScript
79 lines
3.1 KiB
JavaScript
export function tokenOptionsAccordion(collection) {
|
|
const uniqueId = "token_" + app.utils.randomString();
|
|
|
|
const data = store({
|
|
get tokensList() {
|
|
if (collection?.name === "_superusers") {
|
|
return [
|
|
{ key: "authToken", label: "Auth" },
|
|
{ key: "passwordResetToken", label: "Password reset" },
|
|
{ key: "fileToken", label: "Protected file" },
|
|
];
|
|
}
|
|
|
|
return [
|
|
{ key: "authToken", label: "Auth" },
|
|
{ key: "verificationToken", label: "Email verification" },
|
|
{ key: "passwordResetToken", label: "Password reset" },
|
|
{ key: "emailChangeToken", label: "Email change" },
|
|
{ key: "fileToken", label: "Protected file" },
|
|
];
|
|
},
|
|
});
|
|
|
|
return t.details(
|
|
{
|
|
pbEvent: "tokenOptionsAccordion",
|
|
name: "other",
|
|
className: "accordion token-options-accordion",
|
|
},
|
|
t.summary(
|
|
null,
|
|
t.i({ className: "ri-key-2-line", ariaHidden: true }),
|
|
t.span({ className: "txt", textContent: "Token options (invalidate, duration)" }),
|
|
),
|
|
t.div({ className: "grid sm" }, () => {
|
|
return data.tokensList.map((token) => {
|
|
const fieldId = uniqueId + token.key;
|
|
|
|
return t.div(
|
|
{ className: "col-sm-6" },
|
|
t.div(
|
|
{ className: "field token-field" },
|
|
t.label({
|
|
htmlFor: fieldId,
|
|
textContent: () => token.label + " duration (in seconds)",
|
|
}),
|
|
t.input({
|
|
id: fieldId,
|
|
type: "number",
|
|
min: 1,
|
|
step: 1,
|
|
required: true,
|
|
name: () => token.key + ".duration",
|
|
value: () => collection[token.key].duration,
|
|
oninput: (e) => (collection[token.key].duration = parseInt(e.target.value, 10)),
|
|
}),
|
|
),
|
|
t.div(
|
|
{ className: "field-help m-b-10" },
|
|
t.button({
|
|
type: "button",
|
|
className: () => `link-hint ${collection[token.key].secret ? "txt-success" : ""}`,
|
|
textContent: "Invalidate all previously issued tokens",
|
|
onclick: () => {
|
|
// toggle
|
|
if (collection[token.key].secret) {
|
|
delete collection[token.key].secret;
|
|
} else {
|
|
collection[token.key].secret = app.utils.randomSecret(50);
|
|
}
|
|
},
|
|
}),
|
|
),
|
|
);
|
|
});
|
|
}),
|
|
);
|
|
}
|