add login with oskeychain

This commit is contained in:
Christoph Brandau
2026-06-29 19:13:41 +02:00
parent 8d56c3f39f
commit 4aa9a537f0
11 changed files with 1234 additions and 40 deletions
+23 -4
View File
@@ -17,7 +17,7 @@
action: "push" | "pull";
error: string;
isBusy: boolean;
onSubmit: (username: string, password: string, save: boolean) => void;
onSubmit: (username: string, password: string, save: boolean, expiresAt: string | null) => void;
onCancel: () => void;
}
@@ -36,6 +36,7 @@
let password = $state("");
let showPassword = $state(false);
let saveSession = $state(false);
let expiresAt = $state("");
let canSubmit = $derived(
!isBusy &&
@@ -51,7 +52,12 @@
function handleSubmit(e: SubmitEvent) {
e.preventDefault();
if (!canSubmit) return;
onSubmit(mode === "token" ? "oauth2" : username, password, saveSession);
onSubmit(
mode === "token" ? "oauth2" : username,
password,
saveSession,
saveSession && expiresAt ? expiresAt : null,
);
}
</script>
@@ -83,7 +89,7 @@
<div class="cred-security-note">
<ShieldCheck size={14} aria-hidden="true" />
<span>Wird nur an Git fuer diese Remote-Operation weitergegeben.</span>
<span>Beim Speichern landet der Token verschluesselt im Schluesselbund des Betriebssystems nie im Klartext.</span>
</div>
</div>
@@ -176,10 +182,23 @@
</div>
{/if}
{#if saveSession}
<div class="cred-expiry">
<label class="cred-field-label" for="cred-expiry">Ablaufdatum (optional)</label>
<input
id="cred-expiry"
type="date"
bind:value={expiresAt}
disabled={isBusy}
/>
<span class="cred-expiry-hint">Nach diesem Datum wird automatisch erneut nach dem Login gefragt.</span>
</div>
{/if}
<div class="cred-footer">
<label class="cred-save">
<input type="checkbox" bind:checked={saveSession} disabled={isBusy} />
<span>Fuer diese Sitzung merken</span>
<span>Im Schluesselbund speichern</span>
</label>
<div class="cred-btns">