@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
30 lines (29 loc) • 1.67 kB
JavaScript
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 var UserIntegrityCheckFlag;
(function (UserIntegrityCheckFlag) {
UserIntegrityCheckFlag[UserIntegrityCheckFlag["None"] = 0] = "None";
/** Check if the number of remaining admin users is greater than 0 */
UserIntegrityCheckFlag[UserIntegrityCheckFlag["RemainingAdmins"] = 1] = "RemainingAdmins";
/** Check if the number of users is within the limits */
UserIntegrityCheckFlag[UserIntegrityCheckFlag["UserLimits"] = 2] = "UserLimits";
UserIntegrityCheckFlag[UserIntegrityCheckFlag["All"] = 3] = "All";
})(UserIntegrityCheckFlag || (UserIntegrityCheckFlag = {}));
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);
}
}