chore: update src/lib/auth.ts
swadhinbiswas committed 8 months ago
127b348
1 parent d1173c4
commit 127b348
1 file changed
+18 -10
Showing 1 changed file+18-10
▼src/lib/auth.ts
+18-10
| @@ -11,7 +11,7 @@ import type { NodePgDatabase } from "drizzle-orm/node-postgres"; | ||
11 | 11 | import { getDatabase, schema } from "@/db"; |
12 | 12 | import { eq, and, or } from "drizzle-orm"; |
13 | 13 | import { generateId, now } from "./utils"; |
14 | -import { canReadRepo } from "@/lib/permissions"; | |
14 | +import { getRepoPermission } from "@/lib/permissions"; | |
15 | 15 | import { hashPersonalAccessToken, verifyPersonalAccessTokenValue } from "@/lib/personal-access-token"; |
16 | 16 | |
17 | 17 | // Types |
| @@ -358,8 +358,8 @@ export async function getRepoAndUser( | ||
358 | 358 | repoName: string |
359 | 359 | ) { |
360 | 360 | const db = getDatabase(); |
361 | - const user = await getUserFromRequest(request); | |
362 | - const userId = user?.userId; | |
361 | + const tokenUser = await getUserFromRequest(request); | |
362 | + const userId = tokenUser?.userId; | |
363 | 363 | |
364 | 364 | // 1. Get Repo Owner |
365 | 365 | const repoOwner = await db.query.users.findFirst({ |
| @@ -374,20 +374,28 @@ export async function getRepoAndUser( | ||
374 | 374 | eq(schema.repositories.ownerId, repoOwner.id), |
375 | 375 | eq(schema.repositories.name, repoName) |
376 | 376 | ), |
377 | + with: { | |
378 | + owner: true, | |
379 | + }, | |
377 | 380 | }); |
378 | 381 | |
379 | 382 | if (!repository) return null; |
380 | 383 | |
381 | 384 | // 3. Check Permissions |
382 | - const permission = await canReadRepo(userId, repository); | |
383 | - if (!permission) return null; | |
385 | + const permission = await getRepoPermission(userId, repository, { | |
386 | + isAdmin: tokenUser?.isAdmin, | |
387 | + }); | |
388 | + if (permission === "none") return null; | |
389 | + | |
390 | + const requester = userId | |
391 | + ? await db.query.users.findFirst({ | |
392 | + where: eq(schema.users.id, userId), | |
393 | + }) | |
394 | + : null; | |
384 | 395 | |
385 | 396 | return { |
386 | 397 | repository, |
387 | - user: repoOwner, | |
388 | - permission: typeof permission === 'string' ? permission : 'read' // canReadRepo returns boolean or string? It usually returns boolean. | |
389 | - // Wait, let's check canReadRepo signature if possible, but assuming boolean for now. | |
390 | - // If canReadRepo returns boolean, we might want to fetch actual permission level if needed. | |
391 | - // But for now, basic check is enough. | |
398 | + user: requester, | |
399 | + permission, | |
392 | 400 | }; |
393 | 401 | } |
394 | 402 | |