UNPKG

payload-auth-plugin

Version:
227 lines (226 loc) 4.81 kB
// src/core/errors/consoleErrors.ts var PluginError = class extends Error { constructor(message, cause) { super(message); this.name = "PAYLOAD_AUTH_PLUGIN_ERROR"; this.message = message; this.cause = cause; this.stack = ""; } }; var MissingCollectionSlug = class extends PluginError { constructor() { super("Missing collection slug"); } }; // src/collection/index.ts var withUsersCollection = (incomingCollection) => { if (!incomingCollection.slug) { throw new MissingCollectionSlug(); } if (incomingCollection.auth) { } const collectionConfig = { ...incomingCollection, fields: [] }; const baseFields = [ { name: "hashedPassword", type: "text", unique: true, hidden: true }, { name: "hashSalt", type: "text", unique: true, hidden: true }, { name: "hashIterations", type: "number", hidden: true }, { name: "verificationCode", label: "Verification Code", type: "text", hidden: true, unique: true }, { name: "verificationHash", label: "Verification Hash", type: "text", hidden: true }, { name: "verificationTokenExpire", label: "Verification Token Expire", type: "number", hidden: true }, { name: "verificationKind", label: "Verification Kind", type: "text", hidden: true }, { name: "claims", label: "Claims", type: "json", hidden: true } ]; if (!incomingCollection.fields?.find((field) => field.type === "email")) { baseFields.push({ name: "email", type: "email", unique: true, required: true }); } collectionConfig.fields = [ ...incomingCollection.fields ?? [], ...baseFields ]; collectionConfig.access = { admin: ({ req: { user } }) => Boolean(user), create: ({ req: { user } }) => Boolean(user), delete: ({ req: { user } }) => Boolean(user), read: ({ req: { user } }) => Boolean(user), update: ({ req: { user } }) => Boolean(user), ...incomingCollection.access ?? {} }; collectionConfig.admin = { defaultColumns: ["name", "email"], useAsTitle: "name", ...incomingCollection.admin }; collectionConfig.timestamps = true; return collectionConfig; }; var withAccountCollection = (incomingCollection, usersCollectionSlug) => { if (!incomingCollection.slug) { throw new MissingCollectionSlug(); } const collectionConfig = { ...incomingCollection, fields: [] }; const baseFields = [ { name: "name", type: "text" }, { name: "picture", type: "text" }, { name: "user", type: "relationship", relationTo: usersCollectionSlug, hasMany: false, required: true, label: "User" }, { name: "issuerName", type: "text", required: true, label: "Issuer Name" }, { name: "scope", type: "text" }, { name: "sub", type: "text", required: true }, { name: "access_token", type: "text" }, { name: "refresh_token", type: "text" }, { name: "expires_in", type: "number" }, { name: "passkey", type: "group", fields: [ { name: "credentialId", type: "text", required: true }, { name: "publicKey", type: "json", required: true }, { name: "counter", type: "number", required: true }, { name: "transports", type: "json", required: true }, { name: "deviceType", type: "text", required: true }, { name: "backedUp", type: "checkbox", required: true } ], admin: { condition: (_data, peerData) => { if (peerData.issuerName === "Passkey") { return true; } return false; } } } ]; collectionConfig.fields = [ ...baseFields, ...incomingCollection.fields ?? [] ]; collectionConfig.access = { admin: ({ req: { user } }) => Boolean(user), read: ({ req: { user } }) => Boolean(user), create: () => false, update: () => false, delete: () => true, ...incomingCollection.access ?? {} }; collectionConfig.admin = { defaultColumns: ["issuerName", "scope", "user"], useAsTitle: "id", ...incomingCollection.admin }; collectionConfig.timestamps = true; return collectionConfig; }; export { withAccountCollection, withUsersCollection }; //# sourceMappingURL=index.js.map