58 lines
2.0 KiB
JavaScript
58 lines
2.0 KiB
JavaScript
'use strict';
|
|
|
|
module.exports = function (app) {
|
|
const router = require('express').Router(),
|
|
{ authAllowAdmin } = require('../middlewares/validate'),
|
|
partnerCtl = require('../controllers/partner'),
|
|
mongoose = require('mongoose');
|
|
|
|
// Middleware to validate ObjectId
|
|
const validateObjectId = (req, res, next) => {
|
|
const { id } = req.params;
|
|
if (id && !mongoose.Types.ObjectId.isValid(id)) {
|
|
return res.status(400).json({ error: 'Invalid ID format' });
|
|
}
|
|
next();
|
|
};
|
|
|
|
// Partner organization routes - follow job route conventions
|
|
router.route('/')
|
|
.get(partnerCtl.getPartners_get)
|
|
.post(authAllowAdmin(), partnerCtl.createPartner_post);
|
|
|
|
// Get all customers for a given partner
|
|
router.get('/customers', partnerCtl.getPartnerCustomers_get);
|
|
|
|
// Partner system user routes - REST-style consistent with partners
|
|
router.route('/systemUsers')
|
|
.get(partnerCtl.getSystemUsers_get)
|
|
.post(partnerCtl.createSystemUser_post);
|
|
|
|
// Test partner system user authentication
|
|
router.post('/systemUsers/testAuth', partnerCtl.testPartnerAuth_post);
|
|
|
|
// Get current (first active) system user for a given partner+customer
|
|
router.get('/systemUsers/current', partnerCtl.getCurrentSystemUser_get);
|
|
|
|
// Get aircraft list from partner system
|
|
router.get('/aircraft', partnerCtl.getPartnerAircraft_get);
|
|
|
|
router.post('/syncData', partnerCtl.syncData_post);
|
|
router.post('/uploadJob', partnerCtl.uploadJob_post);
|
|
|
|
// Partner System User routes with ID validation
|
|
router.route('/systemUsers/:id')
|
|
.get(validateObjectId, partnerCtl.getSystemUser_get)
|
|
.put(validateObjectId, partnerCtl.updateSystemUser_put)
|
|
.delete(validateObjectId, partnerCtl.deleteSystemUser);
|
|
|
|
// Partner organization routes with ID validation
|
|
router.route('/:id')
|
|
.get(validateObjectId, partnerCtl.getPartnerById_get)
|
|
.put(validateObjectId, authAllowAdmin(), partnerCtl.updatePartner_put)
|
|
.delete(validateObjectId, authAllowAdmin(), partnerCtl.deletePartner);
|
|
|
|
|
|
|
|
app.use('/api/partners', router);
|
|
} |