Created signup form

This commit is contained in:
2022-08-23 22:15:01 +02:00
parent 6f245534f0
commit 41b1e8837b
7 changed files with 56 additions and 6 deletions

View File

@@ -16,6 +16,7 @@ import {
GetRootResponse,
LoginResponse,
RefreshResponse,
SignupResponse,
UploadFileResponse
} from '../../dto';
import jwtDecode, { JwtPayload } from 'jwt-decode';
@@ -94,7 +95,7 @@ export const auth_login = (
export const auth_signup = (
username: string,
password: string
): Promise<LoginResponse | ErrorResponse> =>
): Promise<SignupResponse | ErrorResponse> =>
post<AuthSignUpRequest>('/api/auth/signup', {
username: username,
password: password

View File

@@ -1,5 +1,6 @@
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
import LoginView from '@/views/LoginView.vue';
import SignupView from '@/views/SignupView.vue';
import HomeView from '@/views/HomeView.vue';
import AboutView from '@/views/AboutView.vue';
import FSView from '@/views/FSView.vue';
@@ -19,6 +20,11 @@ const routes: Array<RouteRecordRaw> = [
name: 'login',
component: LoginView
},
{
path: '/signup',
name: 'signup',
component: SignupView
},
{
path: '/fs/:node_id',
name: 'fs',

View File

@@ -13,7 +13,7 @@ const jwt = inject<TokenInjectType>('jwt') as TokenInjectType;
async function login() {
if (username.value === '' || password.value === '') {
error.value = 'Username and/or Password missing';
error.value = 'Email and/or Password missing';
return;
}
const res = await auth_login(username.value, password.value);
@@ -38,6 +38,7 @@ async function login() {
<input type="email" placeholder="Email" v-model="username" />
<input type="password" placeholder="Password" v-model="password" />
<button @click="login()">Login</button>
<router-link to="signup">Signup instead?</router-link>
</template>
<style scoped></style>

View File

@@ -0,0 +1,35 @@
<script setup lang="ts">
import { ref } from 'vue';
import { auth_signup, isErrorResponse } from '@/api';
let username = ref('');
let password = ref('');
let password2 = ref('');
const error = ref('');
async function signup() {
if (username.value === '' || password.value === '') {
error.value = 'Email and/or Password missing';
return;
}
if (password.value !== password2.value) {
error.value = "Passwords don't match";
return;
}
const res = await auth_signup(username.value, password.value);
error.value = isErrorResponse(res)
? 'Signup failed: ' + res.message
: 'Signup successful, please wait till an admin unlocks your account.';
}
</script>
<template>
<div v-if="error !== ''" v-text="error"></div>
<input type="email" placeholder="Email" v-model="username" />
<input type="password" placeholder="Password" v-model="password" />
<input type="password" placeholder="Repeat password" v-model="password2" />
<button @click="signup()">Signup</button>
<router-link to="login">Login instead?</router-link>
</template>
<style scoped></style>