mirror of
https://github.com/coder/coder.git
synced 2026-10-31 19:36:41 +08:00
feat: add a per-template workspace rename setting (#27558)
This commit is contained in:
+22
-13
@@ -1154,9 +1154,17 @@ func (api *API) patchWorkspace(rw http.ResponseWriter, r *http.Request) {
|
||||
// patched in the future, it's enough if one changes.
|
||||
name := workspace.Name
|
||||
if req.Name != "" || req.Name != workspace.Name {
|
||||
if !api.AllowWorkspaceRenames {
|
||||
template, err := api.Database.GetTemplateByID(ctx, workspace.TemplateID)
|
||||
if err != nil {
|
||||
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
|
||||
Message: "Internal error fetching workspace template.",
|
||||
Detail: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
if !api.AllowWorkspaceRenames && !template.AllowWorkspaceRenames {
|
||||
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
|
||||
Message: "Workspace renames are not allowed.",
|
||||
Message: "Workspace renames are not enabled for this template.",
|
||||
})
|
||||
return
|
||||
}
|
||||
@@ -2596,10 +2604,11 @@ func (api *API) patchWorkspaceACL(rw http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
type workspaceData struct {
|
||||
templates []database.Template
|
||||
builds []codersdk.WorkspaceBuild
|
||||
appStatuses []codersdk.WorkspaceAppStatus
|
||||
allowRenames bool
|
||||
templates []database.Template
|
||||
builds []codersdk.WorkspaceBuild
|
||||
appStatuses []codersdk.WorkspaceAppStatus
|
||||
// deploymentAllowsRenames is the deprecated deployment-wide rename flag.
|
||||
deploymentAllowsRenames bool
|
||||
}
|
||||
|
||||
// @Summary Completely clears the workspace's user and group ACLs.
|
||||
@@ -2757,10 +2766,10 @@ func (api *API) workspaceData(ctx context.Context, workspaces []database.Workspa
|
||||
}
|
||||
|
||||
return workspaceData{
|
||||
templates: templates,
|
||||
appStatuses: db2sdk.WorkspaceAppStatuses(appStatuses),
|
||||
builds: apiBuilds,
|
||||
allowRenames: api.AllowWorkspaceRenames,
|
||||
templates: templates,
|
||||
appStatuses: db2sdk.WorkspaceAppStatuses(appStatuses),
|
||||
builds: apiBuilds,
|
||||
deploymentAllowsRenames: api.AllowWorkspaceRenames,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -2846,7 +2855,7 @@ func convertWorkspaces(
|
||||
workspace,
|
||||
build,
|
||||
template,
|
||||
data.allowRenames,
|
||||
data.deploymentAllowsRenames,
|
||||
appStatus,
|
||||
)
|
||||
if err != nil {
|
||||
@@ -2865,7 +2874,7 @@ func convertWorkspace(
|
||||
workspace database.Workspace,
|
||||
workspaceBuild codersdk.WorkspaceBuild,
|
||||
template database.Template,
|
||||
allowRenames bool,
|
||||
deploymentAllowsRenames bool,
|
||||
latestAppStatus codersdk.WorkspaceAppStatus,
|
||||
) (codersdk.Workspace, error) {
|
||||
if requesterID == uuid.Nil {
|
||||
@@ -2953,7 +2962,7 @@ func convertWorkspace(
|
||||
FailingAgents: failingAgents,
|
||||
},
|
||||
AutomaticUpdates: codersdk.AutomaticUpdates(workspace.AutomaticUpdates),
|
||||
AllowRenames: allowRenames,
|
||||
AllowRenames: deploymentAllowsRenames || template.AllowWorkspaceRenames,
|
||||
Favorite: requesterFavorite,
|
||||
NextStartAt: nextStartAt,
|
||||
IsPrebuild: workspace.IsPrebuild(),
|
||||
|
||||
Reference in New Issue
Block a user