Merge branch 'master' into wal/frontend/Register
This commit is contained in:
commit
0ca5640564
@ -1,22 +1,27 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
|
import { login , register} from './rest/Users.js'
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
import i18n from './i18n.js'
|
import i18n from './i18n.js'
|
||||||
const login= ref(true)
|
const loginPage= ref(true)
|
||||||
const page = ref(0)
|
const page = ref(0)
|
||||||
|
|
||||||
const emailID=ref("")
|
const emailID=ref("")
|
||||||
const passwordIN=ref("")
|
const passwordIN=ref("")
|
||||||
|
|
||||||
|
|
||||||
|
const submitValue= ref(i18n("login.guest.submit"))
|
||||||
const surname=ref("")
|
const surname=ref("")
|
||||||
const firstname=ref("")
|
const firstname=ref("")
|
||||||
const passwordOUT=ref("")
|
const passwordOUT=ref("")
|
||||||
const passwordConfirm=ref("")
|
const passwordConfirm=ref("")
|
||||||
|
const birthday=ref("")
|
||||||
const emailOUT=ref("")
|
const emailOUT=ref("")
|
||||||
const address=ref("")
|
const address=ref("")
|
||||||
const country=ref("")
|
const country=ref("")
|
||||||
const cursus=ref("")
|
const cursus=ref("")
|
||||||
const loginInfos = [{_emailID:emailID},{_passwordIN:passwordIN}]
|
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>
|
</script>
|
||||||
|
|
||||||
@ -31,31 +36,33 @@
|
|||||||
<div class="logBoxCenterer">
|
<div class="logBoxCenterer">
|
||||||
<div class='loginBox'>
|
<div class='loginBox'>
|
||||||
|
|
||||||
<div v-if="login">
|
<div v-if="loginPage">
|
||||||
<div class="form">
|
<form @submit.prevent="login(emailID, passwordIN)"class="form">
|
||||||
<h1 style="color:rgb(239,60,168); font-family: sans-serif;">{{i18n("login.guest.signin")}}</h1>
|
<h1 style="color:rgb(239,60,168); font-family: sans-serif;">
|
||||||
<div class="inputBox">
|
{{i18n("login.guest.signin")}}
|
||||||
<p>ID / {{i18n("login.guest.email")}}</p>
|
</h1>
|
||||||
<input type="text" v-model="emailID">
|
<div class="inputBox">
|
||||||
</div>
|
<p>ID / {{i18n("login.guest.email")}}</p>
|
||||||
<div class="inputBox">
|
<input type="text" v-model="emailID">
|
||||||
<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>
|
</div>
|
||||||
</div>
|
<div class="inputBox">
|
||||||
|
<p>{{i18n("login.guest.password")}}</p>
|
||||||
<div v-else>
|
<input type="password" v-model="passwordIN">
|
||||||
<div class="form">
|
</div>
|
||||||
<h1 style="color:rgb(239,60,168); font-family: sans-serif; text-align:center;">{{i18n("login.guest.welcome")}}</h1>
|
<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 v-if="page === 0">
|
||||||
<div class="inputBox">
|
<div class="inputBox">
|
||||||
<p>{{i18n("login.guest.surname")}}</p>
|
<p>{{i18n("login.guest.surname")}}</p>
|
||||||
@ -65,6 +72,10 @@
|
|||||||
<p>{{i18n("login.guest.firstname")}}</p>
|
<p>{{i18n("login.guest.firstname")}}</p>
|
||||||
<input type="text" v-model="firstname">
|
<input type="text" v-model="firstname">
|
||||||
</div>
|
</div>
|
||||||
|
<div class="inputBox">
|
||||||
|
<p>BIRTHDAY</p>
|
||||||
|
<input type="date" v-model="birthday">
|
||||||
|
</div>
|
||||||
<div class="inputBox">
|
<div class="inputBox">
|
||||||
<p>{{i18n("login.guest.password")}}</p>
|
<p>{{i18n("login.guest.password")}}</p>
|
||||||
<input type="password" v-model="passwordOUT">
|
<input type="password" v-model="passwordOUT">
|
||||||
@ -78,7 +89,7 @@
|
|||||||
<button @click="page++">{{i18n("login.guest.nextpage")}}</button>
|
<button @click="page++">{{i18n("login.guest.nextpage")}}</button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div @click="(login=!login) && (page=0)" class="register">
|
<div @click="(loginPage=!loginPage) && (page=0)" class="register">
|
||||||
<a>{{i18n("login.guest.alregister")}}</a>
|
<a>{{i18n("login.guest.alregister")}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -96,7 +107,7 @@
|
|||||||
<input type="text" v-model="country">
|
<input type="text" v-model="country">
|
||||||
</div>
|
</div>
|
||||||
<div class="inputBox">
|
<div class="inputBox">
|
||||||
<p>Cursus</p>
|
<p>CURSUS</p>
|
||||||
<select v-model="cursus">
|
<select v-model="cursus">
|
||||||
<option value="Chemistry">Chemistry</option>
|
<option value="Chemistry">Chemistry</option>
|
||||||
<option value="Psycho">Psychology</option>
|
<option value="Psycho">Psychology</option>
|
||||||
@ -109,14 +120,14 @@
|
|||||||
<div class="switchpage">
|
<div class="switchpage">
|
||||||
<button @click="page--">{{i18n("login.guest.lastpage")}}</button>
|
<button @click="page--">{{i18n("login.guest.lastpage")}}</button>
|
||||||
</div>
|
</div>
|
||||||
<div @click="(login=!login) && (page=0)" class="register">
|
<div @click="(loginPage=!loginPage) && (page=0)" class="register">
|
||||||
<a>{{i18n("login.guest.alregister")}}</a>
|
<a>{{i18n("login.guest.alregister")}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</body>
|
</body>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -214,7 +225,7 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
button,select{
|
input[type=submit],button,select{
|
||||||
margin-bottom:20px;
|
margin-bottom:20px;
|
||||||
background-color: rgb(239,60,168);
|
background-color: rgb(239,60,168);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@ -231,4 +242,5 @@ button:active ,.switchpage:active{
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { getCookie } from './utils.js';
|
import { getCookie, setCookie } from './utils.js';
|
||||||
|
|
||||||
const default_lang = "EN";
|
const default_lang = "EN";
|
||||||
let langs;
|
let langs;
|
||||||
@ -34,10 +34,6 @@ export default function i18n(key, options) {
|
|||||||
return ret;
|
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
|
* 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
|
* @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;
|
langs = filteredLines;
|
||||||
}
|
}
|
||||||
await loadLangs();
|
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
|
* Return the content of a cookie with specified key
|
||||||
* @param key cookie name
|
* @param key cookie name
|
||||||
*/
|
*/
|
||||||
function getCookie(key){
|
export function getCookie(key){
|
||||||
key = key + "="
|
key = key + "="
|
||||||
let cookies = decodeURIComponent(document.cookie).split(";");
|
let cookies = decodeURIComponent(document.cookie).split(";");
|
||||||
for (let el of cookies) {
|
for (let el of cookies) {
|
||||||
@ -14,4 +14,12 @@ function getCookie(key){
|
|||||||
return "";
|
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 :/
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user