diff --git a/package.json b/package.json
index a63c0e8..4c403fe 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
},
"dependencies": {
"@popperjs/core": "2.11.5",
+ "axios": "^1.6.8",
"bootstrap": "5.1.3",
"pinia": "2.0.14",
"prismjs": "1.28.0",
diff --git a/src/router/constants.js b/src/router/constants.js
new file mode 100644
index 0000000..cee1edb
--- /dev/null
+++ b/src/router/constants.js
@@ -0,0 +1,5 @@
+export const Role = {
+ Admin: 'admin',
+ User: 'user',
+ Guest: 'guest',
+ };
\ No newline at end of file
diff --git a/src/router/index.js b/src/router/index.js
index 6257f01..3e9606e 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -23,6 +23,12 @@ import ElDropdowns from "../layouts/sections/elements/dropdowns/DropdownsView.vu
import ElProgressBars from "../layouts/sections/elements/progress-bars/ProgressBarsView.vue";
import ElToggles from "../layouts/sections/elements/toggles/TogglesView.vue";
import ElTypography from "../layouts/sections/elements/typography/TypographyView.vue";
+
+ import AdminLoginView from "../views/Auth/AdminLogin.vue";
+ import UserLoginView from "../views/Auth/UserLogin.vue";
+// import AdminView from "../views/LandingPages/Author/AuthorView.vue";
+import { Role } from './constants';
+
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
@@ -30,6 +36,7 @@ const router = createRouter({
path: "/",
name: "presentation",
component: PresentationView,
+ //meta: { requiresAuth: true, requiredRole: Role.Admin },
},
{
path: "/pages/landing-pages/about-us",
@@ -146,7 +153,64 @@ const router = createRouter({
name: "el-typography",
component: ElTypography,
},
- ],
-});
-
-export default router;
+
+ {
+ path: '/admin/auth',
+ component: AdminLoginView,
+ name: "admin-login",
+ },
+ // {
+ // path: "/unauthorized",
+ // name: "unauthorized",
+ // component: UnauthorizedView,
+ // },
+ {
+ path: "/user/login",
+ name: "user-login",
+ component: UserLoginView,
+ },
+
+ ],
+ });
+
+
+ function isAuthenticated() {
+ // Check if the user is authenticated, e.g., by verifying the presence of a valid token or logged-in state
+ // Return true if authenticated, false otherwise
+ // Example: return localStorage.getItem('token') !== null;
+
+ return true;
+ }
+
+ function getCurrentUserRole() {
+ // Retrieve the current user's role from your authentication system or state management
+ // Return the role of the current user
+ // Example: return localStorage.getItem('userRole');
+ return "guest";
+ }
+
+ // Route guard
+ router.beforeEach((to, from, next) => {
+ if (to.meta.requiresAuth) {
+ // Check if the user is authenticated, e.g., by checking the presence of a valid token or logged-in state
+ if (isAuthenticated()) {
+ // Check if the user has the required role
+ if (to.meta.requiredRole && getCurrentUserRole() !== to.meta.requiredRole) {
+ // Redirect to a different route or show an error message
+ next({ path: '/unauthorized' });
+ } else {
+ // Proceed to the requested route
+ next();
+ }
+ } else {
+ // Redirect to the login page or a suitable route for unauthenticated users
+ next({ path: '/logout' });
+ }
+ } else {
+ // No authentication required for the route
+ next();
+ }
+ });
+
+ export default router;
+
\ No newline at end of file
diff --git a/src/views/Auth/AdminLogin.vue b/src/views/Auth/AdminLogin.vue
new file mode 100644
index 0000000..450c696
--- /dev/null
+++ b/src/views/Auth/AdminLogin.vue
@@ -0,0 +1,99 @@
+
+
+
+
diff --git a/src/views/Auth/UserLogin.vue b/src/views/Auth/UserLogin.vue
new file mode 100644
index 0000000..868347b
--- /dev/null
+++ b/src/views/Auth/UserLogin.vue
@@ -0,0 +1,171 @@
+
+
+
+
+