feat(users): add account limits and API keys
All checks were successful
Build and Publish Docker Image / deploy (push) Successful in 1m43s
All checks were successful
Build and Publish Docker Image / deploy (push) Successful in 1m43s
This commit is contained in:
@@ -44,16 +44,20 @@ const el = {
|
||||
|
||||
const uploadsEnabled = el.form?.dataset.uploadsEnabled === "true";
|
||||
const defaultRetention = el.form?.dataset.defaultRetention || "10s";
|
||||
const maxFileBytes = numberFromDataset(el.form?.dataset.maxFileBytes);
|
||||
const maxBoxBytes = numberFromDataset(el.form?.dataset.maxBoxBytes);
|
||||
const baseMaxFileBytes = numberFromDataset(el.form?.dataset.maxFileBytes);
|
||||
const baseMaxBoxBytes = numberFromDataset(el.form?.dataset.maxBoxBytes);
|
||||
const oneTimeRetentionKey = "one-time";
|
||||
|
||||
let maxFileBytes = baseMaxFileBytes;
|
||||
let maxBoxBytes = baseMaxBoxBytes;
|
||||
let files = [];
|
||||
let shareUrl = "";
|
||||
let uploadLocked = false;
|
||||
let statusTimer = null;
|
||||
let pendingDuplicateFiles = [];
|
||||
let apiKeyTimer = null;
|
||||
let apiKeyValidationRun = 0;
|
||||
let authenticatedUser = null;
|
||||
let completedImpactKeys = new Set();
|
||||
let overallImpactDone = false;
|
||||
|
||||
@@ -105,6 +109,33 @@ function hasQuotaError() {
|
||||
return isOverBoxQuota() || oversizedFiles().length > 0;
|
||||
}
|
||||
|
||||
function effectiveLimit(baseLimit, userLimit) {
|
||||
return numberFromDataset(userLimit);
|
||||
}
|
||||
|
||||
function resetAccountLimits() {
|
||||
authenticatedUser = null;
|
||||
maxFileBytes = baseMaxFileBytes;
|
||||
maxBoxBytes = baseMaxBoxBytes;
|
||||
}
|
||||
|
||||
function applyAccountLimits(user) {
|
||||
authenticatedUser = user || null;
|
||||
const limits = authenticatedUser?.limits || {};
|
||||
maxFileBytes = effectiveLimit(baseMaxFileBytes, limits.max_file_size_bytes);
|
||||
maxBoxBytes = effectiveLimit(baseMaxBoxBytes, limits.max_box_size_bytes);
|
||||
}
|
||||
|
||||
function apiKeyPolicyMessage() {
|
||||
if (!el.apiKeyMode?.checked || !authenticatedUser) return "";
|
||||
const permissions = authenticatedUser.permissions || {};
|
||||
if (authenticatedUser.status && authenticatedUser.status !== "active") return "The API key belongs to a disabled account.";
|
||||
if (!permissions.can_use_api) return "This account is not allowed to use the API.";
|
||||
if (!permissions.can_create_box) return "This account is not allowed to create boxes.";
|
||||
if (!permissions.can_upload_file) return "This account is not allowed to upload files.";
|
||||
return "";
|
||||
}
|
||||
|
||||
function normalizedFileName(name) {
|
||||
return String(name || "").trim().toLowerCase();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user