- Configures passport-oauth2
- Mounts authorize & callback route
- Adds sign in button on login page
Payload v2
npm install payload-plugin-oauth@^2 # or yarn add payload-plugin-oauth@^2 Payload v1
npm install payload-plugin-oauth@^1 # or yarn add payload-plugin-oauth@^1 // payload.config.ts import path from 'path' import { webpackBundler } from '@payloadcms/bundler-webpack' import { mongooseAdapter } from '@payloadcms/db-mongodb' import { slateEditor } from '@payloadcms/richtext-slate' import axios from 'axios' import { oAuthPlugin } from 'payload-plugin-oauth' import { buildConfig } from 'payload/config' import Users from './collections/Users' export default buildConfig({ admin: { user: Users.slug, bundler: webpackBundler(), }, editor: slateEditor({}), collections: [Users], typescript: { outputFile: path.resolve(__dirname, 'payload-types.ts'), }, graphQL: { schemaOutputFile: path.resolve(__dirname, 'generated-schema.graphql'), }, plugins: [ payloadCloud(), oAuthPlugin({ buttonLabel: 'Sign in with oAuth', databaseUri: process.env.DATABASE_URI, clientID: process.env.OAUTH_CLIENT_ID, clientSecret: process.env.OAUTH_CLIENT_SECRET, authorizationURL: process.env.OAUTH_AUTH_ENDPOINT, tokenURL: process.env.OAUTH_TOKEN_ENDPOINT, authorizePath: '/oauth/authorize1', callbackURL: process.env.ORIGIN + '/oauth/callback1', async userinfo(accessToken) { const { data: user } = await axios.get( process.env.OAUTH_USERINFO_ENDPOINT, { headers: { Authorization: `Bearer ${accessToken}` } } ) return { sub: user.ID, username: user.preferred_username, } }, }), // Another oAuth provider oAuthPlugin({ buttonLabel: 'Sign in with Alternative', // These paths must be unique per provider authorizePath: '/oauth/authorize2', callbackURL: process.env.ORIGIN + '/oauth/callback2', ...rest, }), ], db: mongooseAdapter({ url: process.env.DATABASE_URI, }), })Please see CHANGELOG for more information what has changed recently.
Contributions and feedback are very welcome.
To get it running:
- Clone the project.
npm installnpm run build
- Run
npm run fix - Run
npm version minor - Push to Github and let CI publish to NPM
The MIT License (MIT). Please see License File for more information.