feat: бронирование товаров и сброс пароля по email
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+25
-1
@@ -6,6 +6,7 @@ const { requireAuth } = require('../middleware/auth');
|
||||
const { requireCookieConsent } = require('../middleware/cookieConsent');
|
||||
const { ROLE_LABELS } = require('../constants/roles');
|
||||
const { asyncHandler } = require('../utils/asyncHandler');
|
||||
const { expireOldReservations } = require('../services/reservations');
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
@@ -35,12 +36,22 @@ async function verifyPassword(userId, password) {
|
||||
}
|
||||
|
||||
function accountRender(res, options) {
|
||||
const { user, orderCount, error, success, activeTab } = options;
|
||||
const {
|
||||
user,
|
||||
orderCount,
|
||||
reservations,
|
||||
error,
|
||||
success,
|
||||
activeTab,
|
||||
formatPrice,
|
||||
} = options;
|
||||
res.render('account/index', {
|
||||
title: 'Личный кабинет',
|
||||
user,
|
||||
orderCount,
|
||||
reservations: reservations || [],
|
||||
roleLabels: ROLE_LABELS,
|
||||
formatPrice: formatPrice || res.locals.formatPrice,
|
||||
error: error || null,
|
||||
success: success || null,
|
||||
activeTab: activeTab || 'profile',
|
||||
@@ -51,14 +62,27 @@ router.get(
|
||||
'/',
|
||||
requireAuth,
|
||||
asyncHandler(async (req, res) => {
|
||||
await expireOldReservations();
|
||||
const user = await loadAccountUser(req.session.userId);
|
||||
const countResult = await query(
|
||||
'SELECT COUNT(*)::int AS n FROM orders WHERE user_id = $1',
|
||||
[user.id]
|
||||
);
|
||||
|
||||
const { rows: reservations } = await query(
|
||||
`SELECT r.*, p.name AS product_name, p.slug AS product_slug, p.price_cents, p.image_url
|
||||
FROM reservations r
|
||||
JOIN products p ON p.id = r.product_id
|
||||
WHERE r.user_id = $1
|
||||
ORDER BY r.created_at DESC`,
|
||||
[user.id]
|
||||
);
|
||||
|
||||
accountRender(res, {
|
||||
user,
|
||||
orderCount: countResult.rows[0].n,
|
||||
reservations,
|
||||
formatPrice,
|
||||
success: req.query.success ? decodeURIComponent(String(req.query.success)) : null,
|
||||
error: req.query.error ? decodeURIComponent(String(req.query.error)) : null,
|
||||
activeTab: req.query.tab || 'profile',
|
||||
|
||||
Reference in New Issue
Block a user