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

Commitcb91471

Browse files
committed
chore: implement deleting custom roles
1 parent43cbd73 commitcb91471

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
@@ -1379,6 +1379,25 @@ func (*FakeQuerier) DeleteCoordinator(context.Context, uuid.UUID) error {
13791379
returnErrUnimplemented
13801380
}
13811381

1382+
func (q*FakeQuerier)DeleteCustomRole(_ context.Context,arg database.DeleteCustomRoleParams)error {
1383+
err:=validateDatabaseType(arg)
1384+
iferr!=nil {
1385+
returnerr
1386+
}
1387+
1388+
q.mutex.RLock()
1389+
deferq.mutex.RUnlock()
1390+
1391+
initial:=len(q.data.customRoles)
1392+
q.data.customRoles=slices.DeleteFunc(q.data.customRoles,func(role database.CustomRole)bool {
1393+
returnrole.OrganizationID.UUID==arg.OrganizationID.UUID&&role.Name==arg.Name
1394+
})
1395+
ifinitial==len(q.data.customRoles) {
1396+
returnsql.ErrNoRows
1397+
}
1398+
returnnil
1399+
}
1400+
13821401
func (q*FakeQuerier)DeleteExternalAuthLink(_ context.Context,arg database.DeleteExternalAuthLinkParams)error {
13831402
err:=validateDatabaseType(arg)
13841403
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
@@ -87,6 +87,20 @@ func (c *Client) PatchOrganizationRole(ctx context.Context, organizationID uuid.
8787
returnrole,json.NewDecoder(res.Body).Decode(&role)
8888
}
8989

90+
// DeleteOrganizationRole will delete a custom organization role
91+
func (c*Client)DeleteOrganizationRole(ctx context.Context,organizationID uuid.UUID,roleNamestring)error {
92+
res,err:=c.Request(ctx,http.MethodDelete,
93+
fmt.Sprintf("/api/v2/organizations/%s/members/roles/%s",organizationID.String(),roleName),nil)
94+
iferr!=nil {
95+
returnerr
96+
}
97+
deferres.Body.Close()
98+
ifres.StatusCode!=http.StatusNoContent {
99+
returnReadBodyAsError(res)
100+
}
101+
returnnil
102+
}
103+
90104
// ListSiteRoles lists all assignable site wide roles.
91105
func (c*Client)ListSiteRoles(ctx context.Context) ([]AssignableRoles,error) {
92106
res,err:=c.Request(ctx,http.MethodGet,"/api/v2/users/roles",nil)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp