</div>
<!-- username and password forms -->
- <div id="registerBox">
+ <form id="registerBox" @submit.prevent="submit">
<!-- username -->
- <input class="input" type="text" v-model="email" placeholder="email" />
+ <input class="input" type="text" v-model="email" placeholder="email" required/>
<!-- password -->
- <input class="input" type="password" v-model="password" placeholder="Password" />
+ <input class="input" type="password" v-model="password" placeholder="Password" required/>
<!-- re-enter passoword -->
- <input class="input" type="text" v-model="password2" placeholder="Re-enter password" />
- </div>
+ <input class="input" type="password" v-model="password2" placeholder="Re-enter password" required/>
+
+ <!-- submit button; position: fixed -->
+ <button class="button" type="submit">Submit</button>
- <!-- submit button; position: fixed -->
- <button class="button" @click.prevent="submit">Submit</button>
+ </form>
<!-- back to login button: position: fixed -->
<button class="button2" @click.prevent="switchView">Back to login</button>
+
</div>
</template>
const { setToken } = useAuth();
const router = useRouter();
+ const re = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
+
+ const passwordMatch = () => {
+ let match = false;
+ if (password.value == password2.value) {
+ match = true;
+ }
+ return match;
+ }
+
+ const validate = () => {
+ let valid = false;
+ if (re.test(email.value) && passwordMatch()) {
+ valid = true;
+ }
+ return valid;
+ }
+
const submit = async () => {
const payload: RegisterPayload = {
email: email.value,
password: password.value,
};
-
- try {
- await invoke(payload);
- setToken(data.value, true);
- router.push({ name: "home" });
- } catch(e) {
- console.log('Failed to register.')
+
+ if (validate()) {
+ try {
+ await invoke(payload);
+ setToken(data.value, true);
+ router.push({ name: "home" });
+ } catch(e) {
+ console.log('Failed to register.')
+ }
}
};
return {
email,
password,
+ password2,
switchView,
submit,
};