- 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.