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 |