105 lines
3.8 KiB
JavaScript
105 lines
3.8 KiB
JavaScript
// Generated, do not edit. sha256:ec282b725055d62dd35348c8698b9fb220cb23c5aa15fc53463e42d07d187d42
|
|||
|
|
import { getPref } from '../data/preferences.js';
|
||
|
|
import { ENUMS } from '../../shared/config.js';
|
||
|
|
import { hasFeature } from '../license.mjs';
|
||
|
|
|
||
|
|
export const AI_DISABLED = 'ai_disabled';
|
||
|
|
|
||
|
|
export const AI_WRITE_DENIED = 'ai_write_denied';
|
||
|
|
|
||
|
|
export const AI_CONTROL_DENIED = 'ai_control_denied';
|
||
|
|
|
||
|
|
export const AI_UNLICENSED = 'ai_unlicensed';
|
||
|
|
|
||
|
|
export const AI_UNLICENSED_TEXT =
|
||
|
|
'De AI-koppeling hoort bij de betaalde versie van AssetApp. De gratis versie laat de administratie '
|
||
|
|
+ 'niet lezen of wijzigen via een AI-koppeling. Er is niets gelezen en niets gewijzigd; deze poging '
|
||
|
|
+ 'staat wel in het activiteitenlogboek.';
|
||
|
|
|
||
|
|
export const AI_INACTIVE = 'ai_inactive';
|
||
|
|
|
||
|
|
export const AI_REFUSALS = Object.freeze([AI_UNLICENSED, AI_INACTIVE, AI_DISABLED, AI_WRITE_DENIED, AI_CONTROL_DENIED]);
|
||
|
|
|
||
|
|
export const AI_INACTIVE_TEXT =
|
||
|
|
'De AI-koppeling van AssetApp staat uit. Er wordt niets gelezen, niets gewijzigd en niets getoond, '
|
||
|
|
+ 'ook geen verbindingstest. De eigenaar van de app zet hem weer aan met de schuif "Actief" onder '
|
||
|
|
+ 'Systeem, tabblad AI-activiteit. Deze poging staat wel in het activiteitenlogboek.';
|
||
|
|
|
||
|
|
export const AI_DISABLED_TEXT =
|
||
|
|
'De AI-koppeling van AssetApp mag de administratie niet lezen. De koppeling zelf staat wel aan; '
|
||
|
|
+ 'lezen is een aparte schuif die de eigenaar van de app zelf aanzet onder Systeem, tabblad '
|
||
|
|
+ 'AI-activiteit. Er is niets gelezen en niets gewijzigd; deze poging staat wel in het '
|
||
|
|
+ 'activiteitenlogboek.';
|
||
|
|
|
||
|
|
export function isAiEnabled() {
|
||
|
|
try { return getPref('ai', 'allow_read') !== 0; }
|
||
|
|
catch { return false; }
|
||
|
|
}
|
||
|
|
|
||
|
|
export function isAiActive() {
|
||
|
|
try { return getPref('ai', 'enabled') !== 0; }
|
||
|
|
catch { return false; }
|
||
|
|
}
|
||
|
|
|
||
|
|
export function assertAiEnabled() {
|
||
|
|
if (isAiEnabled()) return;
|
||
|
|
const e = new Error(AI_DISABLED_TEXT);
|
||
|
|
e.code = AI_DISABLED;
|
||
|
|
throw e;
|
||
|
|
}
|
||
|
|
|
||
|
|
export const AI_WRITE_DENIED_TEXT =
|
||
|
|
'De AI-koppeling van AssetApp mag niets wijzigen. Lezen kan wel; schrijven is een aparte instelling '
|
||
|
|
+ 'die de eigenaar van de app zelf aanzet onder Systeem, tabblad AI-activiteit. Er is niets '
|
||
|
|
+ 'gewijzigd; deze poging staat wel in het activiteitenlogboek.';
|
||
|
|
|
||
|
|
export function isAiWriteAllowed() {
|
||
|
|
try { return getPref('ai', 'allow_write') === 1; }
|
||
|
|
catch { return false; }
|
||
|
|
}
|
||
|
|
|
||
|
|
export const AI_CONTROL_DENIED_TEXT =
|
||
|
|
'De AI-koppeling van AssetApp mag de app niet besturen. Lezen kan wel; navigeren is een aparte '
|
||
|
|
+ 'instelling die de eigenaar van de app zelf aanzet onder Systeem, tabblad AI-activiteit. Er is '
|
||
|
|
+ 'niets gewijzigd; deze poging staat wel in het activiteitenlogboek.';
|
||
|
|
|
||
|
|
export function isAiControlAllowed() {
|
||
|
|
try { return getPref('ai', 'allow_control') === 1; }
|
||
|
|
catch { return false; }
|
||
|
|
}
|
||
|
|
|
||
|
|
export function isAiRawAllowed() {
|
||
|
|
try { return getPref('ai', 'allow_raw') === 1; }
|
||
|
|
catch { return false; }
|
||
|
|
}
|
||
|
|
|
||
|
|
function weigering(scope) {
|
||
|
|
if (!hasFeature('ai')) return { code: AI_UNLICENSED, text: AI_UNLICENSED_TEXT };
|
||
|
|
if (!isAiActive()) return { code: AI_INACTIVE, text: AI_INACTIVE_TEXT };
|
||
|
|
if (scope === 'none') return null;
|
||
|
|
if (scope === 'read') {
|
||
|
|
return isAiEnabled() ? null : { code: AI_DISABLED, text: AI_DISABLED_TEXT };
|
||
|
|
}
|
||
|
|
if (scope === 'write') {
|
||
|
|
return isAiWriteAllowed() ? null : { code: AI_WRITE_DENIED, text: AI_WRITE_DENIED_TEXT };
|
||
|
|
}
|
||
|
|
if (scope === 'control') {
|
||
|
|
return isAiControlAllowed() ? null : { code: AI_CONTROL_DENIED, text: AI_CONTROL_DENIED_TEXT };
|
||
|
|
}
|
||
|
|
return {
|
||
|
|
code: AI_DISABLED,
|
||
|
|
text: `Onbekende scope '${scope}'; toegestaan is ${ENUMS.AI_SCOPE.join(', ')}.`,
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
export function assertScope(scope) {
|
||
|
|
const w = weigering(scope);
|
||
|
|
if (!w) return;
|
||
|
|
const e = new Error(w.text);
|
||
|
|
e.code = w.code;
|
||
|
|
throw e;
|
||
|
|
}
|
||
|
|
|
||
|
|
export function mayScope(scope) {
|
||
|
|
return weigering(scope) === null;
|
||
|
|
}
|