payload-auth-plugin-fix
Version:
Authentication plugin for Payload CMS
48 lines (46 loc) • 1.28 kB
JavaScript
// src/core/endpoints.ts
import { OAuthHandlers } from "./routeHandlers/oauth.js";
import { PasskeyHandlers } from "./routeHandlers/passkey.js";
class EndpointFactory {
#providers;
#payloadOAuthPath = "/admin/oauth/:resource/:provider";
#payloadPasskeyPath = "/admin/passkey/:resource";
constructor(providers) {
this.#providers = providers;
}
payloadOAuthEndpoints({
sessionCallback
}) {
return [
{
path: this.#payloadOAuthPath,
method: "get",
handler: (request) => {
const provider = this.#providers[request.routeParams?.provider];
return OAuthHandlers(request, request.routeParams?.resource, provider, (oauthAccountInfo) => {
return sessionCallback(oauthAccountInfo, provider.scope, provider.name, request.payload);
});
}
}
];
}
payloadPasskeyEndpoints({
rpID,
sessionCallback
}) {
return [
{
path: this.#payloadPasskeyPath,
method: "post",
handler: (request) => {
return PasskeyHandlers(request, request.routeParams?.resource, rpID, (accountInfo) => {
return sessionCallback(accountInfo, "Passkey", request.payload);
});
}
}
];
}
}
export {
EndpointFactory
};