1
0
Fork 0
mirror of https://github.com/pawelmalak/flame.git synced 2025-07-18 19:19:36 +02:00

Added auth middleware. Added access control to apps

This commit is contained in:
Paweł Malak 2021-11-11 16:01:56 +01:00
parent d1c61bb393
commit e3f167921c
16 changed files with 92 additions and 9 deletions

View file

@ -1,11 +1,16 @@
const asyncWrapper = require('../../middleware/asyncWrapper');
const App = require('../../models/App');
const loadConfig = require('../../utils/loadConfig');
const ErrorResponse = require('../../utils/ErrorResponse');
// @desc Create new app
// @route POST /api/apps
// @access Public
const createApp = asyncWrapper(async (req, res, next) => {
if (!req.isAuthenticated) {
return next(new ErrorResponse('Unauthorized', 401));
}
const { pinAppsByDefault } = await loadConfig();
let app;

View file

@ -1,10 +1,15 @@
const asyncWrapper = require('../../middleware/asyncWrapper');
const App = require('../../models/App');
const ErrorResponse = require('../../utils/ErrorResponse');
// @desc Delete app
// @route DELETE /api/apps/:id
// @access Public
const deleteApp = asyncWrapper(async (req, res, next) => {
if (!req.isAuthenticated) {
return next(new ErrorResponse('Unauthorized', 401));
}
await App.destroy({
where: { id: req.params.id },
});

View file

@ -25,13 +25,18 @@ const getAllApps = asyncWrapper(async (req, res, next) => {
await useKubernetes(apps);
}
// apps visibility
const where = req.isAuthenticated ? {} : { isPublic: true };
if (orderType == 'name') {
apps = await App.findAll({
order: [[Sequelize.fn('lower', Sequelize.col('name')), 'ASC']],
where,
});
} else {
apps = await App.findAll({
order: [[orderType, 'ASC']],
where,
});
}

View file

@ -1,12 +1,15 @@
const asyncWrapper = require('../../middleware/asyncWrapper');
const App = require('../../models/App');
const ErrorResponse = require('../../utils/ErrorResponse');
// @desc Get single app
// @route GET /api/apps/:id
// @access Public
const getSingleApp = asyncWrapper(async (req, res, next) => {
const visibility = req.isAuthenticated ? {} : { isPublic: true };
const app = await App.findOne({
where: { id: req.params.id },
where: { id: req.params.id, ...visibility },
});
if (!app) {

View file

@ -1,10 +1,15 @@
const asyncWrapper = require('../../middleware/asyncWrapper');
const App = require('../../models/App');
const ErrorResponse = require('../../utils/ErrorResponse');
// @desc Reorder apps
// @route PUT /api/apps/0/reorder
// @access Public
const reorderApps = asyncWrapper(async (req, res, next) => {
if (!req.isAuthenticated) {
return next(new ErrorResponse('Unauthorized', 401));
}
req.body.apps.forEach(async ({ id, orderId }) => {
await App.update(
{ orderId },

View file

@ -1,10 +1,15 @@
const asyncWrapper = require('../../middleware/asyncWrapper');
const App = require('../../models/App');
const ErrorResponse = require('../../utils/ErrorResponse');
// @desc Update app
// @route PUT /api/apps/:id
// @access Public
const updateApp = asyncWrapper(async (req, res, next) => {
if (!req.isAuthenticated) {
return next(new ErrorResponse('Unauthorized', 401));
}
let app = await App.findOne({
where: { id: req.params.id },
});

View file

@ -1,3 +1,4 @@
module.exports = {
login: require('./login'),
validate: require('./validate'),
};

View file

@ -0,0 +1,21 @@
const asyncWrapper = require('../../middleware/asyncWrapper');
const ErrorResponse = require('../../utils/ErrorResponse');
const jwt = require('jsonwebtoken');
// @desc Verify token
// @route POST /api/auth/verify
// @access Public
const validate = asyncWrapper(async (req, res, next) => {
try {
jwt.verify(req.body.token, process.env.SECRET);
res.status(200).json({
success: true,
data: { token: { isValid: true } },
});
} catch (err) {
return next(new ErrorResponse('Token expired', 401));
}
});
module.exports = validate;