Files
pulse-signage/src/web/views/account/index.hbs
T
lzstealth 98f969ca0f
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile, web, pulse-signage-web) (push) Successful in 1m47s
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile.player, player, pulse-signage-player) (push) Successful in 31s
Release v2.11.1
2026-09-04 15:43:55 +01:00

114 lines
6.5 KiB
Handlebars

<div class="page-header">
<div>
<h2>My account</h2>
<p>Update your username, email, display name, and password.</p>
</div>
</div>
<div class="row g-4">
<div class="col-12 col-xl-6">
<div class="card card-outline card-primary admin-form-card">
<div class="card-header">
<h3 class="card-title">Account details</h3>
</div>
<form id="account-profile-form" method="post" action="/account/profile" autocomplete="off" data-async-save data-async-save-refresh-page="true">
<div class="card-body">
<div class="row g-3">
<div class="col-12 col-md-6">
<label for="account-username" class="form-label">Username</label>
<input id="account-username" type="text" name="username" class="form-control" value="{{username}}" autocomplete="username" data-bwignore="true" data-lpignore="true" data-1p-ignore="true" maxlength="64" required />
</div>
<div class="col-12 col-md-6">
<label for="account-name" class="form-label">Display name</label>
<input id="account-name" type="text" name="name" class="form-control" value="{{name}}" autocomplete="name" data-bwignore="true" data-lpignore="true" data-1p-ignore="true" required />
</div>
<div class="col-12">
<label for="account-email" class="form-label">Email address</label>
<input id="account-email" type="email" name="email" class="form-control" value="{{email}}" autocomplete="off" data-bwignore="true" data-lpignore="true" data-1p-ignore="true" />
<div class="form-text">{{#if emailPending}}Pending verification for {{pendingEmail}}. Enter a different address here to replace it, or resend the verification email below.{{else}}{{#if emailVerified}}Verified{{else}}Not verified{{/if}}. Email is optional; changing the address requires confirmation by email.{{/if}}</div>
</div>
</div>
<input type="hidden" name="current_password" data-account-profile-current-password />
</div>
</form>
{{#if emailPending}}<form method="post" action="/account/email" class="px-3 pb-3"><input type="hidden" name="email" value="{{pendingEmail}}"><button type="submit" class="btn btn-sm btn-outline-primary">Send verification email</button></form>{{/if}}
</div>
{{#if allowUserSessionRevocation}}
<div class="card card-outline card-secondary admin-form-card mt-3">
<div class="card-header">
<h3 class="card-title">Active sessions</h3>
</div>
<div class="card-body">
<div class="d-flex flex-column gap-2">
{{#if sessions.length}}
{{#each sessions}}
<div class="border rounded p-3 {{#if isCurrent}}border-primary bg-primary-subtle{{/if}}">
<div class="d-flex align-items-start justify-content-between gap-3">
<div>
<div class="fw-semibold">{{#if isCurrent}}Current session{{else}}Active session{{/if}}</div>
</div>
{{#unless isCurrent}}
<form method="post" action="/account/sessions/{{id}}/revoke">
<button type="submit" class="btn btn-sm btn-outline-danger">Sign out</button>
</form>
{{/unless}}
</div>
<div class="text-body-secondary small mt-2">{{ipAddress}} · {{userAgent}}</div>
<div class="text-body-secondary small">Created {{createdAtLabel}} · Last used {{lastUsedAtLabel}} · Expires {{expiresAtLabel}}</div>
</div>
{{/each}}
{{else}}
<p class="mb-0 text-body-secondary">No active sessions were found.</p>
{{/if}}
</div>
</div>
<div class="card-footer d-flex justify-content-end">
<form method="post" action="/account/sessions/revoke">
<button type="submit" class="btn btn-danger">Sign out other sessions</button>
</form>
</div>
</div>
{{/if}}
</div>
<div class="col-12 col-xl-6">
<div class="card card-outline card-warning admin-form-card">
<div class="card-header">
<h3 class="card-title">Password</h3>
</div>
<form id="account-password-form" method="post" action="/account/password" autocomplete="off" data-async-save data-async-save-refresh-page="true">
<div class="card-body">
<input type="hidden" name="current_password" data-account-password-current-password />
<div class="mb-3">
<label for="account-new-password" class="form-label">New password</label>
<input id="account-new-password" type="password" name="new_password" class="form-control" autocomplete="off" data-bwignore="true" data-lpignore="true" data-1p-ignore="true" minlength="{{passwordMinimumLength}}" required />
</div>
<div class="mb-0">
<label for="account-confirm-password" class="form-label">Confirm new password</label>
<input id="account-confirm-password" type="password" name="confirm_password" class="form-control" autocomplete="off" data-bwignore="true" data-lpignore="true" data-1p-ignore="true" minlength="{{passwordMinimumLength}}" required />
</div>
<div class="form-text mt-2">{{passwordRequirementsText}}</div>
</div>
</form>
</div>
<div class="card card-outline card-secondary admin-form-card mt-3">
<div class="card-header">
<h3 class="card-title">Confirmation</h3>
</div>
<div class="card-body">
<label for="account-current-password" class="form-label">Current password</label>
<input id="account-current-password" type="password" class="form-control" autocomplete="current-password" data-account-current-password required />
<div class="form-text">Required to save account details or change your password.</div>
</div>
<div class="card-footer d-flex justify-content-end">
<div class="btn-group" role="group" aria-label="Account change actions">
<button type="submit" class="btn btn-success" form="account-profile-form" name="save_action" value="save">Save account details</button>
<button type="submit" class="btn btn-warning" form="account-password-form" name="save_action" value="save">Change password</button>
<a class="btn btn-secondary" href="{{returnUrl}}" data-confirm-unsaved="You have unsaved changes. Leave this page?">Cancel</a>
</div>
</div>
</div>
</div>
</div>