haixunMaster/lib/auth/accounts.ts

32 lines
941 B
TypeScript
Raw Normal View History

2026-06-21 12:50:31 +00:00
import type { Account } from "@prisma/client";
import { prisma } from "@/lib/db";
import { accountHasThreadsToken } from "@/lib/threads-api";
import { AuthError } from "./session";
export async function getUserAccounts(userId: string) {
return prisma.account.findMany({
where: { userId },
orderBy: { updatedAt: "desc" },
});
}
export async function userHasBoundThreadsAccount(userId: string) {
const count = await prisma.account.count({
where: { userId, threadsUserId: { not: null } },
});
return count > 0;
}
export async function assertAccountOwnedByUser(userId: string, accountId: string) {
const account = await prisma.account.findFirst({
where: { id: accountId, userId },
});
if (!account) {
throw new AuthError("找不到此帳號或無權限存取", 403);
}
return account;
}
export function activeAccountHasThreadsAuth(account: Account | null) {
return accountHasThreadsToken(account);
}