From 9fc1cd0d2494daabb0bd8967626854dff3bc763c Mon Sep 17 00:00:00 2001 From: Dan Ribbens Date: Wed, 19 Feb 2025 11:43:40 -0500 Subject: [PATCH] fix(ui): disabledLocalStrategy.enableFields missing email/username fields (#11232) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When using `disabledLocalStrategy.enableFields`, it was impossible to create a user from the admin panel because the username or email field was missing. ![Screenshot 2025-02-17 133851](https://github.com/user-attachments/assets/f84ac74e-a3ce-4428-81b5-7135fc1cb917) --------- Co-authored-by: Germán Jabloñski <43938777+GermanJablo@users.noreply.github.com> --- packages/ui/src/views/Edit/Auth/index.tsx | 33 ++++++++++++----------- test/auth/config.ts | 4 +-- test/auth/int.spec.ts | 12 ++++----- test/auth/payload-types.ts | 32 +++++++++++----------- test/auth/shared.ts | 2 +- 5 files changed, 43 insertions(+), 40 deletions(-) diff --git a/packages/ui/src/views/Edit/Auth/index.tsx b/packages/ui/src/views/Edit/Auth/index.tsx index 89b9fed06..aeb925a1a 100644 --- a/packages/ui/src/views/Edit/Auth/index.tsx +++ b/packages/ui/src/views/Edit/Auth/index.tsx @@ -43,7 +43,6 @@ export const Auth: React.FC = (props) => { const modified = useFormModified() const { i18n, t } = useTranslation() const { docPermissions, isEditing, isInitializing } = useDocumentInfo() - const { config: { routes: { api }, @@ -51,15 +50,11 @@ export const Auth: React.FC = (props) => { }, } = useConfig() - const hasPermissionToUnlock: boolean = useMemo(() => { - const collection = permissions?.collections?.[collectionSlug] + const enableFields = + !disableLocalStrategy || + (typeof disableLocalStrategy === 'object' && disableLocalStrategy.enableFields === true) - if (collection) { - return Boolean('unlock' in collection ? collection.unlock : undefined) - } - - return false - }, [permissions, collectionSlug]) + const disabled = readOnly || isInitializing const apiKeyPermissions = docPermissions?.fields === true ? true : docPermissions?.fields?.enableAPIKey @@ -74,6 +69,16 @@ export const Auth: React.FC = (props) => { const canReadApiKey = apiKeyPermissions === true || apiKeyPermissions?.read + const hasPermissionToUnlock: boolean = useMemo(() => { + const collection = permissions?.collections?.[collectionSlug] + + if (collection) { + return Boolean('unlock' in collection ? collection.unlock : undefined) + } + + return false + }, [permissions, collectionSlug]) + const handleChangePassword = useCallback( (showPasswordFields: boolean) => { if (showPasswordFields) { @@ -129,15 +134,13 @@ export const Auth: React.FC = (props) => { } }, [modified]) - if (disableLocalStrategy && !useAPIKey) { + if (disableLocalStrategy && !enableFields && !useAPIKey) { return null } - const disabled = readOnly || isInitializing - return (
- {!disableLocalStrategy && ( + {enableFields && ( = (props) => { readOnly={readOnly} t={t} /> - {(changingPassword || requirePassword) && ( + {(changingPassword || requirePassword) && (!disableLocalStrategy || !enableFields) && (
= (props) => { {t('general:cancel')} )} - {!changingPassword && !requirePassword && ( + {!changingPassword && !requirePassword && !disableLocalStrategy && (