diff --git a/backend/windmill-api/src/configs.rs b/backend/windmill-api/src/configs.rs index 9110d104c8..606cd11ebe 100644 --- a/backend/windmill-api/src/configs.rs +++ b/backend/windmill-api/src/configs.rs @@ -21,7 +21,7 @@ use windmill_common::{ DB, }; -use crate::{db::ApiAuthed, utils::require_super_admin}; +use crate::{db::ApiAuthed, utils::{require_devops_role}}; pub fn global_service() -> Router { Router::new() @@ -103,7 +103,7 @@ async fn get_config( Path(name): Path, Extension(db): Extension, ) -> error::JsonResult> { - require_super_admin(&db, &authed.email).await?; + require_devops_role(&db, &authed.email).await?; let config = sqlx::query_as!(Config, "SELECT * FROM config WHERE name = $1", name) .fetch_optional(&db) @@ -119,7 +119,7 @@ async fn update_config( authed: ApiAuthed, Json(config): Json, ) -> error::Result { - require_super_admin(&db, &authed.email).await?; + require_devops_role(&db, &authed.email).await?; #[cfg(not(feature = "enterprise"))] if name.starts_with("worker__") { @@ -157,7 +157,7 @@ async fn delete_config( Extension(db): Extension, authed: ApiAuthed, ) -> error::Result { - require_super_admin(&db, &authed.email).await?; + require_devops_role(&db, &authed.email).await?; let mut tx = db.begin().await?; @@ -232,7 +232,7 @@ async fn list_configs( authed: ApiAuthed, Extension(db): Extension, ) -> error::JsonResult> { - require_super_admin(&db, &authed.email).await?; + require_devops_role(&db, &authed.email).await?; let configs = sqlx::query_as!(Config, "SELECT name, config FROM config") .fetch_all(&db) .await?; diff --git a/frontend/src/lib/components/AssignableTagsInner.svelte b/frontend/src/lib/components/AssignableTagsInner.svelte index 8606bd216a..09a848c505 100644 --- a/frontend/src/lib/components/AssignableTagsInner.svelte +++ b/frontend/src/lib/components/AssignableTagsInner.svelte @@ -5,7 +5,7 @@ import { ExternalLink, Loader2, X } from 'lucide-svelte' import { SettingService, WorkerService } from '$lib/gen' import { sendUserToast } from '$lib/toast' - import { superadmin } from '$lib/stores' + import { superadmin, devopsRole } from '$lib/stores' import NoWorkerWithTagWarning from './runs/NoWorkerWithTagWarning.svelte' import { CUSTOM_TAGS_SETTING } from '$lib/consts' import { base } from '$lib/base' @@ -80,10 +80,10 @@ loadCustomTags() sendUserToast('Tag added') }} - disabled={newTag.trim() == '' || !$superadmin} + disabled={newTag.trim() == '' || !($superadmin || $devopsRole)} > - Add {#if !$superadmin} - superadmin only + Add {#if !($superadmin || $devopsRole)} + superadmin or devops only {/if} { - $superadmin && listWorkspaces() + ($superadmin || $devopsRole) && listWorkspaces() }) @@ -209,7 +209,7 @@ drawer?.closeDrawer()} - title={$superadmin ? `Edit worker config '${name}'` : `Worker config '${name}'`} + title={($superadmin || $devopsRole) ? `Edit worker config '${name}'` : `Worker config '${name}'`} > {#if !$enterpriseLicense} @@ -433,7 +433,7 @@ {:else if selected == 'dedicated'} {#if nconfig?.dedicated_worker != undefined} { @@ -442,7 +442,7 @@ }} bind:value={nconfig.dedicated_worker} /> - {#if $superadmin} + {#if $superadmin || $devopsRole}
- {#if $superadmin} + {#if $superadmin || $devopsRole}
- {#if !superadmin} + {#if !($superadmin || $devopsRole)}
diff --git a/frontend/src/routes/(root)/(logged)/workers/+page.svelte b/frontend/src/routes/(root)/(logged)/workers/+page.svelte index 749a17755d..139ee18e9b 100644 --- a/frontend/src/routes/(root)/(logged)/workers/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/workers/+page.svelte @@ -19,6 +19,7 @@ import { enterpriseLicense, superadmin, + devopsRole, userStore, workspaceStore, userWorkspaces @@ -131,7 +132,7 @@ loadWorkers() loadWorkerGroups() loadCustomTags() - $: $superadmin && loadDefaultTagsPerWorkspace() + $: ($superadmin || $devopsRole) && loadDefaultTagsPerWorkspace() onDestroy(() => { if (intervalId) { @@ -271,7 +272,7 @@ } -{#if $superadmin} +{#if $superadmin || $devopsRole} {/if} @@ -331,7 +332,7 @@ tooltip="The workers are the dutiful servants that execute the jobs." documentationLink="https://www.windmill.dev/docs/core_concepts/worker_groups" > - {#if $superadmin} + {#if $superadmin || $devopsRole}
- {#if $superadmin} + {#if $superadmin || $devopsRole}