Compare commits

...

3 Commits

Author SHA1 Message Date
385640c10e Merge branch 'master' into wal/front/listingUsers
All checks were successful
Build and test backend / Build-backend (pull_request) Successful in 1m59s
Build and test backend / Test-backend (pull_request) Successful in 1m59s
Build and test FrontEnd / Build-frontend (pull_request) Successful in 23s
2024-03-15 15:14:18 +01:00
198ee8a4ce Register API and form optimization [depend: backend /register] (#93)
All checks were successful
Build and test backend / Build-backend (push) Successful in 2m7s
Build and test backend / Test-backend (push) Successful in 1m18s
deploy to production / deploy-frontend (push) Successful in 25s
deploy to production / deploy-backend (push) Successful in 2m20s
Build and test FrontEnd / Build-frontend (push) Successful in 25s
Made the register api following the backend

refactored the register form for more ergonomy

**PS: Waiting for the backend to catch up**

Reviewed-on: #93
Reviewed-by: Maxime <231026@umons.ac.be>
Reviewed-by: Wal <karpinskiwal@gmail.com>
Reviewed-by: LeoMoulin <leomoulin125@gmail.com>
Co-authored-by: Anthony Debucquoy <debucquoy.anthony@gmail.com>
Co-committed-by: Anthony Debucquoy <debucquoy.anthony@gmail.com>
2024-03-15 14:46:39 +01:00
08c662a65f Fetch inscription on backend
Some checks failed
Build and test FrontEnd / Build-frontend (push) Waiting to run
Build and test backend / Build-backend (push) Successful in 2m14s
Build and test backend / Test-backend (push) Successful in 1m17s
deploy to production / deploy-frontend (push) Successful in 26s
deploy to production / deploy-backend (push) Has been cancelled
This commit is waiting for the backend implementation to be merged.

The list of field expected is writen in comment
2024-03-15 14:41:21 +01:00
4 changed files with 80 additions and 53 deletions

View File

@ -1,32 +1,10 @@
<script setup> <script setup>
import Req from "./Request.vue" import Req from "./Request.vue"
const requests_example = [ { import { getRegisters } from '@/rest/ServiceInscription.js'
id:0,
type:"Inscription", const requests_example = getRegisters();
lastName:"DoefenschmirtzLEMAGNIFIQUE",
firstName:"Jhon",
address: "Radiator Springs",
country: "USA",
birthdate:"2004-02-02",
email:"JohnDoe@gmail.com",
cursus:"IT",
degree:"BAC1",
},
{
id:1,
type:"ReInscription",
lastName:"Doe",
firstName:"Jane",
address: "Radiator Springs",
country: "USA",
birthdate:"2004-03-03",
email:"JaneDoe@gmail.com",
cursus:"Psychology",
degree:"BAC1",
}]
</script> </script>
<template> <template>
<Req v-for="item of requests_example" v-bind="item"> <Req v-for="item of requests_example"/>
</Req>
</template> </template>

View File

@ -7,23 +7,16 @@
const loginPage= ref(true) const loginPage= ref(true)
const page = ref(0) const page = ref(0)
const emailID=ref("")
const passwordIN=ref("")
const submitValue= ref(i18n("login.guest.submit")) const submitValue= ref(i18n("login.guest.submit"))
const surname=ref("") const surname=ref("")
const firstname=ref("") const firstname=ref("")
const passwordOUT=ref("") const password=ref("")
const passwordConfirm=ref("") const passwordConfirm=ref("")
const birthday=ref("") const birthday=ref("")
const emailOUT=ref("") const email=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 registerInfos= [{_surname:surname},{_firstname:firstname},{_birthday:birthday},{_passwordOUT:passwordOUT},
{_passwordConfirm:passwordConfirm},{_emailOUT:emailOUT},{_address:address},{_country:country},{_cursus:cursus}]
const imageSaved = ref(false) const imageSaved = ref(false)
const ppData = ref(false) const ppData = ref(false)
@ -34,17 +27,17 @@
<div class='loginBox'> <div class='loginBox'>
<div v-if="loginPage"> <div v-if="loginPage">
<form @submit.prevent="login(emailID, passwordIN)"class="form"> <form @submit.prevent="login(email, password)"class="form">
<h1 style="color:rgb(239,60,168); font-family: sans-serif;"> <h1 style="color:rgb(239,60,168); font-family: sans-serif;">
{{i18n("login.guest.signin")}} {{i18n("login.guest.signin")}}
</h1> </h1>
<div class="inputBox"> <div class="inputBox">
<p>ID / {{i18n("login.guest.email")}}</p> <p>ID / {{i18n("login.guest.email")}}</p>
<input type="text" v-model="emailID"> <input type="text" v-model="email">
</div> </div>
<div class="inputBox"> <div class="inputBox">
<p>{{i18n("login.guest.password")}}</p> <p>{{i18n("login.guest.password")}}</p>
<input type="password" v-model="passwordIN"> <input type="password" v-model="password">
</div> </div>
<div class="register"> <div class="register">
<a @click="loginPage=!loginPage">{{i18n("login.guest.register")}}</a> <a @click="loginPage=!loginPage">{{i18n("login.guest.register")}}</a>
@ -56,7 +49,7 @@
</div> </div>
<div v-else> <div v-else>
<form @submit.prevent="register(surname,firstname,emailOUT)" class="form"> <form @submit.prevent="register(firstname, surname, birthday, password, mail, address, country, cursus)" class="form">
<h1 style="color:rgb(239,60,168); font-family: sans-serif; text-align:center;"> <h1 style="color:rgb(239,60,168); font-family: sans-serif; text-align:center;">
{{i18n("login.guest.welcome")}} {{i18n("login.guest.welcome")}}
</h1> </h1>
@ -75,11 +68,12 @@
</div> </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="password">
</div> </div>
<div class="inputBox"> <div class="inputBox">
<p>{{i18n("login.guest.confirm")}} {{i18n("login.guest.password")}}</p> <p>{{i18n("login.guest.confirm")}} {{i18n("login.guest.password")}}</p>
<input type="password" v-model="passwordConfirm"> <input type="password" v-model="passwordConfirm">
<!-- TODO: Verify password is same as passwordConfirm -->
</div> </div>
<div class="switchpage"> <div class="switchpage">
@ -93,7 +87,7 @@
<div v-else> <div v-else>
<div class="inputBox"> <div class="inputBox">
<p>{{i18n("login.guest.email")}}</p> <p>{{i18n("login.guest.email")}}</p>
<input type="mail" v-model="emailOUT"> <input type="mail" v-model="email">
</div> </div>
<div class="inputBox"> <div class="inputBox">
<p>{{i18n("login.guest.address")}}</p> <p>{{i18n("login.guest.address")}}</p>

View File

@ -3,28 +3,34 @@
* *
* TODO: On time of writing, the backend doesn't support these endpoints so it could be modified in the future. * 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' import { restGet, restPost } from './restConsumer.js'
/** /**
* create a new register requests that can be recovered by the registering service * 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) * TODO: add info in the Object (I don't know what will be needed)
*/ */
export async function createRegister(){ export async function createRegister(){
return restPost("/requests/register"}); return restPost("/requests/register");
} }
/** /**
* list all register request in a list of Objects * list all register request in a list of Objects
*/ * Shall return a list of
export async function getRegisters(){ * - id
return restGet("/requests/register") * - type
} * - lastName
* - firstName
/** * - address
* Get info on a particular registering request * - country
* - birthdate
* - email
* - cursus
* - degree
*/ */
export async function getRegisters(id){ export async function getRegisters(id){
if(id != null)
return restGet("/requests/register/" + id); return restGet("/requests/register/" + id);
return restGet("/requests/register")
} }
/** /**

View File

@ -4,8 +4,57 @@ export async function login(user, pass, exp){
return restPost("/login", {identifier: user, password: pass, expirationDate: exp}); return restPost("/login", {identifier: user, password: pass, expirationDate: exp});
} }
export async function register(user, pass, mail){ /**
return restPost("/user", {name: user, password: pass, mail: mail}); * Register a user (tokenless)
*
* @param firstname
* @param lastname
* @param birthdate
* @param password
* @param mail
* @param address
* @param country
* @param cursus
* @param imageId id of the image in database returned when uploaded
*/
export async function register(firstname, lastname, birthDate, password, email, address, country, cursus, imageId){
return restPost("/register", {
firstname: firstname,
lastname: lastname,
birthDate: birthDate,
password: password,
email: email,
address: address,
country: country,
cursus: cursus
});
}
/**
* Register a user (by secretary)
*
* @param firstname
* @param lastname
* @param birthdate
* @param password
* @param mail
* @param address
* @param country
* @param imageId id of the image in database returned when uploaded
*
* PS: the password is not is not required as it is generated by the backend and sent to the user
* by mail. it's up to the user to change it if he cares about security
*/
export async function createUser(firstname, lastname, birthDate, email, address, country, role, imageId){
return restPost("/user", {
firstname: firstname,
lastname: lastname,
birthDate: birthDate,
password: password,
email: email,
address: address,
country: country,
});
} }
/** /**