Image de la bannière : Limiter la création de "Site" dans l'interface Angular

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

post thumb
Alfresco
by Jean-Philippe Boubou/ on 11 Jun 2021

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

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 de faire des modications dans Alfresco Content App. Il faut 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
json "rules": { "enabled": "app.navigation.library.canCreate" } json "rules": { "visible": "app.navigation.library.canCreate" }

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

Utilisateur appartenant au Utilisateur n’appartenant pas au
GROUP_SITE_CREATORS GROUP_SITE_CREATORS