Compare commits
	
		
			13 Commits
		
	
	
		
			4111839852
			...
			0ca5640564
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 0ca5640564 | |||
| e69ece23d0 | |||
| b42324987b | |||
| dbbf74f2c3 | |||
| 
						
						
							
						
						aaaba0ddf3
	
				 | 
					
					
						|||
| 
						
						
							
						
						e158fa1f87
	
				 | 
					
					
						|||
| 
						
						
							
						
						6289be529a
	
				 | 
					
					
						|||
| 
						
						
							
						
						1f69040436
	
				 | 
					
					
						|||
| 
						
						
							
						
						56a14a3e8a
	
				 | 
					
					
						|||
| 
						
						
							
						
						d1b4023d92
	
				 | 
					
					
						|||
| 
						
						
							
						
						837db9aba9
	
				 | 
					
					
						|||
| 
						
						
							
						
						09d5e1c293
	
				 | 
					
					
						|||
| 
						
						
							
						
						8c2397c4cf
	
				 | 
					
					
						
@ -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 :/
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user