- Add login screen with email/username support - Add register screen with email validation - Implement AuthStore with expo-secure-store (native) / localStorage (web) - Add X-User-Id header authentication (simple auth without JWT) - Rename displayName to userName across codebase - Add findByUserName() to UserRepository - Check for existing email AND username on registration - Add AuthButton component with shadow effect - Add logout button to Header - Add hash-password.js utility script for manual password resets - Update CORS to allow X-User-Id header
26 lines
511 B
TypeScript
26 lines
511 B
TypeScript
import { Request, Response, NextFunction } from "express";
|
|
|
|
export interface AuthenticatedUser {
|
|
userId: string;
|
|
}
|
|
|
|
export interface AuthenticatedRequest extends Request {
|
|
user?: AuthenticatedUser;
|
|
}
|
|
|
|
export function authenticate(
|
|
req: AuthenticatedRequest,
|
|
res: Response,
|
|
next: NextFunction,
|
|
): void {
|
|
const userId = req.headers["x-user-id"];
|
|
|
|
if (!userId || typeof userId !== "string") {
|
|
res.status(401).json({ error: "Unauthorized" });
|
|
return;
|
|
}
|
|
|
|
req.user = { userId };
|
|
next();
|
|
}
|