1
0
mirror of https://github.com/pocket-id/pocket-id.git synced 2026-02-15 10:30:09 +00:00

feat: add the ability to make email optional (#994)

This commit is contained in:
Elias Schneider
2025-10-03 11:24:53 +02:00
committed by GitHub
parent 043cce615d
commit 507f9490fa
44 changed files with 175 additions and 69 deletions

View File

@@ -4,12 +4,14 @@
import { Button } from '$lib/components/ui/button';
import { m } from '$lib/paraglide/messages';
import UserService from '$lib/services/user-service';
import appConfigStore from '$lib/stores/application-configuration-store';
import type { UserCreate } from '$lib/types/user.type';
import { axiosErrorToast } from '$lib/utils/error-util';
import { preventDefault } from '$lib/utils/event-util';
import { createForm } from '$lib/utils/form-util';
import { emptyToUndefined, usernameSchema } from '$lib/utils/zod-util';
import { toast } from 'svelte-sonner';
import { get } from 'svelte/store';
import { z } from 'zod/v4';
let {
@@ -36,7 +38,9 @@
lastName: emptyToUndefined(z.string().max(50).optional()),
displayName: z.string().min(1).max(100),
username: usernameSchema,
email: z.email(),
email: get(appConfigStore).requireUserEmail
? z.email()
: emptyToUndefined(z.email().optional()),
isAdmin: z.boolean()
});
type FormSchema = typeof formSchema;

View File

@@ -1,7 +1,7 @@
<script lang="ts">
import { openConfirmDialog } from '$lib/components/confirm-dialog';
import SwitchWithLabel from '$lib/components/form/switch-with-label.svelte';
import FormInput from '$lib/components/form/form-input.svelte';
import SwitchWithLabel from '$lib/components/form/switch-with-label.svelte';
import { Button } from '$lib/components/ui/button';
import Label from '$lib/components/ui/label/label.svelte';
import * as Select from '$lib/components/ui/select';
@@ -32,6 +32,7 @@
let isSendingTestEmail = $state(false);
const formSchema = z.object({
requireUserEmail: z.boolean(),
smtpHost: z.string().min(1),
smtpPort: z.number().min(1),
smtpUser: z.string(),
@@ -97,7 +98,14 @@
<form onsubmit={preventDefault(onSubmit)}>
<fieldset disabled={$appConfigStore.uiConfigDisabled}>
<h4 class="text-lg font-semibold">{m.smtp_configuration()}</h4>
<h4 class="mb-4 text-lg font-semibold">{m.general()}</h4>
<SwitchWithLabel
id="require-user-email"
label={m.require_user_email()}
description={m.require_user_email_description()}
bind:checked={$inputs.requireUserEmail.value}
/>
<h4 class="mt-10 text-lg font-semibold">{m.smtp_configuration()}</h4>
<div class="mt-4 grid grid-cols-1 items-end gap-5 md:grid-cols-2">
<FormInput label={m.smtp_host()} bind:input={$inputs.smtpHost} />
<FormInput label={m.smtp_port()} type="number" bind:input={$inputs.smtpPort} />

View File

@@ -100,7 +100,7 @@
<Dialog.Title>{m.oidc_data_preview()}</Dialog.Title>
<Dialog.Description>
{#if user}
{m.preview_for_user({ name: user.displayName, email: user.email })}
{m.preview_for_user({ name: user.displayName })}
{:else}
{m.preview_the_oidc_data_that_would_be_sent_for_this_user()}
{/if}

View File

@@ -8,6 +8,7 @@
import { preventDefault } from '$lib/utils/event-util';
import { createForm } from '$lib/utils/form-util';
import { emptyToUndefined, usernameSchema } from '$lib/utils/zod-util';
import { get } from 'svelte/store';
import { z } from 'zod/v4';
let {
@@ -37,7 +38,9 @@
lastName: emptyToUndefined(z.string().max(50).optional()),
displayName: z.string().min(1).max(100),
username: usernameSchema,
email: z.email(),
email: get(appConfigStore).requireUserEmail
? z.email()
: emptyToUndefined(z.email().optional()),
isAdmin: z.boolean(),
disabled: z.boolean()
});