diff --git a/package-lock.json b/package-lock.json index daa192c7ddfe018fbb4e283fffc0fad281d1f1fc..e0370a5ff34ec1ffdffa5ba478d6bf914b2d5f42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3819,7 +3819,7 @@ }, "browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { @@ -4346,7 +4346,7 @@ "colors": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha1-OeAF1Uav4B4B+cTKj6UPaGoBIF0=" + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" }, "command-line-args": { "version": "5.0.2", @@ -4652,7 +4652,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { @@ -4665,7 +4665,7 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { @@ -4909,7 +4909,7 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { @@ -4993,7 +4993,7 @@ "dotenv": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", - "integrity": "sha1-lBwEEFNdlCyL7PKNPzV9vZ1HYGQ=" + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==" }, "dtrace-provider": { "version": "0.8.6", @@ -6194,8 +6194,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -6238,8 +6237,7 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", @@ -6250,8 +6248,7 @@ "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -6368,8 +6365,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -6381,7 +6377,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6411,7 +6406,6 @@ "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -6430,7 +6424,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -6524,7 +6517,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -6610,8 +6602,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -6647,7 +6638,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6667,7 +6657,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6711,14 +6700,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -8245,7 +8232,7 @@ "ldapauth-fork": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-4.1.0.tgz", - "integrity": "sha1-WdpiYC417bOuPYoU7LE+ipOJk9I=", + "integrity": "sha512-OFz3aJDqYGpgo96gVBKhaIFIO/mc9OFpn9IdINHo22eUmF0leU836HgksIQQ3Ga0Mz48xwEhSZ/rJlWOzaUXJQ==", "requires": { "@types/ldapjs": "^1.0.0", "@types/node": "^10.12.12", @@ -9458,7 +9445,7 @@ "passport-ldapauth": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-2.1.1.tgz", - "integrity": "sha1-S0R4zSg8gt6JYGmj5CfvjPopX+E=", + "integrity": "sha512-DiK9nwZthdCeZE+TRx2AzRk9mg8OeAz4+tZdXC8EPVAVmeW7YSWyK4XCJ8/B7ySWpEZtrN1OcrKtWjpLXFy0/A==", "requires": { "@types/node": "^10.12.12", "@types/passport": "^0.4.7", @@ -9662,7 +9649,7 @@ }, "pinkie-promise": { "version": "2.0.1", - "resolved": "http://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { @@ -10781,7 +10768,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { diff --git a/src/graphql/typeDefs/actions.graphql b/src/graphql/typeDefs/actions.graphql index 35fc3211528eff3eb9258556a9a7a4bb7c726bf0..298aad00b1ec6d0fb1582941e5c1b54ea008cc4f 100644 --- a/src/graphql/typeDefs/actions.graphql +++ b/src/graphql/typeDefs/actions.graphql @@ -65,7 +65,6 @@ type Mutation { Un des rôles du *graphe organique des groupes* est de définir le niveau de droit des users pour chaque groupe. D'abord, petit détail de terminologie : les cinq niveaux de droits sont inclus les uns dans les autres (un speaker est aussi un viewer, par ex.) (sauf pour les permissions héritées) - - Les conditions pour qu'un user soit membre, speaker ou admin sont claires, puisque cette information est stockée directement en BDD. - Un user est viewer du groupe G : - s'il est admin, speaker ou member d'un des descendants de G dans le LDAP. - s'il est membre d'un groupe immédiatement parent de G (one-edge-down visibility), ou @@ -74,7 +73,7 @@ type Mutation { - Un user est membre d'un groupe G s'il est membre, speaker ou admin d'un des descendants de G dans le LDAP. - Un user est speaker d'un groupe G s'il est speaker ou admin selon le LDAP. - Un user est admin d'un groupe G s'il est admin d'un des ascendants de G dans le LDAP. - - Dans tous les autres cas, le user a le niveau de droits "none". + - Dans tous les autres cas, le user a le niveau de droits "none" ou "authenticated", selon le cas de figure. L'autre rôle du *graphe organique des groupes* est de permettre l'administration "en cascade" des groupes enfants. Si un groupe est le parent d'un autre, alors les admins du groupe parent peuvent se déclarer admins du groupe enfant. Exemples : diff --git a/src/graphql/typeDefs/objects.graphql b/src/graphql/typeDefs/objects.graphql index 513143f09cb13d203e0cfcc98de3f2c8b61212c6..c1cd25fe3ed7ef67296db74c4d3b31e7c53f076d 100644 --- a/src/graphql/typeDefs/objects.graphql +++ b/src/graphql/typeDefs/objects.graphql @@ -40,10 +40,13 @@ type User { address: String # Adresse de l'utilisateur (numero de casert par exemple) # Ses interactions avec des groupes - memberOf: [Group] # Groupes dont l'utilisateur est membre - speakerOf: [Group] - adminOf: [Group] + memberOf: [Group] # Groupes dont l'utilisateur est membre, speaker ou admin selon le LDAP + memberOfAll: [Group] # Groupes pour lesquels l'utilisateur est membre, speaker ou admin d'un des descendants + speakerOf: [Group] # Groupes dont l'utilisateur est speaker ou admin selon le LDAP + adminOf: [Group] # Groupes dont l'utilisateur est admin selon le LDAP + adminOfAll: [Group] # Groupes pour lesquels l'utilisateur est admin d'un des ascendants likes: [Group] # Groupes dont l'utilisateur est sympathisant (purement indicatif, pas d'influence sur les niveaux de droit) + dislikes: [Group] # Groupes que l'utilisateur veut cacher # Les Message dont il est l'auteur questionsFromUser: [Question] # Les seuls Messages publics où `authors` est de type User @@ -108,7 +111,7 @@ type SimpleGroup implements Group { mail: String website: String - # Admins, speakers (respos com), membres, sympathisants du groupe + # Admins, speakers (respos com), membres, sympathisants du groupe (propres au groupe, ie selon le LDAP) members: [User] speakers: [User] admins: [User]