fix: credentials auth not working (#1284)
This commit is contained in:
@@ -15,11 +15,12 @@ import { EmptyNextAuthProvider } from "./providers/empty/empty-provider";
|
|||||||
import { filterProviders } from "./providers/filter-providers";
|
import { filterProviders } from "./providers/filter-providers";
|
||||||
import { OidcProvider } from "./providers/oidc/oidc-provider";
|
import { OidcProvider } from "./providers/oidc/oidc-provider";
|
||||||
import { createRedirectUri } from "./redirect";
|
import { createRedirectUri } from "./redirect";
|
||||||
import { generateSessionToken, sessionTokenCookieName } from "./session";
|
import { expireDateAfter, generateSessionToken, sessionTokenCookieName } from "./session";
|
||||||
|
|
||||||
// See why it's unknown in the [...nextauth]/route.ts file
|
// See why it's unknown in the [...nextauth]/route.ts file
|
||||||
export const createConfiguration = (provider: SupportedAuthProvider | "unknown", headers: ReadonlyHeaders | null) =>
|
export const createConfiguration = (provider: SupportedAuthProvider | "unknown", headers: ReadonlyHeaders | null) => {
|
||||||
NextAuth({
|
const adapter = createAdapter(db, provider);
|
||||||
|
return NextAuth({
|
||||||
logger: {
|
logger: {
|
||||||
error: (code, ...message) => {
|
error: (code, ...message) => {
|
||||||
// Remove the big error message for failed login attempts
|
// Remove the big error message for failed login attempts
|
||||||
@@ -33,7 +34,7 @@ export const createConfiguration = (provider: SupportedAuthProvider | "unknown",
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
trustHost: true,
|
trustHost: true,
|
||||||
adapter: createAdapter(db, provider),
|
adapter,
|
||||||
providers: filterProviders([
|
providers: filterProviders([
|
||||||
Credentials(createCredentialsConfiguration(db)),
|
Credentials(createCredentialsConfiguration(db)),
|
||||||
Credentials(createLdapConfiguration(db)),
|
Credentials(createLdapConfiguration(db)),
|
||||||
@@ -42,6 +43,38 @@ export const createConfiguration = (provider: SupportedAuthProvider | "unknown",
|
|||||||
]),
|
]),
|
||||||
callbacks: {
|
callbacks: {
|
||||||
session: createSessionCallback(db),
|
session: createSessionCallback(db),
|
||||||
|
// eslint-disable-next-line no-restricted-syntax
|
||||||
|
signIn: async ({ user }) => {
|
||||||
|
/**
|
||||||
|
* For credentials provider only jwt is supported by default
|
||||||
|
* so we have to create the session and set the cookie manually.
|
||||||
|
*/
|
||||||
|
if (provider !== "credentials" && provider !== "ldap") {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!adapter.createSession || !user.id) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const expires = expireDateAfter(env.AUTH_SESSION_EXPIRY_TIME);
|
||||||
|
const sessionToken = generateSessionToken();
|
||||||
|
await adapter.createSession({
|
||||||
|
sessionToken,
|
||||||
|
expires,
|
||||||
|
userId: user.id,
|
||||||
|
});
|
||||||
|
|
||||||
|
cookies().set(sessionTokenCookieName, sessionToken, {
|
||||||
|
path: "/",
|
||||||
|
expires: expires,
|
||||||
|
httpOnly: true,
|
||||||
|
sameSite: "lax",
|
||||||
|
secure: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
events: {
|
events: {
|
||||||
signIn: createSignInEventHandler(db),
|
signIn: createSignInEventHandler(db),
|
||||||
@@ -68,3 +101,4 @@ export const createConfiguration = (provider: SupportedAuthProvider | "unknown",
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user