Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit55ed653

Browse files
committed
fix: fix permissions for workspace creation
1 parentb60934b commit55ed653

File tree

13 files changed

+53
-18
lines changed

13 files changed

+53
-18
lines changed

‎site/src/api/queries/organizations.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,7 @@ export const organizationsPermissions = (
306306

307307
exportconstworkspacePermissionsByOrganization=(
308308
organizationIds:string[]|undefined,
309+
userId:string,
309310
)=>{
310311
if(!organizationIds){
311312
return{enabled:false};
@@ -315,7 +316,7 @@ export const workspacePermissionsByOrganization = (
315316
queryKey:["workspaces",organizationIds.sort(),"permissions"],
316317
queryFn:async()=>{
317318
constprefixedChecks=organizationIds.flatMap((orgId)=>
318-
Object.entries(workspacePermissionChecks(orgId)).map(([key,val])=>[
319+
Object.entries(workspacePermissionChecks(orgId,userId)).map(([key,val])=>[
319320
`${orgId}.${key}`,
320321
val,
321322
]),
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"use client"
2+
3+
import*asReactfrom"react"
4+
import*asCheckboxPrimitivefrom"@radix-ui/react-checkbox"
5+
import{Check}from"lucide-react"
6+
7+
import{cn}from"utils/cn"
8+
9+
constCheckbox=React.forwardRef<
10+
React.ElementRef<typeofCheckboxPrimitive.Root>,
11+
React.ComponentPropsWithoutRef<typeofCheckboxPrimitive.Root>
12+
>(({ className, ...props},ref)=>(
13+
<CheckboxPrimitive.Root
14+
ref={ref}
15+
className={cn(
16+
"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
17+
className
18+
)}
19+
{...props}
20+
>
21+
<CheckboxPrimitive.Indicator
22+
className={cn("flex items-center justify-center text-current")}
23+
>
24+
<CheckclassName="h-4 w-4"/>
25+
</CheckboxPrimitive.Indicator>
26+
</CheckboxPrimitive.Root>
27+
))
28+
Checkbox.displayName=CheckboxPrimitive.Root.displayName
29+
30+
export{Checkbox}

‎site/src/modules/permissions/workspaces.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
exportconstworkspacePermissionChecks=(organizationId:string)=>
1+
exportconstworkspacePermissionChecks=(organizationId:string,userId:string)=>
22
({
3-
createWorkspaceForUser:{
3+
createWorkspace:{
44
object:{
55
resource_type:"workspace",
66
organization_id:organizationId,
7-
owner_id:"*",
7+
owner_id:userId,
88
},
99
action:"create",
1010
},

‎site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ const CreateWorkspacePage: FC = () => {
6767
constpermissionsQuery=useQuery(
6868
templateQuery.data
6969
?checkAuthorization({
70-
checks:workspacePermissionChecks(templateQuery.data.organization_id),
70+
checks:workspacePermissionChecks(templateQuery.data.organization_id,me.id),
7171
})
7272
:{enabled:false},
7373
);

‎site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const meta: Meta<typeof CreateWorkspacePageView> = {
2727
hasAllRequiredExternalAuth:true,
2828
mode:"form",
2929
permissions:{
30-
createWorkspaceForUser:true,
30+
createWorkspace:true,
3131
},
3232
onCancel:action("onCancel"),
3333
},

‎site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
256256
<FormSection
257257
title="General"
258258
description={
259-
permissions.createWorkspaceForUser
259+
permissions.createWorkspace
260260
?"The name of the workspace and its owner. Only admins can create workspaces for other users."
261261
:"The name of your new workspace."
262262
}
@@ -301,7 +301,7 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
301301
</FormHelperText>
302302
</div>
303303

304-
{permissions.createWorkspaceForUser&&(
304+
{permissions.createWorkspace&&(
305305
<UserAutocomplete
306306
value={owner}
307307
onChange={(user)=>{

‎site/src/pages/TemplatePage/TemplateLayout.tsx‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { Loader } from "components/Loader/Loader";
66
import{Margins}from"components/Margins/Margins";
77
import{TabLink,Tabs,TabsList}from"components/Tabs/Tabs";
88
import{workspacePermissionChecks}from"modules/permissions/workspaces";
9+
import{useAuthenticated}from"contexts/auth/RequireAuth";
910
import{
1011
typeFC,
1112
typePropsWithChildren,
@@ -73,6 +74,7 @@ export const TemplateLayout: FC<PropsWithChildren> = ({
7374
children=<Outlet/>,
7475
})=>{
7576
constnavigate=useNavigate();
77+
const{user:me}=useAuthenticated();
7678
const{organization:organizationName="default",template:templateName}=
7779
useParams()as{organization?:string;template:string};
7880
const{ data, error, isLoading}=useQuery({
@@ -81,7 +83,7 @@ export const TemplateLayout: FC<PropsWithChildren> = ({
8183
});
8284
constworkspacePermissionsQuery=useQuery(
8385
checkAuthorization({
84-
checks:workspacePermissionChecks(organizationName),
86+
checks:workspacePermissionChecks(organizationName,me.id),
8587
}),
8688
);
8789

‎site/src/pages/TemplatePage/TemplatePageHeader.stories.tsx‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const meta: Meta<typeof TemplatePageHeader> = {
1414
canUpdateTemplate:true,
1515
},
1616
workspacePermissions:{
17-
createWorkspaceForUser:true,
17+
createWorkspace:true,
1818
},
1919
},
2020
};
@@ -35,7 +35,7 @@ export const CanNotUpdate: Story = {
3535
exportconstCannotCreateWorkspace:Story={
3636
args:{
3737
workspacePermissions:{
38-
createWorkspaceForUser:false,
38+
createWorkspace:false,
3939
},
4040
},
4141
};

‎site/src/pages/TemplatePage/TemplatePageHeader.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ export const TemplatePageHeader: FC<TemplatePageHeaderProps> = ({
180180
actions={
181181
<>
182182
{!template.deprecated&&
183-
workspacePermissions.createWorkspaceForUser&&(
183+
workspacePermissions.createWorkspace&&(
184184
<Button
185185
variant="contained"
186186
startIcon={<AddIcon/>}

‎site/src/pages/TemplatesPage/TemplatesPage.tsx‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { pageTitle } from "utils/page";
1111
import{TemplatesPageView}from"./TemplatesPageView";
1212

1313
exportconstTemplatesPage:FC=()=>{
14-
const{ permissions}=useAuthenticated();
14+
const{ permissions,user:me}=useAuthenticated();
1515
const{ showOrganizations}=useDashboard();
1616

1717
constsearchParamsResult=useSearchParams();
@@ -30,6 +30,7 @@ export const TemplatesPage: FC = () => {
3030
constworkspacePermissionsQuery=useQuery(
3131
workspacePermissionsByOrganization(
3232
templatesQuery.data?.map((template)=>template.organization_id),
33+
me.id,
3334
),
3435
);
3536

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp