add Analyse
This commit is contained in:
@@ -7,35 +7,13 @@ import {
|
||||
createInviteToken, getInviteToken, useInviteToken,
|
||||
getInvitesByUser, getAllUsers, getInviteStats
|
||||
} from '../db.js';
|
||||
import { authMiddleware, adminMiddleware } from '../middleware.js';
|
||||
import { trackEvent } from '../analytics-db.js';
|
||||
|
||||
const router = Router();
|
||||
const JWT_SECRET = process.env.JWT_SECRET || 'tiktok-rezepte-secret-key-change-in-production';
|
||||
const JWT_EXPIRES_IN = '7d';
|
||||
|
||||
function authMiddleware(req, res, next) {
|
||||
const authHeader = req.headers.authorization;
|
||||
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
||||
return res.status(401).json({ error: 'Nicht authentifiziert' });
|
||||
}
|
||||
try {
|
||||
const token = authHeader.split(' ')[1];
|
||||
const decoded = jwt.verify(token, JWT_SECRET);
|
||||
const user = getUserByUsername(decoded.username);
|
||||
if (!user) return res.status(401).json({ error: 'Benutzer nicht gefunden' });
|
||||
req.user = user;
|
||||
next();
|
||||
} catch {
|
||||
res.status(401).json({ error: 'Ungültiges Token' });
|
||||
}
|
||||
}
|
||||
|
||||
function adminMiddleware(req, res, next) {
|
||||
if (!req.user || !req.user.is_admin) {
|
||||
return res.status(403).json({ error: 'Keine Berechtigung' });
|
||||
}
|
||||
next();
|
||||
}
|
||||
|
||||
router.post('/register', async (req, res) => {
|
||||
try {
|
||||
const { username, password, inviteToken } = req.body;
|
||||
@@ -69,6 +47,8 @@ router.post('/register', async (req, res) => {
|
||||
const user = createUser(username, hashedPassword);
|
||||
useInviteToken(inviteToken, user.id);
|
||||
|
||||
trackEvent('user_register', user.id, { username: user.username });
|
||||
|
||||
const token = jwt.sign({ id: user.id, username: user.username }, JWT_SECRET, { expiresIn: JWT_EXPIRES_IN });
|
||||
|
||||
res.status(201).json({ user, token });
|
||||
@@ -97,6 +77,8 @@ router.post('/login', async (req, res) => {
|
||||
|
||||
const token = jwt.sign({ id: user.id, username: user.username }, JWT_SECRET, { expiresIn: JWT_EXPIRES_IN });
|
||||
|
||||
trackEvent('user_login', user.id, { username: user.username });
|
||||
|
||||
res.json({
|
||||
user: { id: user.id, username: user.username, is_admin: !!user.is_admin, created_at: user.created_at },
|
||||
token,
|
||||
|
||||
Reference in New Issue
Block a user