Make auth error catching more resilient
This commit is contained in:
parent
a28f730a11
commit
23129adb9c
@ -3,6 +3,7 @@
|
||||
import {
|
||||
KEY_CALLBACK_URL,
|
||||
KEY_CREDENTIALS_SIGN_IN_ERROR,
|
||||
KEY_CREDENTIALS_SIGN_IN_ERROR_URL,
|
||||
signIn,
|
||||
signOut,
|
||||
} from '@/auth';
|
||||
@ -16,19 +17,17 @@ export const signInAction = async (
|
||||
try {
|
||||
await signIn('credentials', Object.fromEntries(formData));
|
||||
} catch (error) {
|
||||
console.log('signInAction error: string', `${error}`);
|
||||
console.log('signInAction error: object', error);
|
||||
if (`${error}`.includes(KEY_CREDENTIALS_SIGN_IN_ERROR)) {
|
||||
console.log('signInAction: 01');
|
||||
if (
|
||||
`${error}`.includes(KEY_CREDENTIALS_SIGN_IN_ERROR) ||
|
||||
`${error}`.includes(KEY_CREDENTIALS_SIGN_IN_ERROR_URL)
|
||||
) {
|
||||
// Rethrow credentials error to display on the sign in page.
|
||||
return KEY_CREDENTIALS_SIGN_IN_ERROR;
|
||||
} else if (!`${error}`.includes('NEXT_REDIRECT')) {
|
||||
console.log('signInAction: 02');
|
||||
// Rethrow non-redirect errors
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
console.log('signInAction: 03');
|
||||
redirect(formData.get(KEY_CALLBACK_URL) as string || PATH_ADMIN_PHOTOS);
|
||||
};
|
||||
|
||||
|
||||
@ -3,6 +3,8 @@ import NextAuth, { User } from 'next-auth';
|
||||
import Credentials from 'next-auth/providers/credentials';
|
||||
|
||||
export const KEY_CREDENTIALS_SIGN_IN_ERROR = 'CredentialsSignin';
|
||||
export const KEY_CREDENTIALS_SIGN_IN_ERROR_URL =
|
||||
'https://errors.authjs.dev#credentialssignin';
|
||||
export const KEY_CALLBACK_URL = 'callbackUrl';
|
||||
|
||||
export const {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user