Merge branch 'master' into wal/frontend/Register
This commit is contained in:
commit
d2a697904e
36
Documents/JournalDeBord/authentification.md
Normal file
36
Documents/JournalDeBord/authentification.md
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# Authentification
|
||||||
|
|
||||||
|
## Contexte
|
||||||
|
|
||||||
|
Le projet demande de pouvoir authentifier les utilisateurs présents. Le but étant de leurs associer un "contexte"
|
||||||
|
(cours, informations personnelles, ...). Pour que ceux-ci puissent accomplir différentes actions nécéssitantes une
|
||||||
|
identification (permission, info personelles, ...).
|
||||||
|
|
||||||
|
## Méthode
|
||||||
|
|
||||||
|
Lorsque qu'un utilisateur se connecte au serveur, nous lui envoyons un token qui sera stocké dans le
|
||||||
|
navigateur. Ce token est unique à l'utilisateur et pourra être ré-envoyé dans les futures requêtes
|
||||||
|
pour identifier l'utilisateur.
|
||||||
|
|
||||||
|
Ce token est donc une chaine de 64 caractères suivant la norme ISO_8859_1(8bits par cararctère) aléatoires,ce qui est d'après nos recherches suffisant.
|
||||||
|
|
||||||
|
De plus une limite de 5 token par utilisateur sera ajoutée de sorte à
|
||||||
|
1) S'assurer qu'une personne ne noie la base de donnée de tokens.
|
||||||
|
2) Ajouter une protection supplémentaire pour assurer qu'un token est bien unique à un utilisateur.
|
||||||
|
|
||||||
|
## Autres méthodes envisagée
|
||||||
|
|
||||||
|
### Oauth2
|
||||||
|
|
||||||
|
C'est un protocol d'identification vastement utilisé permettant, en plus d'identifier les requettes,
|
||||||
|
de gérer leurs permissions. Un utilisateur créen un token peut lui attribuer des permissions
|
||||||
|
spécifique qui restrainderaients les permissions d'utilisation de ce token. C'est très utile pour
|
||||||
|
déployer des api de site pouvant notament être accédé par des ordinateurs / bots. Ca n'est en
|
||||||
|
revanche pas l'objectif du projet et l'option n'a donc pas été retenue
|
||||||
|
|
||||||
|
### Spring Sessions / Tomcat sessions
|
||||||
|
|
||||||
|
Il aurait été possible de laisser une librairie automatiser les sessions. Malheuresement, celà
|
||||||
|
implique de devoir se plier au format de la dite librairie. L'implémentation d'un système de gestion
|
||||||
|
de token maison semblai à la fois, non-imposible et interessant à notre apprentisage. C'est pourquoi
|
||||||
|
nous n'avons pas utilisé cette option.
|
35
frontend/src/rest/ServiceInscription.js
Normal file
35
frontend/src/rest/ServiceInscription.js
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
/**
|
||||||
|
* functions to handle register requests.
|
||||||
|
*
|
||||||
|
* TODO: On time of writing, the backend doesn't support these endpoints so it could be modified in the future.
|
||||||
|
*/
|
||||||
|
import { restGet } from './restConsumer.js'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* create a new register requests that can be recovered by the registering service
|
||||||
|
* TODO: add info in the Object (I don't know what will be needed)
|
||||||
|
*/
|
||||||
|
export async function createRegister(){
|
||||||
|
return restPost("/requests/register"});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* list all register request in a list of Objects
|
||||||
|
*/
|
||||||
|
export async function getRegisters(){
|
||||||
|
return restGet("/requests/register")
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get info on a particular registering request
|
||||||
|
*/
|
||||||
|
export async function getRegisters(id){
|
||||||
|
return restGet("/requests/register/" + id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change the state of a requests.
|
||||||
|
*/
|
||||||
|
export async function validateRegister(id, state){
|
||||||
|
return restPost("/requests/register/" + id, {state: state});
|
||||||
|
}
|
@ -6,7 +6,6 @@ export async function login(user, pass, exp){
|
|||||||
|
|
||||||
export async function register(user, pass, mail){
|
export async function register(user, pass, mail){
|
||||||
return restPost("/user", {name: user, password: pass, mail: mail});
|
return restPost("/user", {name: user, password: pass, mail: mail});
|
||||||
restPost("/login", {login: user, password: pass, expiration: exp})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
41
frontend/src/rest/cursus.js
Normal file
41
frontend/src/rest/cursus.js
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
/**
|
||||||
|
* cursus API
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { restGet, restPostn, restDelete, restPatch } from './restConsumer.js'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new cursus (bundle of courses)
|
||||||
|
* @param courses list of courses
|
||||||
|
*/
|
||||||
|
export async function createCursus(courses){
|
||||||
|
return restPost("/cursus", {courses: courses} );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete the specified cursus
|
||||||
|
*/
|
||||||
|
export async function deleteCursus(id){
|
||||||
|
return restDelete("/cursus/" + id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get informations on a particular cursus
|
||||||
|
*
|
||||||
|
* @param id identification of the cursus
|
||||||
|
*
|
||||||
|
* @return list of courses
|
||||||
|
*/
|
||||||
|
export async function getCursus(id){
|
||||||
|
return restGet("/cursus/" + id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Modify the courses of a cursus
|
||||||
|
*
|
||||||
|
* @param id the id of the cursus
|
||||||
|
* @param courses list of new courses
|
||||||
|
*/
|
||||||
|
export async function alterCursus(id, courses){
|
||||||
|
return restPatch("/cursus/" + id, courses);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user