2023-10-11 12:37:20 +02:00
|
|
|
/*
|
2023-10-12 16:56:45 +02:00
|
|
|
This code is part of Blink
|
|
|
|
licensed under GPLv3
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
|
|
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
2023-10-13 10:37:09 +02:00
|
|
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
|
|
IN THE SOFTWARE.
|
2023-10-11 12:37:20 +02:00
|
|
|
*/
|
|
|
|
|
2024-02-14 10:24:03 +01:00
|
|
|
// Importing modules
|
2023-10-11 12:37:20 +02:00
|
|
|
const express = require('express');
|
2023-10-18 13:03:41 +02:00
|
|
|
const cors = require('cors');
|
2024-02-14 10:24:03 +01:00
|
|
|
const rateLimit = require('express-rate-limit');
|
2024-02-15 12:56:54 +01:00
|
|
|
const apiController = require('./api_controller.js');
|
2023-10-13 10:37:09 +02:00
|
|
|
require('dotenv').config();
|
2023-10-11 12:37:20 +02:00
|
|
|
|
2024-02-14 10:24:03 +01:00
|
|
|
// Application configuration
|
2023-10-11 12:37:20 +02:00
|
|
|
const app = express();
|
2023-10-13 12:53:22 +02:00
|
|
|
app.use(express.json()); // Middleware which parses JSON for POST requests
|
2023-10-19 17:54:02 +02:00
|
|
|
app.use(cors()); // Enable CORS for all routes
|
2024-02-14 10:24:03 +01:00
|
|
|
app.use(rateLimit({
|
|
|
|
windowMs: process.env.LIMITER_WINDOW,
|
|
|
|
max: process.env.LIMITER_MAXIMUM_PER_WINDOW,
|
2024-02-14 18:00:04 +01:00
|
|
|
message: {error : "Too many requests from this IP, please try again later"}
|
2024-02-14 10:24:03 +01:00
|
|
|
})); // Apply the rate limiter middleware to all routes
|
|
|
|
|
2024-02-15 12:56:54 +01:00
|
|
|
app.post('/api/register', apiController.registerPerson); // Register a Person
|
|
|
|
app.post('/api/login', apiController.login); // Login
|
|
|
|
app.get('/api/person/:id', apiController.verifyToken, apiController.getPerson); // Obtain Person's details
|
|
|
|
app.put('/api/person/:id', apiController.verifyToken, apiController.updatePerson); // Update Person's details
|
|
|
|
app.delete('/api/person/delete', apiController.verifyToken, apiController.deletePerson); // Delete a Person
|
|
|
|
app.post('/api/organization/admin', apiController.verifyToken, apiController.addOrganizationAdmin); // Add Organization Administrator
|
|
|
|
app.delete('/api/organization/removeadmin', apiController.verifyToken, apiController.removeOrganizationAdmin); // Remove Organization Administrator
|
|
|
|
app.post('/api/organization', apiController.verifyToken, apiController.createOrganization); // Create organization
|
|
|
|
app.get('/api/organization/:id', apiController.verifyToken, apiController.getOrganization); // Get Organization data
|
|
|
|
app.put('/api/organization/:id', apiController.verifyToken, apiController.updateOrganization); // Update organization
|
|
|
|
app.delete('/api/organization/:id', apiController.verifyToken, apiController.deleteOrganization); // Delete organization
|
|
|
|
app.post('/api/organization/post', apiController.verifyToken, apiController.createOrganizationPost); // Create a organization's post
|
|
|
|
app.delete('/api/organization/post/:id', apiController.verifyToken, apiController.deleteOrganizationPost); // Delete a organization's post
|
2023-10-17 21:54:37 +02:00
|
|
|
|
2023-10-11 12:37:20 +02:00
|
|
|
// Start the server
|
2023-10-13 12:53:22 +02:00
|
|
|
app.listen(process.env.API_SERVER_PORT, () => {
|
|
|
|
console.log(`Blink API server is running on port ${process.env.API_SERVER_PORT}`);
|
2023-10-11 12:37:20 +02:00
|
|
|
});
|