Project doest not build with payload-plugin-oauth(^0.3.1)
Payload does not build with payload-plugin-oauth.
Using below code in payloadconfig.ts
export default buildConfig({
serverURL: process.env.SERVER_URL,//'http://localhost:3000',
admin: {
user: Users.slug,
},
plugins: [
// Replace this plugin with our Custom Plugin for Authentication..
oAuthPlugin({
clientID: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET,
authorizationURL: ${process.env.OAUTH_SERVER}/oauth2/authorize,
tokenURL: ${process.env.OAUTH_SERVER}/oauth2/token,
callbackURL: ${process.env.SERVER_URL}/oauth2/callback,
async userinfo(accessToken) {
console.log('inside user info');
const userDetailToken = decodeToken(accessToken);
if(userDetailToken && userDetailToken.unique_name && userDetailToken?.name){
return {
sub: userDetailToken?.oid || 'test',
name: userDetailToken?.name || userDetailToken?.given_name,
email: userDetailToken?.unique_name || userDetailToken?.upn,
}
}
},
}),
], collections: [TodoLists, Users], typescript: { outputFile: path.resolve(__dirname, 'payload-types.ts'), }, graphQL: { schemaOutputFile: path.resolve(__dirname, 'generated-schema.graphql'), }, })
Getting 2 errors.
1)ClientID is not able to found in oauth plugin. For work around i have downloaded the code from github and added missing types in types.ts file and this issue got fixed but again when i ran npm run build it got stuck.
2)In oauth Plugin application is not able to pick the value from env file during npm run build. To fix this issue i have passed the hardcoded value then after that my npm run build got stuck. It seems there is issue with this library when i am building my payload cms project.
-
looks like @types/passport-oauth2 need to be added to dependencies instead of devDependencies
-
it says that "undefined/oauth2/callback" is not a valid URL, this plugin doesn't know it's in build mode so expects a valid URL. You could set a fallback like this:
const fallback = 'http://fallback'
...
oAuthPlugin({
clientID: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET,
authorizationURL: `${process.env.OAUTH_SERVER || fallback}/oauth2/authorize`,
tokenURL: `${process.env.OAUTH_SERVER || fallback}/oauth2/token`,
callbackURL: `${process.env.SERVER_URL || fallback}/oauth2/callback`,
async userinfo(accessToken) {
console.log('inside user info')
const userDetailToken = decodeToken(accessToken)
if (
userDetailToken &&
userDetailToken.unique_name &&
userDetailToken?.name
) {
return {
sub: userDetailToken?.oid || 'test',
name: userDetailToken?.name || userDetailToken?.given_name,
email: userDetailToken?.unique_name || userDetailToken?.upn,
}
}
},
})
@thgh: I have added the fallback but main problem is with npm run build. I have added the @types/passport-oauth2 in dependency but still build is getting stuck.. Please find below attached screen shot for your reference. If i remove the plugin then try to run npm run build its working fine.
Could you make a repository to reproduce this issue?
Can confirm this is an error still.