Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
67 lines
1.5 KiB
Plaintext
67 lines
1.5 KiB
Plaintext
'use server';
|
|
|
|
import { getPayload } from 'payload';
|
|
import { setPayloadAuthCookie } from '../utilities/setPayloadAuthCookie.js';
|
|
export async function login({
|
|
collection,
|
|
config,
|
|
email,
|
|
password,
|
|
username
|
|
}) {
|
|
const payload = await getPayload({
|
|
config,
|
|
cron: true
|
|
});
|
|
const authConfig = payload.collections[collection]?.config.auth;
|
|
if (!authConfig) {
|
|
throw new Error(`No auth config found for collection: ${collection}`);
|
|
}
|
|
const loginWithUsername = authConfig?.loginWithUsername ?? false;
|
|
if (loginWithUsername) {
|
|
if (loginWithUsername.allowEmailLogin) {
|
|
if (!email && !username) {
|
|
throw new Error('Email or username is required.');
|
|
}
|
|
} else {
|
|
if (!username) {
|
|
throw new Error('Username is required.');
|
|
}
|
|
}
|
|
} else {
|
|
if (!email) {
|
|
throw new Error('Email is required.');
|
|
}
|
|
}
|
|
let loginData;
|
|
if (loginWithUsername) {
|
|
loginData = username ? {
|
|
password,
|
|
username
|
|
} : {
|
|
email,
|
|
password
|
|
};
|
|
} else {
|
|
loginData = {
|
|
email,
|
|
password
|
|
};
|
|
}
|
|
const result = await payload.login({
|
|
collection,
|
|
data: loginData
|
|
});
|
|
if (result.token) {
|
|
await setPayloadAuthCookie({
|
|
authConfig,
|
|
cookiePrefix: payload.config.cookiePrefix,
|
|
token: result.token
|
|
});
|
|
}
|
|
if ('removeTokenFromResponses' in config && config.removeTokenFromResponses) {
|
|
delete result.token;
|
|
}
|
|
return result;
|
|
}
|
|
//# sourceMappingURL=login.js.map |