Skip to content
Snippets Groups Projects
Commit 5a4eaa0e authored by Wilson JALLET's avatar Wilson JALLET :money_with_wings:
Browse files

Moar seeds in db

parent f1ee1091
No related branches found
No related tags found
No related merge requests found
/* /*
Une mutation pour rajouter dans la BDD les types SimpleGroup et MetaGroup Une mutation pour rajouter dans la BDD les types SimpleGroup et MetaGroup
(cf la documentation de l'interface GraphQL) (cf la documentation de l'API GraphQL)
Les objets qui étaient jusqu''à présent stoqués dans la table groups Les objets qui étaient jusqu''à présent stoqués dans la table groups
sont déplacés dans la table simple_groups sont déplacés dans la table simple_groups
En cas de rollback, le déplacement se fait dans l'autre sens En cas de rollback, le déplacement se fait dans l'autre sens
......
...@@ -17,6 +17,7 @@ exports.seed = function(knex, Promise) { ...@@ -17,6 +17,7 @@ exports.seed = function(knex, Promise) {
},{ },{
name: 'JTX', name: 'JTX',
uid: 'jtx', uid: 'jtx',
description: "Le Journal Télévisé de l'X te fait revivre les évènements promo en images et expose régulièrement ses créations.",
website: 'binet-jtx.com', website: 'binet-jtx.com',
school: 'polytechnique', school: 'polytechnique',
parentuid: 'kes', parentuid: 'kes',
...@@ -25,14 +26,15 @@ exports.seed = function(knex, Promise) { ...@@ -25,14 +26,15 @@ exports.seed = function(knex, Promise) {
name: 'Faërix', name: 'Faërix',
uid: 'faerix', uid: 'faerix',
website: 'faerix.net', website: 'faerix.net',
description: "Faërix est le binet de jeux de l'école : jeux de cartes, de plateau, de rôles... Le binet organise chaque année, sur un week-end, une convention de jeux de rôles, les Rencontres Rôlistes de l'X.",
school: 'polytechnique', school: 'polytechnique',
parentuid: 'kes', parentuid: 'kes',
type : 'simple' type : 'simple'
},{ },{
name: 'Bôbar', name: 'Bôbar',
uid: 'bob', uid: 'bob',
description : "Viens. On est bien", description: "Le bar de l'École polytechnique, tenu par et pour les X. Le BôBar t'enkhûle avec affection",
website: 'bôbar.binet.fr', website: 'http://tdb.bobar.pro/',
school: 'polytechnique', school: 'polytechnique',
parentuid: 'kes', parentuid: 'kes',
type : 'simple' type : 'simple'
...@@ -55,8 +57,7 @@ exports.seed = function(knex, Promise) { ...@@ -55,8 +57,7 @@ exports.seed = function(knex, Promise) {
website: 'laserwave.fr', website: 'laserwave.fr',
school: 'supoptique', school: 'supoptique',
type : 'simple' type : 'simple'
}, },{
{
name: 'WikiX', name: 'WikiX',
uid: 'wikix', uid: 'wikix',
website: 'https://wikix.polytechnique.org/', website: 'https://wikix.polytechnique.org/',
...@@ -69,23 +70,52 @@ exports.seed = function(knex, Promise) { ...@@ -69,23 +70,52 @@ exports.seed = function(knex, Promise) {
website: 'http://bde.ensta-paristech.fr/', website: 'http://bde.ensta-paristech.fr/',
school: 'ensta', school: 'ensta',
type : 'simple' type : 'simple'
}, },{
{
name: "X-Chine", name: "X-Chine",
uid: "x-chine", uid: "x-chine",
website: "",
school: "polytechnique", school: "polytechnique",
description: `X-Chine est le binet qui rassemble les amoureux et les curieux de l'Empire du Milieu, qu'ils soient chinois ou non !`, description: `X-Chine est le binet qui rassemble les amoureux et les curieux de l'Empire du Milieu, qu'ils soient chinois ou non !`,
type: "simple" type: "simple"
}, },{
{
name: 'Subaïsse', name: 'Subaïsse',
uid: 'subaisse', uid: 'subaisse',
description: 'Le Binet de ceux qui subissent', description: 'Le Binet de ceux qui subissent',
school: 'polytechnique', school: 'polytechnique',
parentuid: 'kes', parentuid: 'kes',
type : 'simple' type : 'simple'
}, },{
name: 'X-Broadway',
uid: 'xbroadway',
website: 'https://xbroadway.binets.fr/',
description: "Créé par la promotion 2012, le binet X-Broadway prépare pendant une année une comédie musicale qu'il joue durant le tronc commun de la promo suivante. Chaque année, le bureau est composé de multiples pôles : comédie, danse, manute, musique, et prez'. Une fois le bureau constitué, il recrute sa troupe parmi les étudiants du plateau de Saclay.",
school: "polytechnique",
parentuid: 'kes',
type: 'simple'
},{
name: 'Œnologie',
uid: 'oenologie',
website: 'oenologie.binets.fr',
description: "Le binet de la Finesse et du Bon Goût par excellence. Cours d'initiation, dégustations, soirées Vins & Fromages, voyages chez les producteurs : le Binet Œnologie est là pour partager la passion du vin avec tous, néophytes ou connaisseurs.",
school: "polytechnique",
parentuid: "kes",
type: "simple"
},{
name: "Tribunes de l'X",
uid: 'politix',
website: 'https://www.facebook.com/Tribunes-de-lX-250533552110256/',
description: "Le binet Tribunes de l'X a pour but d'intéresser les élèves à la \"vie de la cité\" en organisant des conférences ou débats, autour de grandes sujets d'actualité et d'enjeux fondamentaux pour le débat public, avec des personnalités diverses, hommes politiques ou intellectuels. Cette association est la tribune étudiante de l'X.",
school: "polytechnique",
parentuid: "kes",
type: 'simple'
},{
name: "X-Finance",
uid: 'politix',
description: "X Finance gère un fonds d'investissement étudiant au profit de la FX en partenariat avec Edmond de Rothschild. Nous développons également des modèles algorithmiques pour gérer le risque. Le binet organise également des événements de networking en partenariat avec des écoles françaises et européeennes.",
school: "polytechnique",
parentuid: "kes",
type: "simple"
}
]; ];
return knex('simple_groups').insert(simple_groups); return knex('simple_groups').insert(simple_groups);
......
...@@ -11,14 +11,6 @@ exports.seed = function(knex, Promise) { ...@@ -11,14 +11,6 @@ exports.seed = function(knex, Promise) {
title: "Proj'et Promotion", title: "Proj'et Promotion",
content: "La nouvelle proj' du JTX arrive !", content: "La nouvelle proj' du JTX arrive !",
authors: ['br'] authors: ['br']
},{
title: "Fête de la Lune",
content: "C'est bientôt la fête de la Lune ! Inscrivez-vous pour un dîner-spectacle dans le Grand Hall !",
authors: ['x-chine']
},{
title: "Formation Web",
content: "Envie d'apprendre à faire un site Web en Django ? Alors viens en amphi Sauvy ce jeudi à 20h !",
authors: ['br']
}]; }];
return knex('posts').insert(posts); return knex('posts').insert(posts);
......
...@@ -6,13 +6,34 @@ exports.seed = function(knex, Promise) { ...@@ -6,13 +6,34 @@ exports.seed = function(knex, Promise) {
// Inserts seed entries // Inserts seed entries
return knex('events').insert([ return knex('events').insert([
{ {
id : 42, title : "Fête de la lune",
title : "coder sigma", content : "La fête de la lune, c'est bientôt dans le grand hall !",
content : "Tous ensemble pour faire du Dev. Que demander de plus ? (a part du sommeil)",
start_time : knex.fn.now(), start_time : knex.fn.now(),
end_time : knex.fn.now(), end_time : knex.fn.now(),
authors : [], authors : ["x-chine"],
is_announcement : false is_announcement : false
},{
title: "Perm BR du mardi soir",
content: "La perm' BR c'est maintenant!",
start_time: knex.fn.now(),
end_time: knex.fn.now(),
authors : ["br"],
is_announcement : true
},{
title: "Formation Git",
content: "Aujourd'hui, on va parler du système de contrôle de versions Git, qui est particulièrement utile pour travailler à plusieurs sur des projets informatiques: PSC, code de PI ou de projet de MAP, site binet, quoi que ce soit!",
start_time: knex.fn.now(),
end_time: knex.fn.now(),
authors: ["br"],
is_announcement: false
},{
title: "Formation Web",
content: "Envie d'apprendre à faire un site Web en Django ? Alors viens en amphi Sauvy ce jeudi à 20h !",
authors: ['br'],
start_time: knex.fn.now(),
end_time: knex.fn.now(),
authors: ['br'],
is_announcement: false
} }
]); ]);
}); });
......
...@@ -2,19 +2,22 @@ import passport from 'passport'; ...@@ -2,19 +2,22 @@ import passport from 'passport';
import '../config_passport'; import '../config_passport';
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
// JSON web token secret key
const SECRET_KEY = "boom shakalaka"; const SECRET_KEY = "boom shakalaka";
// Returns a promise wherein we try to authenticate the user
// against the LDAP using passportjs
// The promise will fail if no user is returned in the passport.authenticate
// callback.
function loginResolverFunc({ username, password, req }) { function loginResolverFunc({ username, password, req }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
passport.authenticate('ldapauth', (err, user, info) => { passport.authenticate('ldapauth', (err, user, info) => {
if (err) { reject(err); } if (err) { reject(err); }
if (!user) { reject('Invalid credentials.'); } if (!user) { reject('Invalid credentials.'); }
req.login(user, () => { // Sign a new JSON web token with the user's uid against the secret key
const token = jwt.sign({uid: user.uid}, SECRET_KEY); const token = jwt.sign({ uid: user.uid }, SECRET_KEY);
resolve(token); resolve(token);
});
})({ body: { username, password } }); })({ body: { username, password } });
}); });
} }
......
...@@ -25,7 +25,7 @@ export { utilisateur }; ...@@ -25,7 +25,7 @@ export { utilisateur };
Commençons par un rappel sur le fonctionnement des droits. Commençons par un rappel sur le fonctionnement des droits.
Chaque utilisateur a un certain niveau de droit sur chaque groupe. Ce niveau de droit indique Chaque utilisateur a un certain niveau de droit sur chaque groupe. Ce niveau de droit indique
ce qu'il a le droit de savoir et de faire. Chaque niveau est inclus dans les niveaus supérieur. ce qu'il a le droit de savoir et de faire. Chaque niveau est inclus dans les niveaus supérieur.
Les différends niveaux sont : Les différents niveaux sont :
none - aucun droit none - aucun droit
viewer : l'utilisateur a visibilité sur le groupe. Il sait que le groupe existe, et a accès à un certain nombre d'infos. viewer : l'utilisateur a visibilité sur le groupe. Il sait que le groupe existe, et a accès à un certain nombre d'infos.
member : l'utilisateur est membre du groupe member : l'utilisateur est membre du groupe
...@@ -55,24 +55,6 @@ export { utilisateur }; ...@@ -55,24 +55,6 @@ export { utilisateur };
Les fonctions qui ne modifient pas la BDD et ne renvoient pas de données sur la BDD n'ont pas de rights. Les fonctions qui ne modifient pas la BDD et ne renvoient pas de données sur la BDD n'ont pas de rights.
*/ */
/**
* @summary Génère une promise.
* @function
* @desc Les fonctions ici sont toutes supposées renvoyer une promise.
* Si on veut renvoyer une valeur directement, cette fonction permet de construire
* une Promise qui renvoie cette valeur facilement.
* @arg {Object} val - La valeur qu'on veut renvoyer.
* @return {Promise(Object)} Une promise qui renvoi val
*/
const quickPromise = (val) => {
return new Promise( (resolve, reject) => {
resolve(val);
});
};
/** /**
* @summary Renvoie le nom de la table dans laquelle il faut chercher en fonction de ce qu'on veut * @summary Renvoie le nom de la table dans laquelle il faut chercher en fonction de ce qu'on veut
* @desc a remplir * @desc a remplir
......
...@@ -203,6 +203,12 @@ export const resolvers = { ...@@ -203,6 +203,12 @@ export const resolvers = {
return user && connectors.createSubgroup(user, args); return user && connectors.createSubgroup(user, args);
}, },
postEvent: async function(obj, args, context) {
const { from, title, date } = args;
let user = authentifiers.admin(context.bindUser,args.from);
},
login: function(obj, args, context) { login: function(obj, args, context) {
const {username, password} = args; const {username, password} = args;
......
...@@ -87,9 +87,16 @@ const RootTypes = ` ...@@ -87,9 +87,16 @@ const RootTypes = `
school: String school: String
): Group ): Group
# Speaker mutations # Creates a new event.
postEvent(
# ID of the organizing group.
from: ID!,
# Title of the event.
title: String,
# Date of event.
date: String
): Event
postEvent(from : String!, name: String, date: String): Event
answerEventRequest(from : String, request: ID, accept : Boolean): Request answerEventRequest(from : String, request: ID, accept : Boolean): Request
# Log user into the API # Log user into the API
......
...@@ -223,6 +223,7 @@ app.use('/graphql', ...@@ -223,6 +223,7 @@ app.use('/graphql',
console.log("Responding to graphql request..."); console.log("Responding to graphql request...");
console.log(`| User: ${req.user ? req.user.uid : "none"}`); console.log(`| User: ${req.user ? req.user.uid : "none"}`);
console.log(`| Authorization: ${req.headers.authorization}`);
console.log("| User is authenticated:",req.isAuthenticated()); console.log("| User is authenticated:",req.isAuthenticated());
if(req.isAuthenticated()) { if(req.isAuthenticated()) {
......
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