Skip to content
Snippets Groups Projects
Commit e55c3c93 authored by Quentin CHEVALIER's avatar Quentin CHEVALIER
Browse files

redo

parent a7d8f3b3
No related branches found
No related tags found
No related merge requests found
[Unit]
Description=Sigma-back-dev
Wants=network-online.target
After=network-online.target
[Service]
Environment=NODE_ENV=development
WorkingDirectory=/opt/sigma-back-dev
ExecStart=/usr/bin/node build/bundle.js
Restart=always
[Install]
WantedBy=multi-user.target
\ No newline at end of file
// ce fichier en .gql sert juste a forcer VSCode a colorier correctement le langage graphQL.
// son contenu sera copie dans actions.js tout simplement
/**
* @file définit les types query et mutation, points d'entree du schéma graphQL. ce fichier est la wish list de kadabra (qui veut avoir un schema clair pour travailler sereinement sur le front)
* @author akka vodol, kadabra
*/
// hawkspar->akka ; pas clair
const RootQuery = `
# Requêtes
type Query {
# User queries de base
user(uid:ID!): User
# Query root type. # Group queries de base
type Query { group(uid:ID!): Group
# User queries de base simpleGroup(uid:ID!): SimpleGroup
user(uid:ID!): User metaGroup(uid:ID!): MetaGroup
# Group queries de base # Message queries de base
group(uid:ID!): Group message(id:ID!): Message
simpleGroup(uid:ID!): SimpleGroup announcement(id:ID!): Announcement
metaGroup(uid:ID!): MetaGroup event(id:ID!): Event
privatePost(id:ID!): PrivatePost
# Message queries de base question(id:ID!): Question
message(id:ID!): Message answer(id:ID!): Answer
announcement(id:ID!): Announcement
event(id:ID!): Event # Request queries de base
privatePost(id:ID!): PrivatePost request(id:ID!): Request
question(id:ID!): Question userJoinGroupRequest(id:ID!): UserJoinGroup
answer(id:ID!): Answer groupCoauthorEventRequest(id:ID!): GroupCoauthorEvent
# Request queries de base
request(id:ID!): Request
userJoinGroupRequest(id:ID!): UserJoinGroup # Messages créés par un AuthorUnion=Group|[Group]|User
groupCoauthorEventRequest(id:ID!): GroupCoauthorEvent messagesFromGroup(uid:ID!): [Message]
announcementsFromGroup(uid:ID!): [Announcement]
eventsFromGroup(uid:ID!): [Event]
privatepostsFromUser(uid:ID!): [Post]
# Messages créés par un AuthorUnion=Group|[Group]|User questionsFromUser(uid:ID!): [Question]
messagesFromGroup(uid:ID!): [Message] answersFromGroup(uid:ID!): [Answer]
announcementsFromGroup(uid:ID!): [Announcement]
eventsFromGroup(uid:ID!): [Event] # Messages adressés à un Group
privatepostsFromUser(uid:ID!): [Post] messagesToGroup(uid:ID!): [Message]
questionsFromUser(uid:ID!): [Question] announcementsToGroup(uid:ID!): [Announcement]
answersFromGroup(uid:ID!): [Answer] eventsToGroup(uid:ID!): [Event]
privatepostsToGroup(uid:ID!): [Post]
# Messages adressés à un Group questionsToGroup(uid:ID!): [Question]
messagesToGroup(uid:ID!): [Message] answersToGroup(uid:ID!): [Answer]
announcementsToGroup(uid:ID!): [Announcement]
eventsToGroup(uid:ID!): [Event]
privatepostsToGroup(uid:ID!): [Post]
questionsToGroup(uid:ID!): [Question] # Toutes les Requests auxquelles un groupe doit répondre
answersToGroup(uid:ID!): [Answer] requestsToGroup(uid:ID!): [Request]
userJoinGroupRequestsToGroup(id:ID!): UserJoinGroup
groupCoauthorEventRequestsToGroup(id:ID!): GroupCoauthorEvent
# Toutes les Requests auxquelles un groupe doit répondre
requestsToGroup(uid:ID!): [Request]
userJoinGroupRequestsToGroup(id:ID!): UserJoinGroup # Tous les xxx visibles par un utilisateur
groupCoauthorEventRequestsToGroup(id:ID!): GroupCoauthorEvent allGroups(uid:ID!): [Group]
allSimpleGroups(uid:ID!): [SimpleGroup]
allMetaGroups(uid:ID!): [MetaGroup]
# Tous les xxx visibles par un utilisateur allMessages(uid:ID!): [Message]
allGroups(uid:ID!): [Group] allAnnouncements(uid:ID!): [Announcement]
allSimpleGroups(uid:ID!): [SimpleGroup] allEvents(uid:ID!): [Event]
allMetaGroups(uid:ID!): [MetaGroup]
allMessages(uid:ID!): [Message]
allAnnouncements(uid:ID!): [Announcement] # TOL
allEvents(uid:ID!): [Event] searchTOL(
givenName: String,
lastName: String,
nickname: String,
# TOL nationality: String,
searchTOL( school: String,
givenName: String, promotion: String,
lastName: String, groups: String,
nickname: String, studies: String,
nationality: String, sport: String,
school: String, phone: String,
promotion: String, mail: String,
groups: String, address: String,
studies: String, ip: String
sport: String, ): [User!]
phone: String,
mail: String, }
address: String, `;
ip: String
): [User!] const RootMutation = `
# Mutations
}
type Mutation {
# Mutations # Par rapport à un groupe donné, un user peut avoir différents niveaux de droits :
type Mutation { # none : aucun droit (typiquement, une connection ou l'utilisateur ne s'est pas authentifie)
# Par rapport à un groupe donné, un user peut avoir différents niveaux de droits : # viewer : le user sait que le groupe existe et a accès aux infos de base, mais rien de plus
# none : aucun droit (typiquement, une connection ou l'utilisateur ne s'est pas authentifie) # member : le user est membre du groupe et a acces aux Message dont le groupe est auteur ou destinataire
# viewer : le user sait que le groupe existe et a accès aux infos de base, mais rien de plus # speaker : le user peut parler au nom du groupe. Il a le droit de publier des annonces et d'organiser des évènements
# member : le user est membre du groupe et a acces aux Message dont le groupe est auteur ou destinataire # admin : le user a tous les droits sur le groupe
# speaker : le user peut parler au nom du groupe. Il a le droit de publier des annonces et d'organiser des évènements
# admin : le user a tous les droits sur le groupe # Viewer mutations
requestJoin(userid: ID!, groupuid: ID!): Boolean
# Viewer mutations
requestJoin(userid: ID!, groupuid: ID!): Boolean
# Member mutations
leave(userid: ID!, groupuid: ID!): Boolean
# Member mutations postInGroup(userid: ID!, groupuid: ID!, postContent: String)
leave(userid: ID!, groupuid: ID!): Boolean
postInGroup(userid: ID!, groupuid: ID!, postContent: String)
# Speaker mutations
# Speaker mutations writeAnnouncement(
from: uid!,
writeAnnouncement( to: [uid!],
from: uid!, title: String,
to: [uid!], date: String,
title: String, content: String
date: String, )
content: String writeEvent(
) from: ID!,
writeEvent( to: [uid!],
from: ID!, title: String,
to: [uid!], date: String,
title: String, content:String
date: String, )
content:String
)
# Admin mutations
# Admin mutations createSubgroup(
from: ID!,
createSubgroup( newUid: ID,
from: ID!, name: String!,
newUid: ID, website: String,
name: String!, description: String,
website: String, school: String
description: String, ): Group
school: String
): Group addUser(userid: ID!, groupuid: ID!): User
removeUser(userid: String!, groupuid: ID!): User
addUser(userid: ID!, groupuid: ID!): User addAdmin(userid: String!, groupuid: ID!): User
removeUser(userid: String!, groupuid: ID!): User removeAdmin(userid: String!, groupuid: ID!): User
addAdmin(userid: String!, groupuid: ID!): User
removeAdmin(userid: String!, groupuid: ID!): User editGroup(
from: String!,
editGroup( name: String,
from: String!, website: String,
name: String, description: String,
website: String, school: String
description: String, ): Group
school: String
): Group }
`;
} \ No newline at end of file
// hawkspar->all ; doc ?
# Utilisateurs # Utilisateurs
type User { type User {
# Prénom de l'utilisateur # Prénom de l'utilisateur
......
...@@ -386,7 +386,8 @@ export class User extends Open { ...@@ -386,7 +386,8 @@ export class User extends Open {
// Surcharge des champs à modifier selon data // Surcharge des champs à modifier selon data
Object.keys(data).forEach(key => { Object.keys(data).forEach(key => {
// Some fields the user cannot change (groups and groupsIsAdmin must be changed through addGroupMember and addGroupAdmin in Admin) // Some fields the user cannot change (groups and groupsIsAdmin must be changed through addGroupMember and addGroupAdmin in Admin)
if (!['readPerm','writePerm','forlifes','ips','groups','groupsIsAdmin'].includes(key)) { profil[key]=data[key]; } var unchangeables = ['readPerm','writePerm','forlifes','ips','groups','groupsIsAdmin'];
if (!unchangeables.includes(key)) { profil[key]=data[key]; }
}); });
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// TBM : rajouter god passwd. Moche mais bonne façon de faire // TBM : rajouter god passwd. Moche mais bonne façon de faire
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment