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) => { |
export default defineEventHandler(async (event) => { |
||||
const session = await useWGSession(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 { |
return { |
||||
requiresPassword: true, |
role: user.role, |
||||
authenticated, |
username: user.username, |
||||
}; |
}; |
||||
}); |
}); |
||||
|
@ -1,14 +1,32 @@ |
|||||
export default defineEventHandler(async (event) => { |
export default defineEventHandler(async (event) => { |
||||
const url = getRequestURL(event); |
const url = getRequestURL(event); |
||||
const session = await useWGSession(event); |
const session = await useWGSession(event); |
||||
|
|
||||
if (url.pathname === '/login') { |
if (url.pathname === '/login') { |
||||
if (session.data.authenticated) { |
if (session.data.userId) { |
||||
return sendRedirect(event, '/', 302); |
return sendRedirect(event, '/', 302); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
if (url.pathname === '/') { |
if (url.pathname === '/') { |
||||
if (!session.data.authenticated) { |
if (!session.data.userId) { |
||||
return sendRedirect(event, '/login', 302); |
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