add teacher and admin portals

This commit is contained in:
SowinskiBraeden committed 2023-01-11 11:03:25 -08:00
1 parent e3a01ef9d1
commit 32052982c1
8 files changed
+160 -7

No files matched your search

+1 -5
View File
@@ -17,7 +17,7 @@
},
methods: {
logout() {
const res = fetch(`${this.API_URL}/logout`, {
fetch(`${this.API_URL}/logout`, {
method: 'POST',
credentials: 'include',
headers: {
@@ -29,10 +29,6 @@
status: response.status,
})).then(res => res)
);
// if (res.status != 200) // do something
if (res.data.success) this.$router.push('/');
}
}
}
+1
View File
@@ -4,6 +4,7 @@
-->
<template>
<div>
<router-link to="/">Home</router-link>
<h1 style="text-transform: capitalize;">{{user}} login</h1>
<form @submit.prevent="login">
<input v-model="uid" :placeholder="user.charAt(0).toUpperCase() + user.slice(1) + ' ID'"/>
+21 -1
View File
@@ -24,7 +24,27 @@ const routes = [
path: '/student/dashboard',
name: 'studentDashboard',
component: () => import('../views/StudentDashboard.vue')
}
},
{
path: '/teacher/login',
name: 'teacherLogin',
component: () => import('../views/TeacherLogin.vue')
},
{
path: '/teacher/dashboard',
name: 'teacherDashboard',
component: () => import('../views/TeacherDashboard.vue')
},
{
path: '/admin/login',
name: 'adminLogin',
component: () => import('../views/AdminLogin.vue')
},
{
path: '/admin/dashboard',
name: 'adminDashboard',
component: () => import('../views/AdminDashboard.vue')
},
]
const router = createRouter({
+51
View File
@@ -0,0 +1,51 @@
<template>
<DashboardNav />
<h1>Admin Dashboard</h1>
<UserModel v-if="admin!={}" :user="admin" :uid="admin.aid"/>
</template>
<script>
import UserModel from '@/components/UserModel.vue';
import DashboardNav from '@/components/DashboardNav.vue';
export default {
name: 'AdminDashboard',
components: {
UserModel,
DashboardNav,
},
data: () => {
return {
API_URL: process.env.VUE_APP_API_URL,
admin: {},
message: "", // where we store any error messages etc.
};
},
methods: {
async isAuthenticated() {
const res = await fetch(`${this.API_URL}/admin`, {
method: 'GET',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
}
}).then(response =>
response.json().then(data => ({
data: data,
status: response.status,
})).then(res => res)
);
// if (!res.status == 200) // do something
if (res.data.success) {
// set local data
this.admin = res.data.result;
} else this.$router.push('/admin/login');
}
},
created() {
this.isAuthenticated()
}
}
</script>
+16
View File
@@ -0,0 +1,16 @@
<template>
<div>
<LoginComp user="admin"/>
</div>
</template>
<script>
import LoginComp from '@/components/LoginComp.vue'
export default {
name: 'AdminLogin',
components: {
LoginComp,
},
};
</script>
+1 -1
View File
@@ -1,6 +1,6 @@
<template>
<DashboardNav />
<h1>Dashboard</h1>
<h1>Student Dashboard</h1>
<UserModel v-if="student!={}" :user="student" :photo="photo" :uid="student.School.sid"/>
</template>
+53
View File
@@ -0,0 +1,53 @@
<template>
<DashboardNav />
<h1>Teacher Dashboard</h1>
<UserModel v-if="teacher!={}" :user="teacher" :photo="photo" :uid="teacher.School.tid"/>
</template>
<script>
import UserModel from '@/components/UserModel.vue';
import DashboardNav from '@/components/DashboardNav.vue';
export default {
name: 'TeacherDashboard',
components: {
UserModel,
DashboardNav,
},
data: () => {
return {
API_URL: process.env.VUE_APP_API_URL,
teacher: {},
photo: {},
message: "", // where we store any error messages etc.
};
},
methods: {
async isAuthenticated() {
const res = await fetch(`${this.API_URL}/teacher`, {
method: 'GET',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
}
}).then(response =>
response.json().then(data => ({
data: data,
status: response.status,
})).then(res => res)
);
// if (!res.status == 200) // do something
if (res.data.success) {
// set local data
this.teacher = res.data.response.teacher;
this.photo = res.data.response.photo;
} else this.$router.push('/teacher/login');
}
},
created() {
this.isAuthenticated()
}
}
</script>
+16
View File
@@ -0,0 +1,16 @@
<template>
<div>
<LoginComp user="teacher"/>
</div>
</template>
<script>
import LoginComp from '@/components/LoginComp.vue'
export default {
name: 'TeacherLogin',
components: {
LoginComp,
},
};
</script>