wip
This commit is contained in:
@@ -1,48 +1,55 @@
|
||||
import { HttpStatusCodes } from './constants.ts'
|
||||
import { errors } from 'jose'
|
||||
import type { LoginDto, WebSocketData } from './types/types.ts'
|
||||
import type { LoginDto, WebSocketCtx, WebSocketData } from './types/types.ts'
|
||||
import { createAccessToken, verifyAccessToken } from './utils/jwt.ts'
|
||||
import { grpcClient as client } from './grpc/client.ts'
|
||||
import { config } from './config.ts'
|
||||
import { messageService } from './grpc/message.ts'
|
||||
|
||||
export async function login(req: Request) {
|
||||
try {
|
||||
const body: LoginDto = await req.json()
|
||||
export const handlers = {
|
||||
async getVersion() {
|
||||
try {
|
||||
const res = await messageService.getVersion()
|
||||
return Response.json(res)
|
||||
} catch (error) {
|
||||
return Response.json({ message: 'Error' }, { status: HttpStatusCodes.BAD_REQUEST })
|
||||
}
|
||||
},
|
||||
async login(req: Request) {
|
||||
try {
|
||||
const body: LoginDto = await req.json()
|
||||
|
||||
const versionResponse = await client.getVersion({})
|
||||
console.log(versionResponse?.data)
|
||||
const { email } = body
|
||||
if (!email) return Response.json({ message: 'email required' }, { status: HttpStatusCodes.BAD_REQUEST })
|
||||
|
||||
const { email } = body
|
||||
if (!email) return Response.json({ message: 'email required' }, { status: HttpStatusCodes.BAD_REQUEST })
|
||||
const userResponse = await messageService.getUserByEmail({ email: body.email })
|
||||
const user = userResponse.data
|
||||
if (!user) return Response.json({ message: 'Invalid email or password' }, { status: HttpStatusCodes.NOT_FOUND })
|
||||
|
||||
const userResponse = await client.getUserByEmail({ email: body.email })
|
||||
const user = userResponse.data
|
||||
const accessToken = await createAccessToken(user.id, user.email)
|
||||
const expires = new Date(Date.now() + config.cookieExpiry * 1000)
|
||||
|
||||
if (!user) return Response.json({ message: 'Invalid email or password' }, { status: HttpStatusCodes.NOT_FOUND })
|
||||
|
||||
const accessToken = await createAccessToken(user.id, user.email)
|
||||
|
||||
const expires = new Date(Date.now() + config.cookieExpiry * 1000)
|
||||
return Response.json(
|
||||
{
|
||||
accessToken: accessToken.token,
|
||||
tokenType: 'Bearer',
|
||||
expires: expires,
|
||||
},
|
||||
{ status: HttpStatusCodes.CREATED },
|
||||
)
|
||||
} catch (error) {
|
||||
console.log({ error })
|
||||
return Response.json({ message: 'Login failed' }, { status: HttpStatusCodes.BAD_REQUEST })
|
||||
}
|
||||
return Response.json(
|
||||
{
|
||||
accessToken: accessToken.token,
|
||||
tokenType: 'Bearer',
|
||||
expires: expires,
|
||||
},
|
||||
{ status: HttpStatusCodes.CREATED },
|
||||
)
|
||||
} catch (error) {
|
||||
console.log({ error })
|
||||
return Response.json({ message: 'Login failed' }, { status: HttpStatusCodes.BAD_REQUEST })
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
export async function upgrade(req: Request, server: Bun.Server<WebSocketData>) {
|
||||
export async function upgrade(req: Request, server: Bun.Server<WebSocketCtx>) {
|
||||
const payload = await checkRequest(req)
|
||||
if (!payload) return new Response('Invalid token', { status: HttpStatusCodes.NOT_FOUND })
|
||||
|
||||
const success = server.upgrade(req, { data: { userId: +payload.sub, email: payload.email } })
|
||||
if (success) return undefined
|
||||
|
||||
return new Response('Upgrade failed', { status: HttpStatusCodes.BAD_REQUEST })
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user