From d711cbab49e9b9344f2ad2a84605f5cd25bf4c97 Mon Sep 17 00:00:00 2001 From: Athou Date: Sat, 10 Jan 2026 18:11:35 +0100 Subject: [PATCH] requiring an email address for users is now configurable (#1914) --- commafeed-client/src/app/types.ts | 1 + .../src/components/settings/ProfileSettings.tsx | 8 +++++++- commafeed-client/src/pages/auth/RegistrationPage.tsx | 2 +- .../main/java/com/commafeed/CommaFeedConfiguration.java | 6 ++++++ .../java/com/commafeed/frontend/model/ServerInfo.java | 3 +++ .../java/com/commafeed/frontend/resource/ServerREST.java | 1 + 6 files changed, 19 insertions(+), 2 deletions(-) diff --git a/commafeed-client/src/app/types.ts b/commafeed-client/src/app/types.ts index 89230ccf..52b803c2 100644 --- a/commafeed-client/src/app/types.ts +++ b/commafeed-client/src/app/types.ts @@ -220,6 +220,7 @@ export interface ServerInfo { version: string gitCommit: string allowRegistrations: boolean + emailAddressRequired: boolean smtpEnabled: boolean demoAccountEnabled: boolean websocketEnabled: boolean diff --git a/commafeed-client/src/components/settings/ProfileSettings.tsx b/commafeed-client/src/components/settings/ProfileSettings.tsx index d8f88881..57494b3b 100644 --- a/commafeed-client/src/components/settings/ProfileSettings.tsx +++ b/commafeed-client/src/components/settings/ProfileSettings.tsx @@ -20,6 +20,7 @@ interface FormData extends ProfileModificationRequest { export function ProfileSettings() { const profile = useAppSelector(state => state.user.profile) + const serverInfos = useAppSelector(state => state.server.serverInfos) const dispatch = useAppDispatch() const { _ } = useLingui() @@ -134,7 +135,12 @@ export function ProfileSettings() { required {...form.getInputProps("currentPassword")} /> - E-mail} {...form.getInputProps("email")} required /> + E-mail} + {...form.getInputProps("email")} + required={serverInfos?.emailAddressRequired} + /> New password} description={Changing password will generate a new API key} diff --git a/commafeed-client/src/pages/auth/RegistrationPage.tsx b/commafeed-client/src/pages/auth/RegistrationPage.tsx index 7390e721..12664df4 100644 --- a/commafeed-client/src/pages/auth/RegistrationPage.tsx +++ b/commafeed-client/src/pages/auth/RegistrationPage.tsx @@ -72,7 +72,7 @@ export function RegistrationPage() { placeholder={_(msg`E-mail address`)} {...form.getInputProps("email")} size="md" - required + required={serverInfos.emailAddressRequired} /> Password} diff --git a/commafeed-server/src/main/java/com/commafeed/CommaFeedConfiguration.java b/commafeed-server/src/main/java/com/commafeed/CommaFeedConfiguration.java index 269f0bd4..520b1efd 100644 --- a/commafeed-server/src/main/java/com/commafeed/CommaFeedConfiguration.java +++ b/commafeed-server/src/main/java/com/commafeed/CommaFeedConfiguration.java @@ -331,6 +331,12 @@ public interface CommaFeedConfiguration { @WithDefault("4") int minimumPasswordLength(); + /** + * Whether an email address is required when creating a user account. + */ + @WithDefault("false") + boolean emailAddressRequired(); + /** * Whether to create a demo account the first time the app starts. */ diff --git a/commafeed-server/src/main/java/com/commafeed/frontend/model/ServerInfo.java b/commafeed-server/src/main/java/com/commafeed/frontend/model/ServerInfo.java index 2a136d96..c472afd9 100644 --- a/commafeed-server/src/main/java/com/commafeed/frontend/model/ServerInfo.java +++ b/commafeed-server/src/main/java/com/commafeed/frontend/model/ServerInfo.java @@ -25,6 +25,9 @@ public class ServerInfo implements Serializable { @Schema(required = true) private boolean allowRegistrations; + @Schema(required = true) + private boolean emailAddressRequired; + @Schema(required = true) private boolean smtpEnabled; diff --git a/commafeed-server/src/main/java/com/commafeed/frontend/resource/ServerREST.java b/commafeed-server/src/main/java/com/commafeed/frontend/resource/ServerREST.java index 5f01855f..c695c556 100644 --- a/commafeed-server/src/main/java/com/commafeed/frontend/resource/ServerREST.java +++ b/commafeed-server/src/main/java/com/commafeed/frontend/resource/ServerREST.java @@ -53,6 +53,7 @@ public class ServerREST { infos.setVersion(version.getVersion()); infos.setGitCommit(version.getGitCommit()); infos.setAllowRegistrations(config.users().allowRegistrations()); + infos.setEmailAddressRequired(config.users().emailAddressRequired()); infos.setSmtpEnabled(config.passwordRecoveryEnabled()); infos.setDemoAccountEnabled(config.users().createDemoAccount()); infos.setWebsocketEnabled(config.websocket().enabled());