src/app/api/mobile/session/route.ts

route·app·1.7 KB · 63 lignes· Voir l'itinéraire
Annotation non disponible

Lance npm run annotate (nécessite ANTHROPIC_API_KEY dans .env.local) pour générer une annotation française par Claude Haiku 4.5.

1 export

GET

Code source· typescript

import { NextRequest, NextResponse } from "next/server";
import { getSessionFromRequest } from "@/lib/auth/session";
import { prisma } from "@/lib/prisma/client";

export async function GET(req: NextRequest) {
  try {
    const session = await getSessionFromRequest(req);
    if (!session || session.role !== "CLIENT") {
      return NextResponse.json({ connected: false }, { status: 401 });
    }

    const client = await prisma.clientAccount.findUnique({
      where: { id: session.userId },
      select: {
        id: true,
        email: true,
        phone: true,
        nom: true,
        prenom: true,
        photoUrl: true,
        motDePasseHash: true,
        lastSeenAt: true,
      },
    });

    if (!client) return NextResponse.json({ connected: false }, { status: 401 });

    let tenant = null;
    if (session.tenantId) {
      tenant = await prisma.tenant.findUnique({
        where: { subdomain: session.tenantId },
        select: {
          id: true,
          subdomain: true,
          nom: true,
          logoUrl: true,
          whatsapp: true,
          actif: true,
        },
      });
    }

    return NextResponse.json({
      connected: true,
      user: {
        id: client.id,
        email: client.email ?? null,
        phone: client.phone ?? null,
        nom: client.nom ?? null,
        prenom: client.prenom ?? null,
        photoUrl: client.photoUrl ?? null,
        hasPassword: !!client.motDePasseHash,
        role: "CLIENT",
        tenantId: session.tenantId ?? null,
      },
      tenant,
    });
  } catch (e) {
    console.error("mobile/session error:", e);
    return NextResponse.json({ connected: false }, { status: 500 });
  }
}