payload-auth-plugin
Version:
Authentication plugin for Payload CMS
44 lines (43 loc) • 1.62 kB
JavaScript
// src/core/routeHandlers/oauth.ts
import {
InvalidOAuthAlgorithm,
InvalidOAuthResource,
InvalidProvider
} from "../errors/consoleErrors.js";
import { OIDCAuthorization } from "../protocols/oauth/oidc_authorization.js";
import { OAuth2Authorization } from "../protocols/oauth/oauth2_authorization.js";
import { OIDCCallback } from "../protocols/oauth/oidc_callback.js";
import { OAuth2Callback } from "../protocols/oauth/oauth2_callback.js";
function OAuthHandlers(pluginType, collections, allowOAuthAutoSignUp, secret, useAdmin, request, provider, successRedirectPath, errorRedirectPath) {
if (!provider) {
throw new InvalidProvider;
}
const resource = request.routeParams?.resource;
switch (resource) {
case "authorization":
switch (provider.algorithm) {
case "oidc":
return OIDCAuthorization(pluginType, request, provider);
case "oauth2":
return OAuth2Authorization(pluginType, request, provider);
default:
throw new InvalidOAuthAlgorithm;
}
case "callback":
switch (provider.algorithm) {
case "oidc": {
return OIDCCallback(pluginType, request, provider, collections, allowOAuthAutoSignUp, useAdmin, secret, successRedirectPath, errorRedirectPath);
}
case "oauth2": {
return OAuth2Callback(pluginType, request, provider, collections, allowOAuthAutoSignUp, useAdmin, secret, successRedirectPath, errorRedirectPath);
}
default:
throw new InvalidOAuthAlgorithm;
}
default:
throw new InvalidOAuthResource;
}
}
export {
OAuthHandlers
};