Register API and form optimization [depend: backend /register] #93

Merged
tonitch merged 2 commits from tonitch/front/register into master 2024-03-15 14:46:40 +01:00
2 changed files with 60 additions and 17 deletions

View File

@ -5,23 +5,16 @@
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 password=ref("")
const passwordConfirm=ref("")
const birthday=ref("")
const emailOUT=ref("")
const email=ref("")
const address=ref("")
const country=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}]
</script>
@ -31,17 +24,17 @@
<div class='loginBox'>
<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;">
{{i18n("login.guest.signin")}}
</h1>
<div class="inputBox">
<p>ID / {{i18n("login.guest.email")}}</p>
<input type="text" v-model="emailID">
<input type="text" v-model="email">
</div>
<div class="inputBox">
<p>{{i18n("login.guest.password")}}</p>
<input type="password" v-model="passwordIN">
<input type="password" v-model="password">
</div>
<div class="register">
<a @click="loginPage=!loginPage">{{i18n("login.guest.register")}}</a>
@ -53,7 +46,7 @@
</div>
<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;">
{{i18n("login.guest.welcome")}}
</h1>
@ -72,11 +65,12 @@
</div>
<div class="inputBox">
<p>{{i18n("login.guest.password")}}</p>
<input type="password" v-model="passwordOUT">
<input type="password" v-model="password">
</div>
<div class="inputBox">
<p>{{i18n("login.guest.confirm")}} {{i18n("login.guest.password")}}</p>
<input type="password" v-model="passwordConfirm">
<!-- TODO: Verify password is same as passwordConfirm -->
</div>
<div class="switchpage">
@ -90,7 +84,7 @@
<div v-else>
<div class="inputBox">
<p>{{i18n("login.guest.email")}}</p>
<input type="mail" v-model="emailOUT">
<input type="mail" v-model="email">
</div>
<div class="inputBox">
<p>{{i18n("login.guest.address")}}</p>

View File

@ -4,8 +4,57 @@ export async function login(user, pass, 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", {
Maxime marked this conversation as resolved
Review

ProfilePictureUrl pas présent ?

ProfilePictureUrl pas présent ?
Review

car de mémoire tu postais l'image directe je te retournais l'URL comme ça tu la postais

car de mémoire tu postais l'image directe je te retournais l'URL comme ça tu la postais
Review

c'est parce que j'avais fait ça avant qu'on parle des pp 👉👈

c'est parce que j'avais fait ça avant qu'on parle des pp 👉👈
Review

@Maxime Le problème c'est que si tu me retourne l'url tu vas pas pouvoir le lier à la db
faudrait du coup me retourner l'id que je te retourne. Ce qui n'est pas ouf non plus mais bon. en vrai autant ne pas trop se casser la tête

@Maxime Le problème c'est que si tu me retourne l'url tu vas pas pouvoir le lier à la db faudrait du coup me retourner l'id que je te retourne. Ce qui n'est pas ouf non plus mais bon. en vrai autant ne pas trop se casser la tête
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,
Review

pas necessairement de cursus, surtout dans le cadre où le secrétariat postent les teachers

(surtout que les users on pas de cursus)

pas necessairement de cursus, surtout dans le cadre où le secrétariat postent les teachers (surtout que les users on pas de cursus)
birthDate: birthDate,
Review
same that https://git.herisson.ovh/PGL/Clyde/pulls/93/files#issuecomment-1637
password: password,
email: email,
address: address,
country: country,
});
}
/**