Next Auth [v5.0.0-beta.4] Middleware and Scope not working
#9448 opened on Dec 22, 2023
Description
Environment
System: OS: Windows 11 10.0.22621 CPU: (8) x64 Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz Memory: 2.78 GB / 11.92 GB Binaries: Node: 18.18.2 - C:\Program Files\nodejs\node.EXE Yarn: 1.22.19 - ~\AppData\Roaming\npm\yarn.CMD npm: 10.2.5 - C:\Program Files\nodejs\npm.CMD pnpm: 8.10.3 - C:\Program Files\nodejs\pnpm.CMD Browsers: Edge: Chromium (120.0.2210.77) Internet Explorer: 11.0.22621.1 npmPackages: @auth/core: ^0.19.0 => 0.19.0 @auth/prisma-adapter: ^1.0.12 => 1.0.12 next: 14.0.4 => 14.0.4 next-auth: 5.0.0-beta.4 => 5.0.0-beta.4 react: ^18.2.0 => 18.2.0
Reproduction URL
https://github.com/siinghd/question-tracker
Describe the issue
I am using the NextAuth beta to implement a login feature using the Discord provider and Prisma adapter. I am encountering two primary issues:
Issue 1: Scope Not Working as Expected
The specified scope in auth.config.ts doesn't seem to be applied. Instead, the default scope is used. Here's the relevant code snippet:
const scopes = ['identify', 'guilds'];
export default {
providers: [
DiscordProvider({
clientId: process.env.DISCORD_CLIENT_ID || '',
clientSecret: process.env.DISCORD_CLIENT_SECRET || '',
authorization: { params: { scope: scopes.join(' ') } },
}),
],
};
Issue 2: Middleware Not Redirecting Properly
The middleware intended to protect the root path / and redirect unauthenticated users to /login is not functioning as expected. The .env file includes AUTH_SECRET and AUTH_URL.
How to reproduce
- Set up the NextAuth configuration with the Discord provider and Prisma adapter.
- Define scopes as
['identify', 'guilds']. - Implement middleware to protect the root path and redirect to
/login. - Observe that the specified scopes are not applied and the middleware does not redirect as intended.
Expected behavior
- The Discord authentication should use the specified scopes (
identify,guilds). - Unauthenticated users trying to access the root path should be redirected to the
/loginpage.
Actual Behavior:
- The default scope is used instead of the specified custom scopes.
- The middleware does not redirect unauthenticated users to
/login.