12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import { NextRequest, NextResponse } from 'next/server';
- import { getCurrentUser } from '@/lib/auth-middleware';
- import { auth } from '@/lib/auth';
- import { db } from '@/lib/db';
- import { users } from '@/lib/schema';
- import { eq } from 'drizzle-orm';
- export async function GET(request: NextRequest) {
- try {
- // 首先尝试NextAuth session
- const session = await auth();
- if (session?.user?.email) {
- // 从数据库获取完整的用户信息
- const user = await db.query.users.findFirst({
- where: eq(users.email, session.user.email),
- });
- if (user) {
- return NextResponse.json({
- user: {
- id: user.id,
- email: user.email,
- username: user.username,
- isEmailVerified: user.isEmailVerified,
- credits: user.credits || 0,
- subscriptionCredits: user.subscriptionCredits || 0,
- subscriptionStatus: user.subscriptionStatus,
- subscriptionPlan: user.subscriptionPlan,
- subscriptionStartDate: user.subscriptionStartDate?.toISOString() || null,
- subscriptionEndDate: user.subscriptionEndDate?.toISOString() || null,
- },
- });
- }
- }
- // 如果NextAuth session不存在,尝试我们自己的JWT token
- const user = await getCurrentUser(request);
-
- if (!user) {
- return NextResponse.json(
- { error: '未认证用户' },
- { status: 401 }
- );
- }
- return NextResponse.json({
- user: {
- id: user.id,
- email: user.email,
- username: user.username,
- isEmailVerified: user.isEmailVerified,
- credits: user.credits || 0,
- subscriptionCredits: user.subscriptionCredits || 0,
- subscriptionStatus: user.subscriptionStatus,
- subscriptionPlan: user.subscriptionPlan,
- subscriptionStartDate: user.subscriptionStartDate?.toISOString() || null,
- subscriptionEndDate: user.subscriptionEndDate?.toISOString() || null,
- },
- });
- } catch (error) {
- console.error('获取用户信息错误:', error);
- return NextResponse.json(
- { error: '服务器内部错误' },
- { status: 500 }
- );
- }
- }
|