48 lines
2.8 KiB
JavaScript
Raw Normal View History

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
});