fix(ui): disabledLocalStrategy.enableFields missing email/username fields (#11232)

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>
This commit is contained in:
Dan Ribbens
2025-02-19 11:43:40 -05:00
committed by GitHub
parent 0651ae0727
commit 9fc1cd0d24
5 changed files with 43 additions and 40 deletions

View File

@@ -9,7 +9,7 @@ import { devUser } from '../credentials.js'
import {
apiKeysSlug,
namedSaveToJWTValue,
partialDisableLocaleStrategiesSlug,
partialDisableLocalStrategiesSlug,
publicUsersSlug,
saveToJWTKey,
slug,
@@ -185,7 +185,7 @@ export default buildConfigWithDefaults({
],
},
{
slug: partialDisableLocaleStrategiesSlug,
slug: partialDisableLocalStrategiesSlug,
auth: {
disableLocalStrategy: {
// optionalPassword: true,

View File

@@ -12,7 +12,7 @@ import { initPayloadInt } from '../helpers/initPayloadInt.js'
import {
apiKeysSlug,
namedSaveToJWTValue,
partialDisableLocaleStrategiesSlug,
partialDisableLocalStrategiesSlug,
publicUsersSlug,
saveToJWTKey,
slug,
@@ -720,7 +720,7 @@ describe('Auth', () => {
it('should allow create of a user with disableLocalStrategy', async () => {
const email = 'test@example.com'
const user = await payload.create({
collection: partialDisableLocaleStrategiesSlug,
collection: partialDisableLocalStrategiesSlug,
data: {
email,
// password is not required
@@ -730,7 +730,7 @@ describe('Auth', () => {
})
it('should retain fields when auth.disableLocalStrategy.enableFields is true', () => {
const authFields = payload.collections[partialDisableLocaleStrategiesSlug].config.fields
const authFields = payload.collections[partialDisableLocalStrategiesSlug].config.fields
// eslint-disable-next-line jest/no-conditional-in-test
.filter((field) => 'name' in field && field.name)
.map((field) => (field as FieldAffectingData).name)
@@ -750,7 +750,7 @@ describe('Auth', () => {
it('should prevent login of user with disableLocalStrategy.', async () => {
await payload.create({
collection: partialDisableLocaleStrategiesSlug,
collection: partialDisableLocalStrategiesSlug,
data: {
email: devUser.email,
password: devUser.password,
@@ -759,7 +759,7 @@ describe('Auth', () => {
await expect(async () => {
await payload.login({
collection: partialDisableLocaleStrategiesSlug,
collection: partialDisableLocalStrategiesSlug,
data: {
email: devUser.email,
password: devUser.password,
@@ -769,7 +769,7 @@ describe('Auth', () => {
})
it('rest - should prevent login', async () => {
const response = await restClient.POST(`/${partialDisableLocaleStrategiesSlug}/login`, {
const response = await restClient.POST(`/${partialDisableLocalStrategiesSlug}/login`, {
body: JSON.stringify({
email,
password,

View File

@@ -63,14 +63,14 @@ export type SupportedTimezones =
export interface Config {
auth: {
users: UserAuthOperations;
'partial-disable-locale-strategies': PartialDisableLocaleStrategyAuthOperations;
'partial-disable-local-strategies': PartialDisableLocalStrategyAuthOperations;
'api-keys': ApiKeyAuthOperations;
'public-users': PublicUserAuthOperations;
};
blocks: {};
collections: {
users: User;
'partial-disable-locale-strategies': PartialDisableLocaleStrategy;
'partial-disable-local-strategies': PartialDisableLocalStrategy;
'api-keys': ApiKey;
'public-users': PublicUser;
relationsCollection: RelationsCollection;
@@ -81,7 +81,7 @@ export interface Config {
collectionsJoins: {};
collectionsSelect: {
users: UsersSelect<false> | UsersSelect<true>;
'partial-disable-locale-strategies': PartialDisableLocaleStrategiesSelect<false> | PartialDisableLocaleStrategiesSelect<true>;
'partial-disable-local-strategies': PartialDisableLocalStrategiesSelect<false> | PartialDisableLocalStrategiesSelect<true>;
'api-keys': ApiKeysSelect<false> | ApiKeysSelect<true>;
'public-users': PublicUsersSelect<false> | PublicUsersSelect<true>;
relationsCollection: RelationsCollectionSelect<false> | RelationsCollectionSelect<true>;
@@ -99,8 +99,8 @@ export interface Config {
| (User & {
collection: 'users';
})
| (PartialDisableLocaleStrategy & {
collection: 'partial-disable-locale-strategies';
| (PartialDisableLocalStrategy & {
collection: 'partial-disable-local-strategies';
})
| (ApiKey & {
collection: 'api-keys';
@@ -131,7 +131,7 @@ export interface UserAuthOperations {
password: string;
};
}
export interface PartialDisableLocaleStrategyAuthOperations {
export interface PartialDisableLocalStrategyAuthOperations {
forgotPassword: {
email: string;
password: string;
@@ -227,9 +227,9 @@ export interface User {
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "partial-disable-locale-strategies".
* via the `definition` "partial-disable-local-strategies".
*/
export interface PartialDisableLocaleStrategy {
export interface PartialDisableLocalStrategy {
id: string;
updatedAt: string;
createdAt: string;
@@ -296,8 +296,8 @@ export interface PayloadLockedDocument {
value: string | User;
} | null)
| ({
relationTo: 'partial-disable-locale-strategies';
value: string | PartialDisableLocaleStrategy;
relationTo: 'partial-disable-local-strategies';
value: string | PartialDisableLocalStrategy;
} | null)
| ({
relationTo: 'api-keys';
@@ -318,8 +318,8 @@ export interface PayloadLockedDocument {
value: string | User;
}
| {
relationTo: 'partial-disable-locale-strategies';
value: string | PartialDisableLocaleStrategy;
relationTo: 'partial-disable-local-strategies';
value: string | PartialDisableLocalStrategy;
}
| {
relationTo: 'api-keys';
@@ -344,8 +344,8 @@ export interface PayloadPreference {
value: string | User;
}
| {
relationTo: 'partial-disable-locale-strategies';
value: string | PartialDisableLocaleStrategy;
relationTo: 'partial-disable-local-strategies';
value: string | PartialDisableLocalStrategy;
}
| {
relationTo: 'api-keys';
@@ -427,9 +427,9 @@ export interface UsersSelect<T extends boolean = true> {
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "partial-disable-locale-strategies_select".
* via the `definition` "partial-disable-local-strategies_select".
*/
export interface PartialDisableLocaleStrategiesSelect<T extends boolean = true> {
export interface PartialDisableLocalStrategiesSelect<T extends boolean = true> {
updatedAt?: T;
createdAt?: T;
email?: T;

View File

@@ -4,7 +4,7 @@ export const publicUsersSlug = 'public-users'
export const apiKeysSlug = 'api-keys'
export const partialDisableLocaleStrategiesSlug = 'partial-disable-locale-strategies'
export const partialDisableLocalStrategiesSlug = 'partial-disable-local-strategies'
export const namedSaveToJWTValue = 'namedSaveToJWT value'