Move endpoints
This commit is contained in:
79
src/routes/account/login/post.ts
Normal file
79
src/routes/account/login/post.ts
Normal file
@@ -0,0 +1,79 @@
|
||||
import { Context } from 'elysia'
|
||||
import { getDatabaseConnection, jsonResponse } from '../../../lib/util'
|
||||
import { users } from '../../../lib/tables'
|
||||
import { eq } from 'drizzle-orm'
|
||||
import bcrypt from 'bcryptjs'
|
||||
|
||||
type Body = {
|
||||
username: string
|
||||
password: string
|
||||
}
|
||||
|
||||
export async function handler (context: Context) {
|
||||
const dbInfo0 = getDatabaseConnection(0)
|
||||
const dbInfo1 = getDatabaseConnection(1)
|
||||
|
||||
if (!dbInfo0 || !dbInfo1)
|
||||
return jsonResponse(
|
||||
{ success: false, message: 'Failed to connect to database', data: null },
|
||||
500
|
||||
)
|
||||
const { connection: connection0, db: db0 } = dbInfo0
|
||||
|
||||
const body = context.body as Body
|
||||
if (!body.username || !body.password) {
|
||||
connection0.end()
|
||||
return jsonResponse(
|
||||
{
|
||||
success: false,
|
||||
message: 'Username and password must be in POST data',
|
||||
data: null
|
||||
},
|
||||
400
|
||||
)
|
||||
}
|
||||
|
||||
const user = await db0
|
||||
.select({
|
||||
id: users.id,
|
||||
username: users.username,
|
||||
password: users.password,
|
||||
token: users.token
|
||||
})
|
||||
.from(users)
|
||||
.where(eq(users.username, body.username))
|
||||
.limit(1)
|
||||
.execute()
|
||||
if (!user[0]) {
|
||||
connection0.end()
|
||||
return jsonResponse(
|
||||
{
|
||||
success: false,
|
||||
message: 'Invalid username or password',
|
||||
data: null
|
||||
},
|
||||
401
|
||||
)
|
||||
}
|
||||
if (!(await bcrypt.compare(body.password, user[0].password))) {
|
||||
connection0.end()
|
||||
return jsonResponse(
|
||||
{
|
||||
success: false,
|
||||
message: 'Invalid username or password',
|
||||
data: null
|
||||
},
|
||||
401
|
||||
)
|
||||
}
|
||||
|
||||
return jsonResponse({
|
||||
success: true,
|
||||
message: null,
|
||||
data: {
|
||||
session: user[0].token,
|
||||
username: user[0].username,
|
||||
id: user[0].id
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user