50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
// Boolean toggles to determine which auth types are allowed
|
|
const allowOauth = true;
|
|
const allowEmail = true;
|
|
const allowPassword = true;
|
|
|
|
// Boolean toggle to determine whether auth interface should route through server or client
|
|
// (Currently set to false because screen sometimes flickers with server redirects)
|
|
const allowServerRedirect = false;
|
|
|
|
// Check that at least one of allowPassword and allowEmail is true
|
|
if (!allowPassword && !allowEmail)
|
|
throw new Error('At least one of allowPassword and allowEmail must be true');
|
|
|
|
export const getAuthTypes = () => {
|
|
return { allowOauth, allowEmail, allowPassword };
|
|
};
|
|
|
|
export const getViewTypes = () => {
|
|
// Define the valid view types
|
|
let viewTypes: string[] = [];
|
|
if (allowEmail) {
|
|
viewTypes = [...viewTypes, 'email_signin'];
|
|
}
|
|
if (allowPassword) {
|
|
viewTypes = [
|
|
...viewTypes,
|
|
'password_signin',
|
|
'forgot_password',
|
|
'update_password',
|
|
'signup'
|
|
];
|
|
}
|
|
|
|
return viewTypes;
|
|
};
|
|
|
|
export const getDefaultSignInView = (preferredSignInView: string | null) => {
|
|
// Define the default sign in view
|
|
let defaultView = allowPassword ? 'password_signin' : 'email_signin';
|
|
if (preferredSignInView && getViewTypes().includes(preferredSignInView)) {
|
|
defaultView = preferredSignInView;
|
|
}
|
|
|
|
return defaultView;
|
|
};
|
|
|
|
export const getRedirectMethod = () => {
|
|
return allowServerRedirect ? 'server' : 'client';
|
|
};
|