payload 3.0.0-alpha.66 → 3.0.0-alpha.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/auth/operations/login.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAevC,MAAM,MAAM,MAAM,GAAG;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,EAAE,sBAAsB,CAAA;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,cAAc,yDACX,SAAS,KACtB,QAAQ,MAAM,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/auth/operations/login.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAevC,MAAM,MAAM,MAAM,GAAG;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,EAAE,sBAAsB,CAAA;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,cAAc,yDACX,SAAS,KACtB,QAAQ,MAAM,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAA;CAAE,CA2NjE,CAAA"}
|
|
@@ -96,6 +96,9 @@ export const loginOperation = async (incomingArgs)=>{
|
|
|
96
96
|
email,
|
|
97
97
|
user
|
|
98
98
|
});
|
|
99
|
+
// /////////////////////////////////////
|
|
100
|
+
// beforeLogin - Collection
|
|
101
|
+
// /////////////////////////////////////
|
|
99
102
|
await collectionConfig.hooks.beforeLogin.reduce(async (priorHook, hook)=>{
|
|
100
103
|
await priorHook;
|
|
101
104
|
user = await hook({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/login.ts"],"sourcesContent":["import jwt from 'jsonwebtoken'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { GeneratedTypes } from '../../index.js'\nimport type { PayloadRequestWithData } from '../../types/index.js'\nimport type { User } from '../types.js'\n\nimport { buildAfterOperation } from '../../collections/operations/utils.js'\nimport { AuthenticationError, LockedAuth, ValidationError } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport sanitizeInternalFields from '../../utilities/sanitizeInternalFields.js'\nimport { getFieldsToSign } from '../getFieldsToSign.js'\nimport isLocked from '../isLocked.js'\nimport { authenticateLocalStrategy } from '../strategies/local/authenticate.js'\nimport { incrementLoginAttempts } from '../strategies/local/incrementLoginAttempts.js'\nimport { resetLoginAttempts } from '../strategies/local/resetLoginAttempts.js'\n\nexport type Result = {\n exp?: number\n token?: string\n user?: User\n}\n\nexport type Arguments = {\n collection: Collection\n data: {\n email: string\n password: string\n }\n depth?: number\n overrideAccess?: boolean\n req: PayloadRequestWithData\n showHiddenFields?: boolean\n}\n\nexport const loginOperation = async <TSlug extends keyof GeneratedTypes['collections']>(\n incomingArgs: Arguments,\n): Promise<Result & { user: GeneratedTypes['collections'][TSlug] }> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = await initTransaction(args.req)\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n await args.collection.config.hooks.beforeOperation.reduce(async (priorHook, hook) => {\n await priorHook\n\n args =\n (await hook({\n args,\n collection: args.collection?.config,\n context: args.req.context,\n operation: 'login',\n req: args.req,\n })) || args\n }, Promise.resolve())\n\n const {\n collection: { config: collectionConfig },\n data,\n depth,\n overrideAccess,\n req,\n req: {\n fallbackLocale,\n locale,\n payload,\n payload: { secret },\n },\n showHiddenFields,\n } = args\n\n // /////////////////////////////////////\n // Login\n // /////////////////////////////////////\n\n const { email: unsanitizedEmail, password } = data\n\n if (typeof unsanitizedEmail !== 'string' || unsanitizedEmail.trim() === '') {\n throw new ValidationError([{ field: 'email', message: req.i18n.t('validation:required') }])\n }\n if (typeof password !== 'string' || password.trim() === '') {\n throw new ValidationError([{ field: 'password', message: req.i18n.t('validation:required') }])\n }\n\n const email = unsanitizedEmail ? unsanitizedEmail.toLowerCase().trim() : null\n\n let user = await payload.db.findOne<any>({\n collection: collectionConfig.slug,\n req,\n where: { email: { equals: email.toLowerCase() } },\n })\n\n if (!user || (args.collection.config.auth.verify && user._verified === false)) {\n throw new AuthenticationError(req.t)\n }\n\n if (user && isLocked(user.lockUntil)) {\n throw new LockedAuth(req.t)\n }\n\n const authResult = await authenticateLocalStrategy({ doc: user, password })\n\n user = sanitizeInternalFields(user)\n\n const maxLoginAttemptsEnabled = args.collection.config.auth.maxLoginAttempts > 0\n\n if (!authResult) {\n if (maxLoginAttemptsEnabled) {\n await incrementLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n }\n\n if (shouldCommit) await commitTransaction(req)\n\n throw new AuthenticationError(req.t)\n }\n\n if (maxLoginAttemptsEnabled) {\n await resetLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n }\n\n const fieldsToSign = getFieldsToSign({\n collectionConfig,\n email,\n user,\n })\n\n await collectionConfig.hooks.beforeLogin.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: args.req.context,\n req: args.req,\n user,\n })) || user\n }, Promise.resolve())\n\n const token = jwt.sign(fieldsToSign, secret, {\n expiresIn: collectionConfig.auth.tokenExpiration,\n })\n\n req.user = user\n\n // /////////////////////////////////////\n // afterLogin - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterLogin.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: args.req.context,\n req: args.req,\n token,\n user,\n })) || user\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n user = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth,\n doc: user,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: req.context,\n doc: user,\n req,\n })) || user\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: req.context,\n doc: user,\n req,\n })) || user\n }, Promise.resolve())\n\n let result: Result & { user: GeneratedTypes['collections'][TSlug] } = {\n exp: (jwt.decode(token) as jwt.JwtPayload).exp,\n token,\n user,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation<GeneratedTypes['collections'][TSlug]>({\n args,\n collection: args.collection?.config,\n operation: 'login',\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) await commitTransaction(req)\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["jwt","buildAfterOperation","AuthenticationError","LockedAuth","ValidationError","afterRead","commitTransaction","initTransaction","killTransaction","sanitizeInternalFields","getFieldsToSign","isLocked","authenticateLocalStrategy","incrementLoginAttempts","resetLoginAttempts","loginOperation","incomingArgs","args","shouldCommit","req","collection","config","hooks","beforeOperation","reduce","priorHook","hook","context","operation","Promise","resolve","collectionConfig","data","depth","overrideAccess","fallbackLocale","locale","payload","secret","showHiddenFields","email","unsanitizedEmail","password","trim","field","message","i18n","t","toLowerCase","user","db","findOne","slug","where","equals","auth","verify","_verified","lockUntil","authResult","doc","maxLoginAttemptsEnabled","maxLoginAttempts","fieldsToSign","beforeLogin","token","sign","expiresIn","tokenExpiration","afterLogin","global","result","exp","decode","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/login.ts"],"sourcesContent":["import jwt from 'jsonwebtoken'\n\nimport type { Collection } from '../../collections/config/types.js'\nimport type { GeneratedTypes } from '../../index.js'\nimport type { PayloadRequestWithData } from '../../types/index.js'\nimport type { User } from '../types.js'\n\nimport { buildAfterOperation } from '../../collections/operations/utils.js'\nimport { AuthenticationError, LockedAuth, ValidationError } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport sanitizeInternalFields from '../../utilities/sanitizeInternalFields.js'\nimport { getFieldsToSign } from '../getFieldsToSign.js'\nimport isLocked from '../isLocked.js'\nimport { authenticateLocalStrategy } from '../strategies/local/authenticate.js'\nimport { incrementLoginAttempts } from '../strategies/local/incrementLoginAttempts.js'\nimport { resetLoginAttempts } from '../strategies/local/resetLoginAttempts.js'\n\nexport type Result = {\n exp?: number\n token?: string\n user?: User\n}\n\nexport type Arguments = {\n collection: Collection\n data: {\n email: string\n password: string\n }\n depth?: number\n overrideAccess?: boolean\n req: PayloadRequestWithData\n showHiddenFields?: boolean\n}\n\nexport const loginOperation = async <TSlug extends keyof GeneratedTypes['collections']>(\n incomingArgs: Arguments,\n): Promise<Result & { user: GeneratedTypes['collections'][TSlug] }> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = await initTransaction(args.req)\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n await args.collection.config.hooks.beforeOperation.reduce(async (priorHook, hook) => {\n await priorHook\n\n args =\n (await hook({\n args,\n collection: args.collection?.config,\n context: args.req.context,\n operation: 'login',\n req: args.req,\n })) || args\n }, Promise.resolve())\n\n const {\n collection: { config: collectionConfig },\n data,\n depth,\n overrideAccess,\n req,\n req: {\n fallbackLocale,\n locale,\n payload,\n payload: { secret },\n },\n showHiddenFields,\n } = args\n\n // /////////////////////////////////////\n // Login\n // /////////////////////////////////////\n\n const { email: unsanitizedEmail, password } = data\n\n if (typeof unsanitizedEmail !== 'string' || unsanitizedEmail.trim() === '') {\n throw new ValidationError([{ field: 'email', message: req.i18n.t('validation:required') }])\n }\n if (typeof password !== 'string' || password.trim() === '') {\n throw new ValidationError([{ field: 'password', message: req.i18n.t('validation:required') }])\n }\n\n const email = unsanitizedEmail ? unsanitizedEmail.toLowerCase().trim() : null\n\n let user = await payload.db.findOne<any>({\n collection: collectionConfig.slug,\n req,\n where: { email: { equals: email.toLowerCase() } },\n })\n\n if (!user || (args.collection.config.auth.verify && user._verified === false)) {\n throw new AuthenticationError(req.t)\n }\n\n if (user && isLocked(user.lockUntil)) {\n throw new LockedAuth(req.t)\n }\n\n const authResult = await authenticateLocalStrategy({ doc: user, password })\n\n user = sanitizeInternalFields(user)\n\n const maxLoginAttemptsEnabled = args.collection.config.auth.maxLoginAttempts > 0\n\n if (!authResult) {\n if (maxLoginAttemptsEnabled) {\n await incrementLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n }\n\n if (shouldCommit) await commitTransaction(req)\n\n throw new AuthenticationError(req.t)\n }\n\n if (maxLoginAttemptsEnabled) {\n await resetLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n }\n\n const fieldsToSign = getFieldsToSign({\n collectionConfig,\n email,\n user,\n })\n\n // /////////////////////////////////////\n // beforeLogin - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.beforeLogin.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: args.req.context,\n req: args.req,\n user,\n })) || user\n }, Promise.resolve())\n\n const token = jwt.sign(fieldsToSign, secret, {\n expiresIn: collectionConfig.auth.tokenExpiration,\n })\n\n req.user = user\n\n // /////////////////////////////////////\n // afterLogin - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterLogin.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: args.req.context,\n req: args.req,\n token,\n user,\n })) || user\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n user = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth,\n doc: user,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: req.context,\n doc: user,\n req,\n })) || user\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: req.context,\n doc: user,\n req,\n })) || user\n }, Promise.resolve())\n\n let result: Result & { user: GeneratedTypes['collections'][TSlug] } = {\n exp: (jwt.decode(token) as jwt.JwtPayload).exp,\n token,\n user,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation<GeneratedTypes['collections'][TSlug]>({\n args,\n collection: args.collection?.config,\n operation: 'login',\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) await commitTransaction(req)\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["jwt","buildAfterOperation","AuthenticationError","LockedAuth","ValidationError","afterRead","commitTransaction","initTransaction","killTransaction","sanitizeInternalFields","getFieldsToSign","isLocked","authenticateLocalStrategy","incrementLoginAttempts","resetLoginAttempts","loginOperation","incomingArgs","args","shouldCommit","req","collection","config","hooks","beforeOperation","reduce","priorHook","hook","context","operation","Promise","resolve","collectionConfig","data","depth","overrideAccess","fallbackLocale","locale","payload","secret","showHiddenFields","email","unsanitizedEmail","password","trim","field","message","i18n","t","toLowerCase","user","db","findOne","slug","where","equals","auth","verify","_verified","lockUntil","authResult","doc","maxLoginAttemptsEnabled","maxLoginAttempts","fieldsToSign","beforeLogin","token","sign","expiresIn","tokenExpiration","afterLogin","global","result","exp","decode","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "payload",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.67",
|
|
4
4
|
"description": "Node, React, Headless CMS and Application Framework built on Next.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"admin panel",
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
"scheduler": "0.23.0",
|
|
100
100
|
"scmp": "2.1.0",
|
|
101
101
|
"uuid": "^9.0.1",
|
|
102
|
-
"@payloadcms/translations": "3.0.0-alpha.
|
|
102
|
+
"@payloadcms/translations": "3.0.0-alpha.67"
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
105
|
"@monaco-editor/react": "4.5.1",
|