payload-plugin-oauth icon indicating copy to clipboard operation
payload-plugin-oauth copied to clipboard

Project doest not build with payload-plugin-oauth(^0.3.1)

Open rohitttttt opened this issue 2 years ago • 4 comments

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

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.

image image

rohitttttt avatar Jul 19 '23 13:07 rohitttttt

  1. looks like @types/passport-oauth2 need to be added to dependencies instead of devDependencies

  2. 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 avatar Jul 21 '23 20:07 thgh

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

rohitttttt avatar Jul 24 '23 06:07 rohitttttt

Could you make a repository to reproduce this issue?

thgh avatar Jul 31 '23 10:07 thgh

Can confirm this is an error still.

tyteen4a03 avatar Oct 14 '23 10:10 tyteen4a03