import { changePassword, loginUser, logoutSession, refreshSession, registerUser, requestPasswordReset, updateProfile, } from "../services/authService.js"; import { clearAuthCookies, setAuthCookies } from "../services/tokenService.js"; import { env } from "../config/env.js"; import { sendSuccess } from "../utils/apiResponse.js"; export async function register(req, res) { const { user, tokens } = await registerUser(req.body, req); setAuthCookies(res, tokens); sendSuccess(res, "Account created", { user }, 201); } export async function login(req, res) { const { user, tokens } = await loginUser(req.body, req); setAuthCookies(res, tokens); sendSuccess(res, "Signed in", { user }); } export async function refresh(req, res) { const refreshToken = req.cookies?.[env.auth.refreshCookieName]; const { user, accessToken, refreshToken: nextRefreshToken, } = await refreshSession(refreshToken, req); setAuthCookies(res, { accessToken, refreshToken: nextRefreshToken }); sendSuccess(res, "Session refreshed", { user }); } export async function me(req, res) { sendSuccess(res, "Authenticated user", { user: req.user }); } export async function logout(req, res) { await logoutSession(req.cookies?.[env.auth.refreshCookieName]); clearAuthCookies(res); sendSuccess(res, "Signed out"); } export async function forgotPassword(req, res) { await requestPasswordReset(req.body.email); sendSuccess(res, "If that email exists, reset instructions will be sent"); } export async function updateCurrentUser(req, res) { const user = await updateProfile(req.user.id, req.body); sendSuccess(res, "Profile updated", { user }); } export async function changeCurrentPassword(req, res) { await changePassword(req.user.id, req.body); sendSuccess(res, "Password changed"); }