Created signup form
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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>
|
||||
|
||||
35
frontend/src/views/SignupView.vue
Normal file
35
frontend/src/views/SignupView.vue
Normal 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>
|
||||
Reference in New Issue
Block a user