From 8698c0f5beb2d605fb2e9901d8ddaa2ba07f6b7f Mon Sep 17 00:00:00 2001 From: mbecker20 Date: Sun, 21 Apr 2024 03:22:03 -0700 Subject: [PATCH] non admins able to get procedure updates --- bin/core/src/api/read/update.rs | 3 ++ bin/core/src/main.rs | 8 +-- .../src/components/resources/build/config.tsx | 49 +++++++++++-------- .../config/components/environment.tsx | 1 + .../deployment/config/components/image.tsx | 8 ++- frontend/src/pages/resource.tsx | 17 ++++--- frontend/src/pages/users.tsx | 23 +++++++++ 7 files changed, 72 insertions(+), 37 deletions(-) diff --git a/bin/core/src/api/read/update.rs b/bin/core/src/api/read/update.rs index 5399fb5db..596382c0c 100644 --- a/bin/core/src/api/read/update.rs +++ b/bin/core/src/api/read/update.rs @@ -48,6 +48,8 @@ impl Resolve for State { Build::get_resource_ids_for_non_admin(&user.id).await?; let repo_ids = Repo::get_resource_ids_for_non_admin(&user.id).await?; + let procedure_ids = + Procedure::get_resource_ids_for_non_admin(&user.id).await?; let builder_ids = Builder::get_resource_ids_for_non_admin(&user.id).await?; let alerter_ids = @@ -59,6 +61,7 @@ impl Resolve for State { { "target.type": "Deployment", "target.id": { "$in": &deployment_ids } }, { "target.type": "Build", "target.id": { "$in": &build_ids } }, { "target.type": "Repo", "target.id": { "$in": &repo_ids } }, + { "target.type": "Procedure", "target.id": { "$in": &procedure_ids } }, { "target.type": "Builder", "target.id": { "$in": &builder_ids } }, { "target.type": "Alerter", "target.id": { "$in": &alerter_ids } }, ] diff --git a/bin/core/src/main.rs b/bin/core/src/main.rs index 57577c414..c746a001f 100644 --- a/bin/core/src/main.rs +++ b/bin/core/src/main.rs @@ -85,13 +85,7 @@ async fn main() -> anyhow::Result<()> { fn cors() -> anyhow::Result { let cors = CorsLayer::new() - .allow_origin( - // core_config() - // .host - // .parse::() - // .context("failed to parse host into origin")?, - Any, - ) + .allow_origin(Any) .allow_methods(Any) .allow_headers(Any); Ok(cors) diff --git a/frontend/src/components/resources/build/config.tsx b/frontend/src/components/resources/build/config.tsx index 999065a44..192434dbf 100644 --- a/frontend/src/components/resources/build/config.tsx +++ b/frontend/src/components/resources/build/config.tsx @@ -56,26 +56,30 @@ export const BuildConfig = ({ id }: { id: string }) => {
v{major}.{minor}.{patch}
- - + {!disabled && ( + + )} + {!disabled && ( + + )} ); @@ -86,6 +90,7 @@ export const BuildConfig = ({ id }: { id: string }) => { type="Builder" selected={id} onSelect={(builder_id) => set({ builder_id })} + disabled={disabled} /> ), @@ -129,7 +134,9 @@ export const BuildConfig = ({ id }: { id: string }) => { /> ), use_buildx: true, - labels: (l, set) => , + labels: (l, set) => ( + + ), extra_args: (value, set) => ( ), diff --git a/frontend/src/components/resources/deployment/config/components/environment.tsx b/frontend/src/components/resources/deployment/config/components/environment.tsx index eed8f6ffe..600b673ae 100644 --- a/frontend/src/components/resources/deployment/config/components/environment.tsx +++ b/frontend/src/components/resources/deployment/config/components/environment.tsx @@ -35,6 +35,7 @@ export const EnvVars = ({ placeholder="VARIABLE=value" value={env} onChange={(e) => setEnv(e.target.value)} + disabled={disabled} /> ); diff --git a/frontend/src/components/resources/deployment/config/components/image.tsx b/frontend/src/components/resources/deployment/config/components/image.tsx index a0eff5e69..a2d8166df 100644 --- a/frontend/src/components/resources/deployment/config/components/image.tsx +++ b/frontend/src/components/resources/deployment/config/components/image.tsx @@ -58,12 +58,14 @@ const BuildVersionSelector = ({ const ImageTypeSelector = ({ selected, onSelect, + disabled, }: { selected: Types.DeploymentImage["type"] | undefined; onSelect: (type: Types.DeploymentImage["type"]) => void; + disabled: boolean; }) => ( - + @@ -86,6 +88,7 @@ export const ImageConfig = ({
set({ image: { @@ -146,6 +149,7 @@ export const ImageConfig = ({ } className="w-full lg:w-[300px]" placeholder="image name" + disabled={disabled} /> )}
diff --git a/frontend/src/pages/resource.tsx b/frontend/src/pages/resource.tsx index 28a6ee53b..b6716b00b 100644 --- a/frontend/src/pages/resource.tsx +++ b/frontend/src/pages/resource.tsx @@ -34,6 +34,7 @@ export const Resource = () => { perms ) : false; + const canWrite = perms === Types.PermissionLevel.Write; return ( { {/* Config and Danger Zone */} -
} - actions={type !== "Server" && } - > - -
+ {canWrite && ( +
} + actions={type !== "Server" && } + > + +
+ )}
); }; diff --git a/frontend/src/pages/users.tsx b/frontend/src/pages/users.tsx index 23aabbcc7..5528aa04d 100644 --- a/frontend/src/pages/users.tsx +++ b/frontend/src/pages/users.tsx @@ -188,6 +188,9 @@ function addPerms( const PermissionsTable = () => { const { toast } = useToast(); const [showNone, setShowNone] = useState(false); + const [resourceType, setResourceType] = useState( + "All" + ); const [search, setSearch] = useState(""); const searchSplit = search.toLowerCase().split(" "); const inv = useInvalidate(); @@ -210,6 +213,23 @@ const PermissionsTable = () => { onChange={(e) => setSearch(e.target.value)} className="w-[300px]" /> +
setShowNone(!showNone)} @@ -225,6 +245,9 @@ const PermissionsTable = () => { data={ permissions?.filter( (permission) => + (resourceType === "All" + ? true + : permission.resource_target.type === resourceType) && (showNone ? true : permission.level !== Types.PermissionLevel.None) &&