'use strict';

const MissingPermission = require('../missing-permission');
const { ADMIN } = require('../permissions');

module.exports = function(config, permission) {
    if (!permission || !config.extendedPermissions) {
        return (req, res, next) => next();
    }
    return (req, res, next) => {
        if (
            req.user &&
            req.user.permissions &&
            (req.user.permissions.indexOf(ADMIN) !== -1 ||
                req.user.permissions.indexOf(permission) !== -1)
        ) {
            return next();
        }
        return res
            .status(403)
            .json(
                new MissingPermission({
                    permission,
                    message: `You require ${permission} to perform this action`,
                })
            )
            .end();
    };
};