Make auth error catching more resilient

This commit is contained in:
Sam Becker 2024-01-14 19:49:15 -06:00
parent a28f730a11
commit 23129adb9c
2 changed files with 7 additions and 6 deletions

View File

@ -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);
};

View File

@ -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 {