This commit is contained in:
2026-02-22 18:36:55 +03:00
parent 6e8c068231
commit 2d0bb1c749
3 changed files with 48 additions and 30 deletions

View File

@@ -1,10 +1,11 @@
import { HttpStatusCodes } from './constants.ts'
import { errors } from 'jose'
import type { LoginDto, WebSocketData } from './types/types.ts'
import { createAccessToken, verifyAccessToken } from './utils/jwt.ts'
import { grpcClient } from './grpc/client.ts'
import { config } from './config.ts'
export async function loginRequest(req: Request) {
export async function login(req: Request) {
try {
const body: LoginDto = await req.json()
@@ -36,7 +37,10 @@ export async function loginRequest(req: Request) {
tokenType: 'Bearer',
expires: expires,
},
{ status: HttpStatusCodes.CREATED, headers: { 'Set-Cookie': sessionCookie.toString() } },
{
status: HttpStatusCodes.CREATED,
// headers: { 'Set-Cookie': sessionCookie.toString() }
},
)
} catch (error) {
console.log({ error })
@@ -44,21 +48,35 @@ export async function loginRequest(req: Request) {
}
}
export async function wsRequest(req: Request, server: Bun.Server<WebSocketData>) {
export async function upgrade(req: Request, server: Bun.Server<WebSocketData>) {
const userId = await checkRequest(req)
if (!userId) return new Response('Invalid token', { status: HttpStatusCodes.NOT_FOUND })
const success = server.upgrade(req, { data: { userId: userId } })
if (success) return undefined
return new Response('Upgrade failed', { status: HttpStatusCodes.BAD_REQUEST })
}
async function checkRequest(req: Request) {
try {
const cookieHeader = req.headers.get('cookie') ?? ''
const cookies = new Bun.CookieMap(cookieHeader)
const token = cookies.get('token')
if (!token) return Response.json({ message: 'Invalid token' }, { status: HttpStatusCodes.NOT_FOUND })
const url = new URL(req.url)
const token = url.searchParams.get('token')
if (!token) return null
const payload = await verifyAccessToken(token)
const success = server.upgrade(req, { data: { userId: +payload.sub } })
if (success) return undefined
return new Response('Upgrade failed', { status: HttpStatusCodes.INTERNAL_SERVER_ERROR })
console.log('token', token)
console.log(payload)
return +payload.sub
} catch (error) {
console.log(error)
return new Response('Upgrade failed', { status: HttpStatusCodes.INTERNAL_SERVER_ERROR })
if (error instanceof errors.JWTInvalid) {
console.log('invalid')
}
if (error instanceof errors.JWTExpired) {
console.log('expired')
}
return null
}
}