mirror of
https://github.com/kanidm/kanidm.git
synced 2025-02-23 20:47:01 +01:00
* Add support for prefers-color-scheme using Bootstrap classes. * Move stylesheet changes to separate javascript file. * fix(html): don't specify the integrity hash in the tag for style.js * fix(log): debug-log integrity hashes for troubleshooting * fix(css): move to using bootstrap standard variables for colours and theming * fix(js): rewrite to simplify and use standard bootstrap functionality * fix(makefile): codespell thingie was complaining * run prettier on css/js. --------- Co-authored-by: James Hodgkinson <james@terminaloutcomes.com>
168 lines
7.7 KiB
HTML
168 lines
7.7 KiB
HTML
<script type="module"
|
|
src="/pkg/modules/cred_update.mjs?v=((crate::https::cache_buster::get_cache_buster_key()))"
|
|
async></script>
|
|
<script
|
|
src="/pkg/external/base64.js?v=((crate::https::cache_buster::get_cache_buster_key()))"
|
|
async></script>
|
|
|
|
<div id="credentialUpdateDynamicSection"
|
|
hx-on::before-swap="stillSwapFailureResponse(event)">
|
|
<form class="needs-validation mb-5 pb-5" novalidate>
|
|
(% match ext_cred_portal %)
|
|
(% when CUExtPortal::None %)
|
|
(% when CUExtPortal::Hidden %)
|
|
<p>This account is externally managed. Some features may not be
|
|
available.</p>
|
|
<hr class="my-4" />
|
|
(% when CUExtPortal::Some(url) %)
|
|
<p>This account is externally managed. Some features may not be
|
|
available.</p>
|
|
<a href="(( url ))">Visit the external account portal</a>
|
|
<hr class="my-4" />
|
|
(% endmatch %)
|
|
|
|
(% if warnings.len() > 0 %)
|
|
(% for warning in warnings %)
|
|
(% let is_danger = [CURegWarning::WebauthnAttestationUnsatisfiable,
|
|
CURegWarning::Unsatisfiable].contains(warning) %)
|
|
(% if is_danger %)
|
|
<div class='alert alert-danger' role="alert">
|
|
(% else %)
|
|
<div class='alert alert-warning' role="alert">
|
|
(% endif %)
|
|
|
|
(% match warning %)
|
|
(% when CURegWarning::MfaRequired %)
|
|
Multi-Factor Authentication is required for your account. Either
|
|
add TOTP or remove your password in favour of passkeys to
|
|
submit.
|
|
(% when CURegWarning::PasskeyRequired %)
|
|
Passkeys are required for your account.
|
|
(% when CURegWarning::AttestedPasskeyRequired %)
|
|
Attested Passkeys are required for your account.
|
|
(% when CURegWarning::AttestedResidentKeyRequired %)
|
|
Attested Resident Keys are required for your account.
|
|
(% when CURegWarning::WebauthnAttestationUnsatisfiable %)
|
|
A webauthn attestation policy conflict has occurred and you will
|
|
not be able to save your credentials
|
|
(% when CURegWarning::Unsatisfiable %)
|
|
An account policy conflict has occurred and you will not be able
|
|
to save your credentials
|
|
(% endmatch %)
|
|
|
|
(% if is_danger %)
|
|
<br><br>
|
|
<b>Contact support IMMEDIATELY.</b>
|
|
(% endif %)
|
|
</div>
|
|
(% endfor %)
|
|
<hr class="my-4" />
|
|
(% endif %)
|
|
|
|
<!-- Attested Passkeys -->
|
|
(% match attested_passkeys_state %)
|
|
(% when CUCredState::Modifiable %)
|
|
(% include "credentials_update_attested_passkeys.html" %)
|
|
<button type="button" class="btn btn-primary"
|
|
hx-post="/ui/reset/add_passkey" hx-vals='{"class": "Attested"}'
|
|
hx-target="#credentialUpdateDynamicSection">
|
|
Add Attested Passkey
|
|
</button>
|
|
(% when CUCredState::DeleteOnly %)
|
|
(% if attested_passkeys.len() > 0 %)
|
|
(% include "credentials_update_attested_passkeys.html" %)
|
|
(% endif %)
|
|
(% when CUCredState::AccessDeny %)
|
|
(% when CUCredState::PolicyDeny %)
|
|
(% endmatch %)
|
|
|
|
<!-- Passkeys -->
|
|
(% match passkeys_state %)
|
|
(% when CUCredState::Modifiable %)
|
|
(% include "credentials_update_passkeys.html" %)
|
|
<!-- Here we are modifiable so we can render the button to add passkeys -->
|
|
<button type="button" class="btn btn-primary"
|
|
hx-post="/ui/reset/add_passkey"
|
|
hx-vals='{"class": "Any"}'
|
|
hx-target="#credentialUpdateDynamicSection">
|
|
Add Passkey
|
|
</button>
|
|
|
|
(% when CUCredState::DeleteOnly %)
|
|
(% if passkeys.len() > 0 %)
|
|
(% include "credentials_update_passkeys.html" %)
|
|
(% endif %)
|
|
(% when CUCredState::AccessDeny %)
|
|
(% when CUCredState::PolicyDeny %)
|
|
(% endmatch %)
|
|
|
|
<!-- Password, totp credentials -->
|
|
(% let primary_state = primary_state %)
|
|
(% include "credentials_update_primary.html" %)
|
|
|
|
(% match unixcred_state %)
|
|
(% when CUCredState::Modifiable %)
|
|
<hr class="my-4" />
|
|
<h4>UNIX Password</h4>
|
|
<p>This password is used when authenticating to a UNIX-like system</p>
|
|
<button type="button" class="btn btn-primary"
|
|
hx-post="/ui/reset/set_unixcred"
|
|
hx-target="#credentialUpdateDynamicSection">
|
|
Set UNIX Password
|
|
</button>
|
|
(% match unixcred %)
|
|
(% when Some(CredentialDetail { uuid, type_: kanidm_proto::internal::CredentialDetailType::Password }) %)
|
|
<button type="button" class="btn btn-outline-danger"
|
|
hx-post="/ui/api/delete_unixcred"
|
|
hx-target="#credentialUpdateDynamicSection">
|
|
Delete UNIX Password
|
|
</button>
|
|
(% when Some(CredentialDetail { uuid, type_: kanidm_proto::internal::CredentialDetailType::GeneratedPassword }) %)
|
|
(% when Some(CredentialDetail { uuid, type_: kanidm_proto::internal::CredentialDetailType::Passkey(_) }) %)
|
|
(% when Some(CredentialDetail { uuid, type_: kanidm_proto::internal::CredentialDetailType::PasswordMfa(_totp_set, _security_key_labels, _backup_codes_remaining)}) %)
|
|
(% when None %)
|
|
(% endmatch %)
|
|
<!-- (% if matches!(primary_state, CUCredState::Modifiable) %)
|
|
|
|
(% endif %) -->
|
|
(% when CUCredState::DeleteOnly %)
|
|
(% when CUCredState::AccessDeny %)
|
|
(% when CUCredState::PolicyDeny %)
|
|
(% endmatch %)
|
|
|
|
<hr class="my-4" />
|
|
<div id="cred-update-commit-bar" class="toast bs-emphasis-color bs-secondary-bg">
|
|
<div class="toast-body">
|
|
<span class="d-flex align-items-center">
|
|
<div>
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="16"
|
|
height="16" fill="currentColor"
|
|
class="bi bi-floppy2-fill" viewBox="0 0 16 16">
|
|
<path d="M12 2h-2v3h2z" />
|
|
<path
|
|
d="M1.5 0A1.5 1.5 0 0 0 0 1.5v13A1.5 1.5 0 0 0 1.5 16h13a1.5 1.5 0 0 0 1.5-1.5V2.914a1.5 1.5 0 0 0-.44-1.06L14.147.439A1.5 1.5 0 0 0 13.086 0zM4 6a1 1 0 0 1-1-1V1h10v4a1 1 0 0 1-1 1zM3 9h10a1 1 0 0 1 1 1v5H2v-5a1 1 0 0 1 1-1" />
|
|
</svg>
|
|
<b>Careful</b> - Unsaved changes will be lost</div>
|
|
</span>
|
|
<div class="mt-2 pt-2 border-top">
|
|
<button class="btn btn-danger"
|
|
hx-post="/ui/api/cu_cancel"
|
|
hx-boost="false"
|
|
>Discard Changes</button>
|
|
<span class="d-inline-block" tabindex="0"
|
|
data-bs-toggle="tooltip"
|
|
data-bs-title="Unresolved warnings">
|
|
<button
|
|
class="btn btn-success"
|
|
type="submit"
|
|
hx-post="/ui/api/cu_commit"
|
|
hx-boost="false"
|
|
(% if !warnings.is_empty() %)disabled(% endif
|
|
%)>Save Changes</button>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|