28 lines
923 B
TypeScript
28 lines
923 B
TypeScript
import { INSTANCE_SETTINGS_ID, REGISTRATION_MODES, type RegistrationMode } from '../../drizzle/schema';
|
|
import { db } from '../lib/db';
|
|
|
|
/**
|
|
* DISABLE_SIGNUP in the environment wins over whatever admins pick in the UI,
|
|
* so a deployment that was locked down this way stays locked down.
|
|
*/
|
|
export const isRegistrationLocked = (): boolean => {
|
|
const value = process.env.DISABLE_SIGNUP?.toLowerCase();
|
|
|
|
return value === 'true' || value === '1';
|
|
};
|
|
|
|
export const getRegistrationMode = async (): Promise<RegistrationMode> => {
|
|
if (isRegistrationLocked()) return 'closed';
|
|
|
|
const row = await db.query.instanceSettings.findFirst({
|
|
where: {
|
|
id: INSTANCE_SETTINGS_ID,
|
|
},
|
|
});
|
|
|
|
const mode = row?.registration;
|
|
|
|
// instances that never touched the setting keep taking sign ups like before
|
|
return mode !== undefined && REGISTRATION_MODES.includes(mode) ? mode : 'open';
|
|
};
|