import { getHttpRequestContext } from '@adapters/http/RequestContext';

export type Actor = {
  userId: string;
  driverId: string;
  role?: string | undefined;
};

type AuthenticatedRequest = {
  user?: { userId: string; role?: string };
};

export function getActorFromRequestContext(): Actor {
  const ctx = getHttpRequestContext();
  const req = ctx.req as unknown as AuthenticatedRequest;

  const userId = req.user?.userId;
  if (!userId) {
    throw new Error('Unauthorized');
  }

  // Current canonical mapping:
  // - The authenticated session identity is `userId`.
  // - In the current system, that `userId` is also treated as the performer `driverId`.
  // - Include role from session if available
  return { userId, driverId: userId, role: req.user?.role };
}