Limiter la création de "Site" dans l'interface Angular

Jean-Philippe Boubou07/05/2021


Mise en contexte

Le projet share-site-creators permet de restreindre le droit de création de "Site" aux utilisateurs membres du groupe GROUP_SITE_CREATORS. Ce projet fournit un module pour Alfresco Content Service et un module pour l’interface Alfresco Share.

Le module n’est pas relié à la nouvelle interface Angular. Ce dernier modifie les permissions ACL, un utilisateur non membre du groupe GROUP_SITE_CREATOR n’aura donc pas la permission de créer un "Site"/"Espace de travail"/ "Bibliothèque" même si l’action est présente dans l’interface.

C’est pourquoi il est nécessaire d’ajouter une règle permettant de rendre l’action disponible et ce, uniquement aux utilisateurs faisant partie de ce groupe.

Créer la règle

Créer le fichier createLibrary.ts dans /src/app/rules et ajouter le code suivant qui permet de tester l’appartenance de l’utilisateur connecté au groupe GROUP_SITE_CREATORS.

import { RuleContext } from '@alfresco/adf-extensions';

export function canCreateLibrary(context: RuleContext): boolean {
  var res = false;
  var found = false;
  if (context.profile.groups != undefined) {
    for (var i = 0; i < context.profile.groups.length; i++) {
      if (context.profile.groups[i].id == 'GROUP_SITE_CREATORS' && context.profile.groups[i].displayName == 'SITE_CREATORS') {
        found = true;
        res = found;
      }
    }
  }
  return res;
}

Déclarer la règle

Il faut ensuite ajouter la règle au fichier core.extension.module.ts présent dans src/app/extensions.

Une fois la règle importée, on l’associe à la clef 'ap.navigation.library.cancCreate'. Cette dernière sera utilisée pour l’affectation de la règle à une action dans le fichier JSON.

import { canCreateLibrary } from '../rules/createLibrary';
...
extensions.setEvaluators({
...
	'app.navigation.library.canCreate': canCreateLibrary,
...
});

Affecter la règle

La dernière étape consiste à ajouter la règle sur l’action CREATE_LIBRARY dans le fichier app.extensions.json présent dans le dossier src/app/assets.

      {
        "id": "app.create.library",
        "order": 600,
        "title": "APP.NEW_MENU.MENU_ITEMS.CREATE_LIBRARY",
        "description": "APP.NEW_MENU.TOOLTIPS.CREATE_LIBRARY",
        "icon": "create_new_folder",
        "actions": {
          "click": "CREATE_LIBRARY"
        },
        "rules": {
          "enabled": "app.navigation.library.canCreate"
        }
      }

Le champ enabled permet de désactiver l’action. Il est cependant possible de rendre l’action invisible avec l’utilisation de visible à la place du enabled. Il faut l’intégré comme ceci:

Enabled Visible
"rules": {
          "enabled": "app.navigation.library.canCreate"
        }
"rules": {
          "visible": "app.navigation.library.canCreate"
        }

Dans l’interface Angular, un site correspond à un espace de travail.

Utilisateur appartenant au GROUP_SITE_CREATORS Utilisateur n’appartenant pas au GROUP_SITE_CREATORS
CanCreate fr
CannotCreate fr


A propos de JECI

Maintenance Logicielle, Conteneur (Docker, Kubernetes), Alfresco Community, Logiciels Libres
SARL - Capital : 100 000 €, immatriculée au RCS de Dijon

Nous contacter

+33 9 72 38 21 92 info@jeci.fr

2013-2020 Jeci | Mixed with v4.3.2 | Baked with JBake v2.6.4 | Photo by krakenimages on Unsplash | Mentions légales