Removes PayloadRequestWithData in favour of just PayloadRequest with
optional types for `data` and `locale`
`addDataAndFileToRequest` and `addLocalesToRequestFromData` now takes in
a single argument instead of an object
```ts
// before
await addDataAndFileToRequest({ request: req })
addLocalesToRequestFromData({ request: req })
// current
await addDataAndFileToRequest(req)
addLocalesToRequestFromData(req)
```
---------
Co-authored-by: Paul Popus <paul@nouance.io>
68 lines
1.5 KiB
TypeScript
68 lines
1.5 KiB
TypeScript
import type {
|
|
CollectionSlug,
|
|
DataFromCollectionSlug,
|
|
Payload,
|
|
RequestContext,
|
|
} from '../../../index.js'
|
|
import type { PayloadRequest } from '../../../types/index.js'
|
|
import type { Result } from '../login.js'
|
|
|
|
import { APIError } from '../../../errors/index.js'
|
|
import { createLocalReq } from '../../../utilities/createLocalReq.js'
|
|
import { loginOperation } from '../login.js'
|
|
|
|
export type Options<TSlug extends CollectionSlug> = {
|
|
collection: TSlug
|
|
context?: RequestContext
|
|
data: {
|
|
email: string
|
|
password: string
|
|
}
|
|
depth?: number
|
|
fallbackLocale?: string
|
|
locale?: string
|
|
overrideAccess?: boolean
|
|
req?: PayloadRequest
|
|
showHiddenFields?: boolean
|
|
}
|
|
|
|
async function localLogin<TSlug extends CollectionSlug>(
|
|
payload: Payload,
|
|
options: Options<TSlug>,
|
|
): Promise<Result & { user: DataFromCollectionSlug<TSlug> }> {
|
|
const {
|
|
collection: collectionSlug,
|
|
data,
|
|
depth,
|
|
overrideAccess = true,
|
|
showHiddenFields,
|
|
} = options
|
|
|
|
const collection = payload.collections[collectionSlug]
|
|
|
|
if (!collection) {
|
|
throw new APIError(
|
|
`The collection with slug ${String(collectionSlug)} can't be found. Login Operation.`,
|
|
)
|
|
}
|
|
|
|
const args = {
|
|
collection,
|
|
data,
|
|
depth,
|
|
overrideAccess,
|
|
req: await createLocalReq(options, payload),
|
|
showHiddenFields,
|
|
}
|
|
|
|
const result = await loginOperation<TSlug>(args)
|
|
|
|
if (collection.config.auth.removeTokenFromResponses) {
|
|
delete result.token
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
export default localLogin
|