PasswordBox/backend/src/index.ts
2024-10-04 11:49:39 +02:00

41 lines
1.2 KiB
TypeScript

import {Elysia} from 'elysia'
import userController from './User/Controller'
import adminController from './admin/Controller'
import passwordController from './password/Controller'
import type { User } from './interfaces/user_interface'
import db from './Database'
import { cors } from '@elysiajs/cors'
const app = new Elysia()
.derive(async ({ headers }) => {
const auth = headers['authorization']
if (!auth) {
return {}
}
const bearer = auth?.startsWith('Bearer ') ? auth.slice(7) : null
const msg = db.query(`select users.id, users.name, users.administrator from users JOIN tokens ON users.id = tokens.user_id WHERE tokens.token = ?;`)
.get(bearer)
console.log(msg)
if(msg == null) {
throw new Response("Invalid token", { status: 401 })
return {}
}
const user: User = {
id: msg.id,
username: msg.username,
name: msg.name,
admin: msg.administrator
}
return { user }
// return user here instead of bearer
})
.get('/', ({ user }) => user)
.group('/user', (app) => app.use(userController))
.group('/admin', (app) => app.use(adminController))
.group('/password', (app) => app.use(passwordController))
.use(cors())
.listen(3000)