Merge branch 'master' into wal/frontend/Register
This commit is contained in:
		
							
								
								
									
										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); | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user