import { Router } from 'express';
import { createAccessRequest, getProjects } from '../controllers/workspace.controller.js';
import methodNotAllowed from '../middlewares/methodNotAllowed.js';
import tenantAccess from '../middlewares/tenantAccess.js';
import validate from '../middlewares/validate.js';
import verifyFirebaseToken from '../middlewares/verifyFirebaseToken.js';
import { accessRequestSchema } from '../validators/tenantAdmin.validator.js';

// Organization-scoped routes outside Administration, mounted at /api/v1.
const router = Router();

router.get('/projects', verifyFirebaseToken, tenantAccess({ module: 'project_core', permission: 'project.projects.view' }), getProjects);
router.all('/projects', methodNotAllowed('GET'));

// Anyone signed in to an organization may ask for access.
router.post('/access-requests', verifyFirebaseToken, tenantAccess(), validate(accessRequestSchema), createAccessRequest);
router.all('/access-requests', methodNotAllowed('POST'));

export default router;
