@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
22 lines (21 loc) • 1.14 kB
JavaScript
import { UserIntegrityCheckFlag } from '@directus/types';
import { validateRemainingAdminCount } from '../permissions/modules/validate-remaining-admin/validate-remaining-admin-count.js';
import { checkUserLimits } from '../telemetry/utils/check-user-limits.js';
import { shouldCheckUserLimits } from '../telemetry/utils/should-check-user-limits.js';
import { fetchUserCount } from './fetch-user-count/fetch-user-count.js';
export async function validateUserCountIntegrity(options) {
const validateUserLimits = (options.flags & UserIntegrityCheckFlag.UserLimits) !== 0;
const validateRemainingAdminUsers = (options.flags & UserIntegrityCheckFlag.RemainingAdmins) !== 0;
const limitCheck = validateUserLimits && shouldCheckUserLimits();
if (!validateRemainingAdminUsers && !limitCheck) {
return;
}
const adminOnly = validateRemainingAdminUsers && !limitCheck;
const userCounts = await fetchUserCount({ ...options, adminOnly });
if (limitCheck) {
await checkUserLimits(userCounts);
}
if (validateRemainingAdminUsers) {
validateRemainingAdminCount(userCounts.admin);
}
}