Mom-Portal/backend/src/controllers/authController.js
KevinB-T 30894e7f27 Configure VM services and fix auth flow
- point MySQL and Whisper settings to the VM
- add VM MySQL bootstrap scripts and docs
- allow LAN Vite origins for CORS
- fix Express 5 validation assignment crash
- allow login with username or email
- prevent recursive auth refresh retries
2026-05-15 15:19:49 +05:30

61 lines
1.8 KiB
JavaScript

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");
}