mirror of https://github.com/wg-easy/wg-easy
8 changed files with 49 additions and 21 deletions
@ -0,0 +1,5 @@ |
|||
<template> |
|||
<div>Admin Area</div> |
|||
</template> |
|||
|
|||
<script setup lang="ts"></script> |
@ -1,9 +1,22 @@ |
|||
export default defineEventHandler(async (event) => { |
|||
const session = await useWGSession(event); |
|||
const authenticated = session.data.authenticated; |
|||
|
|||
if (!session.data.userId) { |
|||
throw createError({ |
|||
statusCode: 401, |
|||
statusMessage: 'Not logged in', |
|||
}); |
|||
} |
|||
const user = await Database.user.findById(session.data.userId); |
|||
if (!user) { |
|||
throw createError({ |
|||
statusCode: 404, |
|||
statusMessage: 'Not found in Database', |
|||
}); |
|||
} |
|||
|
|||
return { |
|||
requiresPassword: true, |
|||
authenticated, |
|||
role: user.role, |
|||
username: user.username, |
|||
}; |
|||
}); |
|||
|
@ -1,14 +1,32 @@ |
|||
export default defineEventHandler(async (event) => { |
|||
const url = getRequestURL(event); |
|||
const session = await useWGSession(event); |
|||
|
|||
if (url.pathname === '/login') { |
|||
if (session.data.authenticated) { |
|||
if (session.data.userId) { |
|||
return sendRedirect(event, '/', 302); |
|||
} |
|||
} |
|||
|
|||
if (url.pathname === '/') { |
|||
if (!session.data.authenticated) { |
|||
if (!session.data.userId) { |
|||
return sendRedirect(event, '/login', 302); |
|||
} |
|||
} |
|||
|
|||
if (url.pathname === '/admin') { |
|||
if (!session.data.userId) { |
|||
return sendRedirect(event, '/login', 302); |
|||
} |
|||
const user = await Database.user.findById(session.data.userId); |
|||
if (!user) { |
|||
return sendRedirect(event, '/login', 302); |
|||
} |
|||
if (!user.enabled || user.role !== 'ADMIN') { |
|||
throw createError({ |
|||
statusCode: 403, |
|||
statusMessage: 'Not allowed to access Admin Panel', |
|||
}); |
|||
} |
|||
} |
|||
}); |
|||
|
Loading…
Reference in new issue