- Configures passport-oauth2
- Mounts authorize & callback route
- Adds sign in button on login page
npm install payload-plugin-oauth2
# or
yarn add payload-plugin-oauth2
// payload.config.ts
import { oAuthPlugin } from 'payload-plugin-oauth2'
export default buildConfig({
serverURL: process.env.SERVER_URL,
collections: [Users],
plugins: [
oAuthPlugin({
clientID: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET,
authorizationURL: process.env.OAUTH_SERVER + '/oauth/authorize',
tokenURL: process.env.OAUTH_SERVER + '/oauth/token',
callbackURL: process.env.SERVER_URL + CALLBACK_PATH,
scope: 'basic',
async userinfo(accessToken) {
const { data: user } = await axios.get(OAUTH_SERVER + '/oauth/me', {
params: { access_token: accessToken },
})
return {
sub: user.ID,
// Custom fields to fill in if user is created
name: user.display_name || user.user_nicename || 'Naamloos',
email: user.user_email,
role: user.capabilities?.administrator ? 'admin' : 'user',
}
},
}),
],
})
Please see CHANGELOG for more information what has changed recently.
Contributions and feedback are very welcome.
To get it running:
- Clone the project.
npm install
npm run build
The MIT License (MIT). Please see License File for more information.