Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
gdd-sigma-poc
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Guillaume WANG
gdd-sigma-poc
Commits
dd307d09
Commit
dd307d09
authored
7 years ago
by
Anatole ROMON
Browse files
Options
Downloads
Patches
Plain Diff
ajout de createSubgroup
parent
805b41f0
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/graphql/schema.js
+13
-35
13 additions, 35 deletions
src/graphql/schema.js
src/graphql/typeDefs.js
+3
-3
3 additions, 3 deletions
src/graphql/typeDefs.js
with
16 additions
and
38 deletions
src/graphql/schema.js
+
13
−
35
View file @
dd307d09
...
...
@@ -39,8 +39,8 @@ const getUsersWithAdminRights = (user, groupUID) => {
* @arg {Object} user - Objet contenant un attribut *uid* de type *string*. User représente l'utilisateur qui a effectué la requête.
* @return {Promise} Retour de requête knex. Liste de tous les groupes que l'utilisateur a le droit de voire.
*/
const
hasAdminRights
=
(
user
,
group
uid
)
=>
{
return
getUsersWithAdminRights
(
user
,
group
uid
).
then
(
adminList
=>
{
const
hasAdminRights
=
(
user
,
group
UID
)
=>
{
return
getUsersWithAdminRights
(
user
,
group
UID
).
then
(
adminList
=>
{
return
(
typeof
adminList
!=
"
undefined
"
&&
adminList
.
indexOf
(
user
.
uid
)
!=
-
1
);
});
};
...
...
@@ -91,13 +91,13 @@ const getGroupIfVisible = (user, uid) => {
* @arg {String} uid - L'uid du groupe dont on veut les administrateurs.
* @return {Promise} Retour de requête knex. Promise qui renvera une liste de tous les utilisateurs ayant droit d'admin sur le groupe
*/
const
getAvailable
G
roupUID
=
(
initialUID
)
=>
{
const
getAvailable
g
roupUID
=
(
initialUID
)
=>
{
let
rasUID
=
initialUID
.
replace
(
'
'
,
'
_
'
).
replace
(
/
\W
/g
,
''
).
toLowerCase
();
return
knex
.
from
(
'
groups
'
).
where
(
'
uid
'
,
rasUID
).
then
(
res
=>
{
if
(
res
.
length
==
0
){
return
(
rasUID
);
}
else
{
return
(
getAvailable
G
roupUID
(
rasUID
+
'
n
'
));
return
(
getAvailable
g
roupUID
(
rasUID
+
'
n
'
));
}
});
};
...
...
@@ -112,13 +112,13 @@ const getAvailableGroupUID = (initialUID) => {
* @arg {Object} args - Les arguments envoyés à la mutation. Cf le schéma GraphQL
* @return {Promise} Retour de requête knex. Le groupe qui vient d'être créé. En cas d'echec, renvoie une erreur.
*/
const
createSubroup
=
(
user
,
args
)
=>
{
const
createSub
g
roup
=
(
user
,
args
)
=>
{
if
(
typeof
args
.
parentuid
!=
'
string
'
)
throw
"
Illegal argument : parentuid must be a non null string
"
;
if
(
typeof
args
.
name
!=
'
string
'
)
throw
"
Illegal argument : name must be a non null string
"
;
return
(
getAvailable
G
roupUID
(
args
.
uid
).
then
(
rasUID
=>
{
return
(
getAvailable
g
roupUID
(
args
.
uid
).
then
(
rasUID
=>
{
// TODO : appeller une fonction de ldap_data pour y créer un groupe.
return
knex
(
'
groups
'
).
insert
({
uid
:
rasUID
,
...
...
@@ -145,31 +145,10 @@ const createSubroup = (user, args) => {
* @return {Promise} Retour de requête knex. Le groupe qui vient d'être créé. En cas d'echec, renvoie une erreur.
*/
const
createGroupIfLegal
=
(
user
,
args
)
=>
{
if
(
typeof
args
.
parentuid
!=
'
string
'
)
throw
"
Illegal argument : parentuid must be a string
"
;
return
getUsersWithAdminRights
(
user
,
args
.
parentuid
).
then
(
admin_list
=>
{
if
(
typeof
admin_list
==
undefined
)
//Cela arrive si arg.parentuid n'est pas un id de groupe valable (ou éventuellement si Chevalier fait de la merde)
throw
"
invalid argument : no group with id
"
+
args
.
parentuid
;
admin_list
=
admin_list
.
concat
([
'
anatole.romon
'
]);
// pour les besoins des tests, anatole romon a tout les droits
if
(
admin_list
.
indexOf
(
user
.
uid
)
==
-
1
)
return
hasAdminRights
(
user
,
args
.
parentuid
).
then
(
answer
=>
{
if
(
!
answer
)
throw
"
illegal request : you must have admin rights over a group to create a subgroup of that group
"
;
if
(
typeof
args
.
uid
!=
"
string
"
)
args
.
uid
=
args
.
name
;
return
(
getAvailableGroupUID
(
args
.
uid
).
then
(
rasUID
=>
{
// TODO : appeller une fonction de ldap_data pour y créer un groupe.
return
knex
(
'
groups
'
).
insert
({
uid
:
rasUID
,
parentuid
:
args
.
parentuid
,
createdAt
:
knex
.
fn
.
now
(),
updatedAt
:
this
.
createdAt
,
name
:
args
.
name
,
website
:
args
.
website
,
description
:
args
.
description
,
school
:
args
.
school
}).
then
(
res
=>
{
return
getGroupIfVisible
(
user
,
rasUID
);
});
}));
return
createSubgroup
(
user
,
args
);
});
};
...
...
@@ -211,9 +190,9 @@ const resolvers = {
Mutation
:
{
asAdmin
:
(
obj
,
args
,
context
)
=>
{
return
hasAdminRights
(
context
.
user
,
args
.
group
id
).
then
(
res
=>
{
return
hasAdminRights
(
context
.
user
,
args
.
group
UID
).
then
(
res
=>
{
if
(
res
)
return
{};
return
{
groupUID
:
args
.
groupUID
};
else
throw
"
You do not have admin rights over this group
"
;
});
...
...
@@ -230,9 +209,8 @@ const resolvers = {
},
createSubgroup
:
(
obj
,
args
,
context
)
=>
{
console
.
log
(
"
oh shit!
"
);
return
null
;
args
.
parentuid
=
obj
.
groupUID
;
return
createSubgroup
(
context
.
user
,
args
);
}
}
...
...
This diff is collapsed.
Click to expand it.
src/graphql/typeDefs.js
+
3
−
3
View file @
dd307d09
...
...
@@ -8,9 +8,9 @@ const RootTypes = `
}
type Mutation {
asAdmin(group
id
: String): AdminMutation
asMember(group
id
: String): MemberMutation
asViewer(group
id
: String): ViewerMutation
asAdmin(group
UID
: String): AdminMutation
asMember(group
UID
: String): MemberMutation
asViewer(group
UID
: String): ViewerMutation
createGroup(
uid: ID = null
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment