- Complete PostgreSQL database schema with 21+ tables - Express.js server with dual authentication (player/admin) - WebSocket support for real-time features - Comprehensive middleware (auth, validation, logging, security) - Game systems: colonies, resources, fleets, research, factions - Plugin-based combat architecture - Admin panel foundation - Production-ready logging and error handling - Docker support and CI/CD ready - Complete project structure following CLAUDE.md patterns 🤖 Generated with Claude Code (https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
48 lines
No EOL
1.6 KiB
JavaScript
48 lines
No EOL
1.6 KiB
JavaScript
/**
|
|
* Player API routes
|
|
*/
|
|
|
|
const express = require('express');
|
|
const { authenticateToken, optionalAuth } = require('../../middleware/auth');
|
|
const { asyncHandler } = require('../../middleware/error-handler');
|
|
|
|
const router = express.Router();
|
|
|
|
// Import route modules
|
|
const authRoutes = require('./auth');
|
|
const profileRoutes = require('./profile');
|
|
const coloniesRoutes = require('./colonies');
|
|
const fleetsRoutes = require('./fleets');
|
|
const researchRoutes = require('./research');
|
|
const galaxyRoutes = require('./galaxy');
|
|
const eventsRoutes = require('./events');
|
|
const notificationsRoutes = require('./notifications');
|
|
|
|
// Public routes (no authentication required)
|
|
router.use('/auth', authRoutes);
|
|
router.use('/galaxy', optionalAuth('player'), galaxyRoutes);
|
|
|
|
// Protected routes (authentication required)
|
|
router.use('/profile', authenticateToken('player'), profileRoutes);
|
|
router.use('/colonies', authenticateToken('player'), coloniesRoutes);
|
|
router.use('/fleets', authenticateToken('player'), fleetsRoutes);
|
|
router.use('/research', authenticateToken('player'), researchRoutes);
|
|
router.use('/events', authenticateToken('player'), eventsRoutes);
|
|
router.use('/notifications', authenticateToken('player'), notificationsRoutes);
|
|
|
|
// Player status endpoint
|
|
router.get('/status', authenticateToken('player'), asyncHandler(async (req, res) => {
|
|
res.json({
|
|
status: 'authenticated',
|
|
player: {
|
|
id: req.user.id,
|
|
username: req.user.username,
|
|
displayName: req.user.display_name,
|
|
userGroup: req.user.user_group,
|
|
lastActive: req.user.last_active_at,
|
|
},
|
|
timestamp: new Date().toISOString(),
|
|
});
|
|
}));
|
|
|
|
module.exports = router; |