- 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
61 lines
1.8 KiB
JavaScript
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");
|
|
}
|