Compare commits
	
		
			10 Commits
		
	
	
		
			8a544515d0
			...
			d2a697904e
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| d2a697904e | |||
| fe34ff4705 | |||
| de7774047f | |||
| a524845d06 | |||
| 8e40638b5e | |||
| 13d9020c7d | |||
| 1383814e34 | |||
| 7ff47b6e9c | |||
| 93144d0f90 | |||
| 
						
						
							
						
						204e6a9505
	
				 | 
					
					
						
							
								
								
									
										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){
 | 
			
		||||
	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