diff --git a/packages/api/src/controllers/auth.js b/packages/api/src/controllers/auth.js index 6a2de4082..0cb38bfa2 100644 --- a/packages/api/src/controllers/auth.js +++ b/packages/api/src/controllers/auth.js @@ -6,7 +6,7 @@ const AD = require('activedirectory2').promiseWrapper; const crypto = require('crypto'); const { getTokenSecret, getTokenLifetime } = require('../auth/authCommon'); const { getAuthProvider } = require('../auth/authProvider'); -const { create } = require('lodash'); +const storage = require('./storage'); const logger = getLogger('auth'); @@ -65,7 +65,16 @@ module.exports = { if (isAdminPage) { if (process.env.ADMIN_PASSWORD && process.env.ADMIN_PASSWORD == password) { return { - accessToken: jwt.sign({ login: 'admin' }, getTokenSecret(), { expiresIn: getTokenLifetime() }), + accessToken: jwt.sign( + { + login: 'superadmin', + permissions: await storage.loadSuperadminPermissions(), + }, + getTokenSecret(), + { + expiresIn: getTokenLifetime(), + } + ), }; } diff --git a/packages/api/src/controllers/storage.js b/packages/api/src/controllers/storage.js index f08605ed0..2be17b4b4 100644 --- a/packages/api/src/controllers/storage.js +++ b/packages/api/src/controllers/storage.js @@ -7,4 +7,8 @@ module.exports = { async getConnection({ conid }) { return null; }, + + async loadSuperadminPermissions() { + return []; + } }; diff --git a/packages/web/src/App.svelte b/packages/web/src/App.svelte index c6258a109..ed14a91bb 100644 --- a/packages/web/src/App.svelte +++ b/packages/web/src/App.svelte @@ -42,14 +42,16 @@ const connections = await apiCall('connections/list'); const settings = await getSettings(); const apps = await getUsedApps(); - loadedApi = settings && connections && config && apps; + const loadedApiValue = !!(settings && connections && config && apps); - if (loadedApi) { + if (loadedApiValue) { subscribeApiDependendStores(); subscribeConnectionPingers(); subscribePermissionCompiler(); } + loadedApi = loadedApiValue; + if (!loadedApi) { console.log('API not initialized correctly, trying again in 1s'); setTimeout(loadApi, 1000); diff --git a/packages/web/src/utility/hasPermission.ts b/packages/web/src/utility/hasPermission.ts index 8f546afa2..64f162671 100644 --- a/packages/web/src/utility/hasPermission.ts +++ b/packages/web/src/utility/hasPermission.ts @@ -4,13 +4,17 @@ import { useConfig } from './metadataLoaders'; let compiled = null; export default function hasPermission(tested) { + // console.log('TESTING PERM', tested, compiled, testPermission(tested, compiled)); return testPermission(tested, compiled); } export function subscribePermissionCompiler() { + // console.log('subscribePermissionCompiler', compiled); + useConfig().subscribe(value => { if (!value) return; const { permissions } = value; compiled = compilePermissions(permissions); + // console.log('COMPILED PERMS', compiled); }); } diff --git a/packages/web/src/widgets/WidgetIconPanel.svelte b/packages/web/src/widgets/WidgetIconPanel.svelte index 8e4f82d44..04871f87e 100644 --- a/packages/web/src/widgets/WidgetIconPanel.svelte +++ b/packages/web/src/widgets/WidgetIconPanel.svelte @@ -12,20 +12,17 @@ } from '../stores'; import mainMenuDefinition from '../../../../app/src/mainMenuDefinition'; import hasPermission from '../utility/hasPermission'; - import { isAdminPage } from '../utility/pageDefs'; let domSettings; let domMainMenu; - const isAdmin = isAdminPage(); - const widgets = [ getCurrentConfig().storageDatabase && { icon: 'icon admin', name: 'admin', title: 'Administration', }, - !isAdmin && { + { icon: 'icon database', name: 'database', title: 'Database connections', @@ -34,32 +31,32 @@ // icon: 'fa-table', // name: 'table', // }, - !isAdmin && { + { icon: 'icon file', name: 'file', title: 'Favorites & Saved files', }, - !isAdmin && { + { icon: 'icon history', name: 'history', title: 'Query history & Closed tabs', }, - !isAdmin && { + { icon: 'icon archive', name: 'archive', title: 'Archive (saved tabular data)', }, - !isAdmin && { + { icon: 'icon plugin', name: 'plugins', title: 'Extensions & Plugins', }, - !isAdmin && { + { icon: 'icon cell-data', name: 'cell-data', title: 'Selected cell data detail view', }, - !isAdmin && { + { icon: 'icon app', name: 'app', title: 'Application layers', @@ -119,17 +116,16 @@