Fix jwt-token
This commit is contained in:
@@ -27,3 +27,8 @@ RATE_LIMIT_MAX_REQUESTS=100
|
||||
|
||||
# CORS Configuration
|
||||
CORS_ORIGIN=http://localhost:3000
|
||||
|
||||
# Debug Configuration
|
||||
STORE_HEARTBEATS=false
|
||||
STORE_DRONE_TYPE0=false
|
||||
LOG_ALL_DETECTIONS=false
|
||||
|
||||
@@ -100,74 +100,6 @@ router.get('/', authenticateToken, async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* GET /api/detections/:id
|
||||
* Get a specific detection by ID
|
||||
*/
|
||||
router.get('/:id', authenticateToken, async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
|
||||
const detection = await DroneDetection.findByPk(id, {
|
||||
include: [{
|
||||
model: Device,
|
||||
as: 'device',
|
||||
attributes: ['id', 'name', 'geo_lat', 'geo_lon', 'location_description', 'is_approved']
|
||||
}]
|
||||
});
|
||||
|
||||
if (!detection) {
|
||||
return res.status(404).json({ error: 'Detection not found' });
|
||||
}
|
||||
|
||||
// Enhance detection with drone type information
|
||||
const droneTypeInfo = getDroneTypeInfo(detection.drone_type);
|
||||
const enhancedDetection = {
|
||||
...detection.toJSON(),
|
||||
drone_type_info: droneTypeInfo
|
||||
};
|
||||
|
||||
res.json(enhancedDetection);
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error fetching detection:', error);
|
||||
res.status(500).json({
|
||||
error: 'Failed to fetch detection',
|
||||
details: error.message
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* DELETE /api/detections/:id
|
||||
* Delete a specific detection (admin only)
|
||||
*/
|
||||
router.delete('/:id', authenticateToken, async (req, res) => {
|
||||
try {
|
||||
// Check if user is admin
|
||||
if (req.user.role !== 'admin') {
|
||||
return res.status(403).json({ error: 'Admin access required' });
|
||||
}
|
||||
|
||||
const { id } = req.params;
|
||||
|
||||
const detection = await DroneDetection.findByPk(id);
|
||||
if (!detection) {
|
||||
return res.status(404).json({ error: 'Detection not found' });
|
||||
}
|
||||
|
||||
await detection.destroy();
|
||||
res.json({ message: 'Detection deleted successfully' });
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error deleting detection:', error);
|
||||
res.status(500).json({
|
||||
error: 'Failed to delete detection',
|
||||
details: error.message
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* GET /api/detections/debug
|
||||
* Get all detections including drone type 0 (None) for debugging purposes
|
||||
@@ -271,4 +203,72 @@ router.get('/debug', authenticateToken, async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* GET /api/detections/:id
|
||||
* Get a specific detection by ID
|
||||
*/
|
||||
router.get('/:id', authenticateToken, async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
|
||||
const detection = await DroneDetection.findByPk(id, {
|
||||
include: [{
|
||||
model: Device,
|
||||
as: 'device',
|
||||
attributes: ['id', 'name', 'geo_lat', 'geo_lon', 'location_description', 'is_approved']
|
||||
}]
|
||||
});
|
||||
|
||||
if (!detection) {
|
||||
return res.status(404).json({ error: 'Detection not found' });
|
||||
}
|
||||
|
||||
// Enhance detection with drone type information
|
||||
const droneTypeInfo = getDroneTypeInfo(detection.drone_type);
|
||||
const enhancedDetection = {
|
||||
...detection.toJSON(),
|
||||
drone_type_info: droneTypeInfo
|
||||
};
|
||||
|
||||
res.json(enhancedDetection);
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error fetching detection:', error);
|
||||
res.status(500).json({
|
||||
error: 'Failed to fetch detection',
|
||||
details: error.message
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* DELETE /api/detections/:id
|
||||
* Delete a specific detection (admin only)
|
||||
*/
|
||||
router.delete('/:id', authenticateToken, async (req, res) => {
|
||||
try {
|
||||
// Check if user is admin
|
||||
if (req.user.role !== 'admin') {
|
||||
return res.status(403).json({ error: 'Admin access required' });
|
||||
}
|
||||
|
||||
const { id } = req.params;
|
||||
|
||||
const detection = await DroneDetection.findByPk(id);
|
||||
if (!detection) {
|
||||
return res.status(404).json({ error: 'Detection not found' });
|
||||
}
|
||||
|
||||
await detection.destroy();
|
||||
res.json({ message: 'Detection deleted successfully' });
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error deleting detection:', error);
|
||||
res.status(500).json({
|
||||
error: 'Failed to delete detection',
|
||||
details: error.message
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
||||
@@ -9,8 +9,9 @@ const { getDroneTypeInfo, getDroneTypeName } = require('../utils/droneTypes');
|
||||
|
||||
// Configuration for debugging and data storage
|
||||
const DEBUG_CONFIG = {
|
||||
storeNoneDetections: process.env.STORE_NONE_DETECTIONS === 'true', // Store drone_type 0 for debugging
|
||||
logAllDetections: process.env.LOG_ALL_DETECTIONS === 'true' // Log all detections including type 0
|
||||
storeHeartbeats: process.env.STORE_HEARTBEATS === 'true', // Store heartbeat data for debugging
|
||||
storeNoneDetections: process.env.STORE_DRONE_TYPE0 === 'true', // Store drone_type 0 for debugging
|
||||
logAllDetections: process.env.LOG_ALL_DETECTIONS === 'true' // Log all detection data
|
||||
};
|
||||
|
||||
// Initialize services
|
||||
|
||||
Reference in New Issue
Block a user