NodeBB/NodeBB

View on GitHub
src/controllers/admin.js

Summary

Maintainability
A
2 hrs
Test Coverage
'use strict';

const privileges = require('../privileges');
const helpers = require('./helpers');

const adminController = {
    dashboard: require('./admin/dashboard'),
    categories: require('./admin/categories'),
    privileges: require('./admin/privileges'),
    adminsMods: require('./admin/admins-mods'),
    tags: require('./admin/tags'),
    groups: require('./admin/groups'),
    digest: require('./admin/digest'),
    appearance: require('./admin/appearance'),
    extend: {
        widgets: require('./admin/widgets'),
        rewards: require('./admin/rewards'),
    },
    events: require('./admin/events'),
    hooks: require('./admin/hooks'),
    logs: require('./admin/logs'),
    errors: require('./admin/errors'),
    database: require('./admin/database'),
    cache: require('./admin/cache'),
    plugins: require('./admin/plugins'),
    settings: require('./admin/settings'),
    logger: require('./admin/logger'),
    themes: require('./admin/themes'),
    users: require('./admin/users'),
    uploads: require('./admin/uploads'),
    info: require('./admin/info'),
};

adminController.routeIndex = async (req, res) => {
    const privilegeSet = await privileges.admin.get(req.uid);

    if (privilegeSet.superadmin || privilegeSet['admin:dashboard']) {
        return adminController.dashboard.get(req, res);
    } else if (privilegeSet['admin:categories']) {
        return helpers.redirect(res, 'admin/manage/categories');
    } else if (privilegeSet['admin:privileges']) {
        return helpers.redirect(res, 'admin/manage/privileges');
    } else if (privilegeSet['admin:users']) {
        return helpers.redirect(res, 'admin/manage/users');
    } else if (privilegeSet['admin:groups']) {
        return helpers.redirect(res, 'admin/manage/groups');
    } else if (privilegeSet['admin:admins-mods']) {
        return helpers.redirect(res, 'admin/manage/admins-mods');
    } else if (privilegeSet['admin:tags']) {
        return helpers.redirect(res, 'admin/manage/tags');
    } else if (privilegeSet['admin:settings']) {
        return helpers.redirect(res, 'admin/settings/general');
    }

    return helpers.notAllowed(req, res);
};

module.exports = adminController;