Actions
Project activity #35176
openProject activity #35009: Documentvertrouwelijkheid & status kunnen bewerken
Ik wil een behaviour hebben die op basis van wijziging van vertrouwelijkheid de permissies goed zet op een document
Start date:
14/10/2025
Due date:
% Done:
0%
Estimated time:
Description
Voorbeelden:
- Een Zaakvertrouwelijke zaak met een Openbaar document is niet toegestaan.
Het document wordt dan automatisch ingesteld op Zaakvertrouwelijk (of hoger, bijv. Geheim).
- Een Openbare zaak met een Vertrouwelijk document is wel toegestaan.
- Bij het updaten van de vertrouwelijkheid
- Permissie goed zetten --> Zie onderstaande script
- Controle of de zaak vertrouwelijkheid hoger is in vertrouwelijkheid en dan pas wordt inherit permissies van het document eraf gehaald
- Voorbeeld: indien een zaak Zaakvertrouwelijk is en een document ook Zaakvertrouwelijk is, dan hoeven we niks speciaals op de document permissies te doen
- Voorbeeld: indien een zaak Zaakvertrouwelijk is en een document ook Confidentieel is, dan passen we de permissies aan volgens logica hieronder
Zie bij guh is sit een rule + script. Zie gerelateerde ticket #16937 voor het origineel:
/**
* Rule is applicable for all cm:content types and need to be configured for create and update triggers. Rule need to be created on the 'Zaken' folder.
* This script disables inherit permissions for EIO files and set local permissions.
*
* for (var i in document.directPermissions) {
* logger.log(document.directPermissions[i])
* }
*
* Date: November 2022
*/
function main() {
// Script is only applicable for EIO files. Also exclude records.
if (!document.hasAspect("rgbz:enkelvoudigInformatieobject") || document.hasAspect("rma:record")) {
return;
}
// Only process confidential documents
if (isConfidential(document) == false) {
return;
}
// Only disable inherit permissions when inherit is still on
if (document.inheritsPermissions()) {
// Set site manager group
var siteManagerGroup = "GROUP_site_" + document.getSiteShortName() + "_SiteManager";
document.setPermission("Coordinator", siteManagerGroup);
document.setInheritsPermissions(false);
}
// We have to update the 'behandelaars' when document is being updated. This is not ideal solution
// (because update zaak does not trigger update document), but for now acceptable.
if (!document.inheritsPermissions()) {
var zaakFolder = apiUtils.getZaak(document);
if (zaakFolder != null) {
var behandelaars = zaakFolder.properties["tza:behandelaars"];
if (behandelaars != null) {
removeCurrentBehandelaars(document);
for (var i in behandelaars) {
var user = behandelaars[i];
document.setPermission("Collaborator", user);
}
}
}
}
}
/**
* Remove current behandelaars of document.
* @param {ScriptNode} document
*/
function removeCurrentBehandelaars(document) {
for (var i in document.directPermissions) {
var permission = document.directPermissions[i];
if (permission == undefined) {
continue;
}
var parts = permission.split(";");
// Exclude groups when remove local permissions
if (parts[1].indexOf("GROUP_") == -1) {
document.removePermission(parts[2], parts[1]);
}
}
}
/**
* Validates if document is confidential by validating value 'rgbz:vertrouwelijkheidaanduiding'.
* @param {ScriptNode} document EIO
* @returns Boolean true if document is confidential
*/
function isConfidential(document) {
var value = document.properties["rgbz:vertrouwelijkheidaanduiding"];
if (value == null) {
return false;
}
if (["confidentieel", "geheim", "zeer_geheim"].includes(value)) {
return true;
}
return false;
}
main();
Files
Actions