Merge branch 'master' into wal/frontend/Register
This commit is contained in:
		| @ -1,22 +1,27 @@ | ||||
| <script setup> | ||||
|   import { login , register} from './rest/Users.js' | ||||
|   import { ref } from 'vue' | ||||
|   import i18n from './i18n.js' | ||||
|   const login= ref(true) | ||||
|   const loginPage= ref(true) | ||||
|   const page = ref(0) | ||||
|  | ||||
|   const emailID=ref("") | ||||
|   const passwordIN=ref("") | ||||
|  | ||||
|  | ||||
|   const submitValue= ref(i18n("login.guest.submit")) | ||||
|   const surname=ref("") | ||||
|   const firstname=ref("") | ||||
|   const passwordOUT=ref("") | ||||
|   const passwordConfirm=ref("") | ||||
|   const birthday=ref("") | ||||
|   const emailOUT=ref("") | ||||
|   const address=ref("") | ||||
|   const country=ref("") | ||||
|   const cursus=ref("") | ||||
|   const loginInfos = [{_emailID:emailID},{_passwordIN:passwordIN}] | ||||
|   const registerInfos= [{_surname:surname},{_firstname:firstname},{_passwordOUT:passwordOUT},{_passwordConfirm:passwordConfirm},{_emailOUT:emailOUT},{_address:address},{_country:country},{_cursus:cursus}] | ||||
|   const registerInfos= [{_surname:surname},{_firstname:firstname},{_birthday:birthday},{_passwordOUT:passwordOUT}, | ||||
|   {_passwordConfirm:passwordConfirm},{_emailOUT:emailOUT},{_address:address},{_country:country},{_cursus:cursus}] | ||||
|   | ||||
| </script> | ||||
|  | ||||
| @ -31,31 +36,33 @@ | ||||
|     <div class="logBoxCenterer"> | ||||
|       <div class='loginBox'> | ||||
|  | ||||
|         <div v-if="login"> | ||||
|           <div class="form"> | ||||
|             <h1 style="color:rgb(239,60,168); font-family: sans-serif;">{{i18n("login.guest.signin")}}</h1> | ||||
|               <div class="inputBox"> | ||||
|                 <p>ID / {{i18n("login.guest.email")}}</p>  | ||||
|                 <input type="text" v-model="emailID"> | ||||
|               </div> | ||||
|               <div class="inputBox"> | ||||
|                 <p>{{i18n("login.guest.password")}}</p> | ||||
|                 <input type="password" v-model="passwordIN"> | ||||
|               </div> | ||||
|               <div class="register"> | ||||
|                 <a @click="login=!login">{{i18n("login.guest.register")}}</a> | ||||
|               </div> | ||||
|               <div class="inputBox"> | ||||
|                 <button @click="console.log(inputs)">{{i18n("login.guest.submit")}}</button> | ||||
|  | ||||
|               </div> | ||||
|         <div v-if="loginPage"> | ||||
|           <form @submit.prevent="login(emailID, passwordIN)"class="form"> | ||||
|             <h1 style="color:rgb(239,60,168); font-family: sans-serif;"> | ||||
|               {{i18n("login.guest.signin")}} | ||||
|             </h1> | ||||
|             <div class="inputBox"> | ||||
|               <p>ID / {{i18n("login.guest.email")}}</p>  | ||||
|               <input type="text" v-model="emailID"> | ||||
|             </div> | ||||
|           </div> | ||||
|  | ||||
|           <div v-else> | ||||
|             <div class="form"> | ||||
|             <h1 style="color:rgb(239,60,168); font-family: sans-serif; text-align:center;">{{i18n("login.guest.welcome")}}</h1> | ||||
|             <div class="inputBox"> | ||||
|               <p>{{i18n("login.guest.password")}}</p> | ||||
|               <input type="password" v-model="passwordIN"> | ||||
|             </div> | ||||
|             <div class="register"> | ||||
|               <a @click="loginPage=!loginPage">{{i18n("login.guest.register")}}</a> | ||||
|             </div> | ||||
|             <div class="inputBox"> | ||||
|               <input type="submit" v-model="submitValue"> | ||||
|             </div> | ||||
|           </form> | ||||
|         </div> | ||||
|  | ||||
|         <div v-else> | ||||
|           <form @submit.prevent="register(surname,firstname,emailOUT)" class="form"> | ||||
|             <h1 style="color:rgb(239,60,168); font-family: sans-serif; text-align:center;"> | ||||
|               {{i18n("login.guest.welcome")}} | ||||
|             </h1> | ||||
|             <div v-if="page === 0"> | ||||
|               <div class="inputBox"> | ||||
|                 <p>{{i18n("login.guest.surname")}}</p> | ||||
| @ -65,6 +72,10 @@ | ||||
|                 <p>{{i18n("login.guest.firstname")}}</p> | ||||
|                 <input type="text" v-model="firstname"> | ||||
|               </div> | ||||
|               <div class="inputBox"> | ||||
|                 <p>BIRTHDAY</p> | ||||
|                 <input type="date" v-model="birthday"> | ||||
|               </div> | ||||
|               <div class="inputBox"> | ||||
|                  <p>{{i18n("login.guest.password")}}</p> | ||||
|                  <input type="password" v-model="passwordOUT"> | ||||
| @ -78,7 +89,7 @@ | ||||
|                 <button @click="page++">{{i18n("login.guest.nextpage")}}</button> | ||||
|  | ||||
|               </div> | ||||
|               <div @click="(login=!login) && (page=0)" class="register"> | ||||
|               <div @click="(loginPage=!loginPage) && (page=0)" class="register"> | ||||
|                 <a>{{i18n("login.guest.alregister")}}</a> | ||||
|               </div> | ||||
|             </div> | ||||
| @ -96,7 +107,7 @@ | ||||
|                 <input type="text" v-model="country"> | ||||
|               </div> | ||||
|               <div class="inputBox"> | ||||
|                 <p>Cursus</p>  | ||||
|                 <p>CURSUS</p>  | ||||
|                   <select v-model="cursus"> | ||||
|                     <option value="Chemistry">Chemistry</option> | ||||
|                     <option value="Psycho">Psychology</option> | ||||
| @ -109,14 +120,14 @@ | ||||
|               <div  class="switchpage"> | ||||
|                 <button @click="page--">{{i18n("login.guest.lastpage")}}</button> | ||||
|               </div> | ||||
|               <div  @click="(login=!login) && (page=0)" class="register"> | ||||
|               <div  @click="(loginPage=!loginPage) && (page=0)" class="register"> | ||||
|                 <a>{{i18n("login.guest.alregister")}}</a> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|           </form> | ||||
|          </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </body> | ||||
| </template> | ||||
|  | ||||
| @ -214,7 +225,7 @@ | ||||
|  | ||||
| } | ||||
|  | ||||
| button,select{ | ||||
| input[type=submit],button,select{ | ||||
|   margin-bottom:20px; | ||||
|   background-color: rgb(239,60,168); | ||||
|   cursor: pointer; | ||||
| @ -231,4 +242,5 @@ button:active ,.switchpage:active{ | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| </style> | ||||
|  | ||||
| @ -9,7 +9,7 @@ | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| import { getCookie } from './utils.js'; | ||||
| import { getCookie, setCookie } from './utils.js'; | ||||
|  | ||||
| const default_lang = "EN"; | ||||
| let langs; | ||||
| @ -34,10 +34,6 @@ export default function i18n(key, options) { | ||||
| 	return ret; | ||||
| } | ||||
|  | ||||
| // | ||||
| // Those functions are utility functions use by previous exported functions. | ||||
| // | ||||
|  | ||||
| /** | ||||
|  * Function that load the file with translation from the specified lang and return a dictionnary | ||||
|  * @param select the language to load. could be null to fetch the cookies for an answer | ||||
| @ -61,3 +57,8 @@ export async function loadLangs(lang){ | ||||
| 	langs = filteredLines; | ||||
| } | ||||
| await loadLangs(); | ||||
|  | ||||
| export async function setLang(lang){ | ||||
| 	setCookie("lang", lang); | ||||
| 	await loadLangs(); | ||||
| } | ||||
|  | ||||
							
								
								
									
										28
									
								
								frontend/src/rest/Users.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								frontend/src/rest/Users.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | ||||
| import { restGet, restPost } from './restConsumer.js' | ||||
|  | ||||
| export async function login(user, pass, exp){ | ||||
| 	return restPost("/login", {login: user, password: pass, expiration: 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}) | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * get informations on a specific user. | ||||
|  * Leaving the id empty will return the user's value based on his token | ||||
|  * if the user is not authenticated. then an empty array should be returned | ||||
|  */ | ||||
| export async function getUser(id){ | ||||
| 	const endpoint = "/user" + id != null ? "/" + id : ""; | ||||
| 	return restGet(endpoint); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Reserved for secretary roles. Allow to list all user on the plateform | ||||
|  */ | ||||
| export async function getAllUsers(){ | ||||
| 	return restGet("/users"); | ||||
| } | ||||
|  | ||||
							
								
								
									
										52
									
								
								frontend/src/rest/courses.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								frontend/src/rest/courses.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,52 @@ | ||||
| /** | ||||
|  * Courses API | ||||
|  */ | ||||
|  | ||||
| import { restGet, restPost, restDelete, restPatch } from './restConsumer.js' | ||||
|  | ||||
| /** | ||||
|  * Create a new course | ||||
|  */ | ||||
| export async function createCourse(name, credits, faculty, teacher, assistants){ | ||||
| 	return restPost("/courses", {name: name, credits: credits, faculty: faculty, teacher: teacher, assistants: assistants} ) | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Delete the specified course | ||||
|  */ | ||||
| export async function deleteCourse(id){ | ||||
| 	return restDelete("/course/" + id); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get informations on a particular course | ||||
|  * | ||||
|  * @param id identification of the course | ||||
|  * | ||||
|  * @return all atribute of the specified course | ||||
|  *  - name | ||||
|  *  - credits | ||||
|  *  - faculty | ||||
|  *  - teacher | ||||
|  *  - assistants : list | ||||
|  */ | ||||
| export async function getCourse(id){ | ||||
| 	return restGet("/course/" + id); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Change the options of a course | ||||
|  * | ||||
|  * @param id the id of the course | ||||
|  * @param changes Object with value to changes | ||||
|  * | ||||
|  * The changes object can contain: | ||||
|  *  - name | ||||
|  *  - credits | ||||
|  *  - faculty | ||||
|  *  - teacher | ||||
|  *  - assistants: should be a list and will replace all assistants | ||||
|  */ | ||||
| export async function alterCourse(id, changes){ | ||||
| 	return restPatch("/course/" + id, changes); | ||||
| } | ||||
| @ -2,7 +2,7 @@ | ||||
|  * Return the content of a cookie with specified key | ||||
|  * @param key cookie name | ||||
|  */ | ||||
| function getCookie(key){ | ||||
| export function getCookie(key){ | ||||
| 	key = key + "=" | ||||
| 	let cookies = decodeURIComponent(document.cookie).split(";"); | ||||
| 	for (let el of cookies) { | ||||
| @ -14,4 +14,12 @@ function getCookie(key){ | ||||
| 	return ""; | ||||
| } | ||||
|  | ||||
| export {getCookie}; | ||||
| /** | ||||
|  * Return the content of a cookie with specified key | ||||
|  * @param key cookie name | ||||
|  */ | ||||
| export function setCookie(key, value){ | ||||
| 	cookie = key + "=" + value + ";"; | ||||
| 	document.cookie = cookie; | ||||
| 	// Here we can apreciate the stupidity of Javascript :/ | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user