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

Commit2aa9875

Browse files
committed
chore: implement deleting custom roles
1 parentfab1960 commit2aa9875

File tree

15 files changed

+444
-1
lines changed

15 files changed

+444
-1
lines changed

‎coderd/apidoc/docs.go

Lines changed: 45 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/apidoc/swagger.json

Lines changed: 41 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/dbauthz/dbauthz.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -958,6 +958,20 @@ func (q *querier) DeleteCoordinator(ctx context.Context, id uuid.UUID) error {
958958
returnq.db.DeleteCoordinator(ctx,id)
959959
}
960960

961+
func (q*querier)DeleteCustomRole(ctx context.Context,arg database.DeleteCustomRoleParams)error {
962+
ifarg.OrganizationID.UUID!=uuid.Nil {
963+
iferr:=q.authorizeContext(ctx,policy.ActionDelete,rbac.ResourceAssignOrgRole.InOrg(arg.OrganizationID.UUID));err!=nil {
964+
returnerr
965+
}
966+
}else {
967+
iferr:=q.authorizeContext(ctx,policy.ActionCreate,rbac.ResourceAssignRole);err!=nil {
968+
returnerr
969+
}
970+
}
971+
972+
returnq.db.DeleteCustomRole(ctx,arg)
973+
}
974+
961975
func (q*querier)DeleteExternalAuthLink(ctx context.Context,arg database.DeleteExternalAuthLinkParams)error {
962976
returnfetchAndExec(q.log,q.auth,policy.ActionUpdatePersonal,func(ctx context.Context,arg database.DeleteExternalAuthLinkParams) (database.ExternalAuthLink,error) {
963977
//nolint:gosimple

‎coderd/database/dbmem/dbmem.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1381,6 +1381,25 @@ func (*FakeQuerier) DeleteCoordinator(context.Context, uuid.UUID) error {
13811381
returnErrUnimplemented
13821382
}
13831383

1384+
func (q*FakeQuerier)DeleteCustomRole(_ context.Context,arg database.DeleteCustomRoleParams)error {
1385+
err:=validateDatabaseType(arg)
1386+
iferr!=nil {
1387+
returnerr
1388+
}
1389+
1390+
q.mutex.RLock()
1391+
deferq.mutex.RUnlock()
1392+
1393+
initial:=len(q.data.customRoles)
1394+
q.data.customRoles=slices.DeleteFunc(q.data.customRoles,func(role database.CustomRole)bool {
1395+
returnrole.OrganizationID.UUID==arg.OrganizationID.UUID&&role.Name==arg.Name
1396+
})
1397+
ifinitial==len(q.data.customRoles) {
1398+
returnsql.ErrNoRows
1399+
}
1400+
returnnil
1401+
}
1402+
13841403
func (q*FakeQuerier)DeleteExternalAuthLink(_ context.Context,arg database.DeleteExternalAuthLinkParams)error {
13851404
err:=validateDatabaseType(arg)
13861405
iferr!=nil {

‎coderd/database/dbmetrics/dbmetrics.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/dbmock/dbmock.go

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/querier.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries.sql.go

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries/roles.sql

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@ WHERE
2525
END
2626
;
2727

28+
-- name: DeleteCustomRole :exec
29+
DELETEFROM
30+
custom_roles
31+
WHERE
32+
name=lower(@name)
33+
AND organization_id= @organization_id
34+
;
2835

2936
-- name: UpsertCustomRole :one
3037
INSERT INTO

‎coderd/httpapi/httpapi.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,24 @@ func Is404Error(err error) bool {
106106
returnfalse
107107
}
108108

109+
// This tests for dbauthz.IsNotAuthorizedError and rbac.IsUnauthorizedError.
110+
ifIsUnauthorizedError(err) {
111+
returntrue
112+
}
113+
returnxerrors.Is(err,sql.ErrNoRows)
114+
}
115+
116+
funcIsUnauthorizedError(errerror)bool {
117+
iferr==nil {
118+
returnfalse
119+
}
120+
109121
// This tests for dbauthz.IsNotAuthorizedError and rbac.IsUnauthorizedError.
110122
varunauthorized httpapiconstraints.IsUnauthorizedError
111123
iferrors.As(err,&unauthorized)&&unauthorized.IsUnauthorized() {
112124
returntrue
113125
}
114-
returnxerrors.Is(err,sql.ErrNoRows)
126+
returnfalse
115127
}
116128

117129
// Convenience error functions don't take contexts since their responses are

‎codersdk/roles.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,20 @@ func (c *Client) PatchOrganizationRole(ctx context.Context, role Role) (Role, er
105105
returnr,json.NewDecoder(res.Body).Decode(&r)
106106
}
107107

108+
// DeleteOrganizationRole will delete a custom organization role
109+
func (c*Client)DeleteOrganizationRole(ctx context.Context,organizationID uuid.UUID,roleNamestring)error {
110+
res,err:=c.Request(ctx,http.MethodDelete,
111+
fmt.Sprintf("/api/v2/organizations/%s/members/roles/%s",organizationID.String(),roleName),nil)
112+
iferr!=nil {
113+
returnerr
114+
}
115+
deferres.Body.Close()
116+
ifres.StatusCode!=http.StatusNoContent {
117+
returnReadBodyAsError(res)
118+
}
119+
returnnil
120+
}
121+
108122
// ListSiteRoles lists all assignable site wide roles.
109123
func (c*Client)ListSiteRoles(ctx context.Context) ([]AssignableRoles,error) {
110124
res,err:=c.Request(ctx,http.MethodGet,"/api/v2/users/roles",nil)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp