Commit 7c00cd7a authored by jan.koester's avatar jan.koester
Browse files

test

parent f9da1643
Loading
Loading
Loading
Loading
Loading
+40 −10
Changes for data/admin.html: 40 added lines, 10 removed lines.
Original line number Diff line number Diff line
@@ -31,14 +31,15 @@
    <div id="maintable">
        <div id="navbar">
            <ul>
                <li><a href="#" onclick="loadDomains(); return false;">Domains</a></li>
                <li><a href="#" onclick="loadUsers(); return false;">Users</a></li>
                <li><a href="#" onclick="loadGroups(); return false;">Groups</a></li>
                <li><a href="#" onclick="loadClients(); return false;">Clients</a></li>
                <li><a href="#" onclick="loadServices(); return false;">Services</a></li>
                <li><a href="#" onclick="loadGpos(); return false;">Policies</a></li>
                <li><a href="#" onclick="loadSessions(); return false;">Sessions</a></li>
                <li id="nav-domains" style="display:none"><a href="#" onclick="loadDomains(); return false;">Domains</a></li>
                <li id="nav-users" style="display:none"><a href="#" onclick="loadUsers(); return false;">Users</a></li>
                <li id="nav-groups" style="display:none"><a href="#" onclick="loadGroups(); return false;">Groups</a></li>
                <li id="nav-clients"><a href="#" onclick="loadClients(); return false;">Clients</a></li>
                <li id="nav-services" style="display:none"><a href="#" onclick="loadServices(); return false;">Services</a></li>
                <li id="nav-gpos"><a href="#" onclick="loadGpos(); return false;">Policies</a></li>
                <li id="nav-sessions"><a href="#" onclick="loadSessions(); return false;">Sessions</a></li>
                <li id="nav-cluster" style="display:none"><a href="#" onclick="loadClusterStatus(); return false;">Cluster</a></li>
                <li id="nav-export" style="display:none"><a href="#" onclick="loadExport(); return false;">Export/Import</a></li>
                <li><a href="#" onclick="doLogout(); return false;">Logout</a></li>
            </ul>
        </div>
@@ -52,6 +53,7 @@
var currentDomain = "admin";
var currentView = null;
var g_clusterEnabled = false;
var g_permissions = {};

function ajaxGet(url, callback) {
    var xhr = new XMLHttpRequest();
@@ -1060,14 +1062,42 @@ function doLogout() {

/* ---- Initial load ---- */
window.onload = function() {
    // Check if cluster mode is active, show nav item if so
    ajaxGet("/settings/admin/api/checkpermissions", function(err, data) {
        if (!err && data && data.cluster) {
        if (err || !data) { loadUsers(); return; }
        g_permissions = data;
        if (data.cluster) {
            g_clusterEnabled = true;
            document.getElementById('nav-cluster').style.display = '';
        }
    });
        var gpo = data.gpo || {};
        // GPO UUIDs
        var GPO_MANAGE_USERS    = 'a1b2c3d4-452e-11f0-b1cc-1a2b3c4d5e02';
        var GPO_MANAGE_GROUPS   = 'a1b2c3d4-452e-11f0-b1cc-1a2b3c4d5e03';
        var GPO_MANAGE_SERVICES = 'a1b2c3d4-452e-11f0-b1cc-1a2b3c4d5e04';
        var GPO_EXPORT_IMPORT   = 'a1b2c3d4-452e-11f0-b1cc-1a2b3c4d5e05';

        if (data.superadmin) {
            document.getElementById('nav-domains').style.display = '';
        }
        if (data.superadmin || gpo[GPO_MANAGE_USERS])
            document.getElementById('nav-users').style.display = '';
        if (data.superadmin || gpo[GPO_MANAGE_GROUPS])
            document.getElementById('nav-groups').style.display = '';
        if (data.superadmin || gpo[GPO_MANAGE_SERVICES])
            document.getElementById('nav-services').style.display = '';
        if (data.superadmin || gpo[GPO_EXPORT_IMPORT])
            document.getElementById('nav-export').style.display = '';

        // Auto-set domain for non-SuperAdmins
        if (!data.superadmin && data.sessiondomain && data.sessiondomain !== 'admin') {
            currentDomain = data.sessiondomain;
        }

        if (data.superadmin || gpo[GPO_MANAGE_USERS])
            loadUsers();
        else
            loadSessions();
    });
};
</script>
</body>
+10 −1
Changes for src/admin.cpp: 10 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -569,7 +569,8 @@ namespace authdb {
        /* ---- JSON API: Check Permissions ---- */
        void apiCheckPermissions(libhttppp::HttpRequest &curreq, const SessionData *sdat) {
            json_object *jobj = json_object_new_object();
            json_object_object_add(jobj, "superadmin", json_object_new_boolean(isSuperAdmin(sdat)));
            bool superadmin = isSuperAdmin(sdat);
            json_object_object_add(jobj, "superadmin", json_object_new_boolean(superadmin));

            // Return session domain so frontend knows which domain the user belongs to
            uuid::uuid sessionDid;
@@ -580,6 +581,14 @@ namespace authdb {
                json_object_object_add(jobj, "sessiondomain", json_object_new_string(sessionDid.c_str()));
            }

            // GPO permissions (SuperAdmins get all rights)
            json_object *jgpo = json_object_new_object();
            for (size_t i = 0; gpo_default[i][0] != nullptr; ++i) {
                bool granted = superadmin || sdat->checkGPO(uuid::uuid(gpo_default[i][0]));
                json_object_object_add(jgpo, gpo_default[i][0], json_object_new_boolean(granted));
            }
            json_object_object_add(jobj, "gpo", jgpo);

            // Expose backend type so frontend can restrict domain storage options
            // 0 = File, 2 = ClusterStore
            json_object_object_add(jobj, "backendtype", json_object_new_int(_AdminBackend.getType()));