Skip to content

Commit a860b3e

Browse files
committed
WIP
1 parent 1ed5f37 commit a860b3e

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

models/auth/access_token_scope.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const (
2323
AccessTokenScopeCategoryIssue
2424
AccessTokenScopeCategoryRepository
2525
AccessTokenScopeCategoryUser
26+
AccessTokenScopeCategoryCommitStatus
2627
)
2728

2829
// AllAccessTokenScopeCategories contains all access token scope categories
@@ -36,6 +37,7 @@ var AllAccessTokenScopeCategories = []AccessTokenScopeCategory{
3637
AccessTokenScopeCategoryIssue,
3738
AccessTokenScopeCategoryRepository,
3839
AccessTokenScopeCategoryUser,
40+
AccessTokenScopeCategoryCommitStatus,
3941
}
4042

4143
// AccessTokenScopeLevel represents the access levels without a given scope category
@@ -81,6 +83,9 @@ const (
8183

8284
AccessTokenScopeReadUser AccessTokenScope = "read:user"
8385
AccessTokenScopeWriteUser AccessTokenScope = "write:user"
86+
87+
AccessTokenScopeReadCommitStatus AccessTokenScope = "read:commitstatus"
88+
AccessTokenScopeWriteCommitStatus AccessTokenScope = "write:commitstatus"
8489
)
8590

8691
// accessTokenScopeBitmap represents a bitmap of access token scopes.
@@ -92,7 +97,7 @@ const (
9297
accessTokenScopeAllBits accessTokenScopeBitmap = accessTokenScopeWriteActivityPubBits |
9398
accessTokenScopeWriteAdminBits | accessTokenScopeWriteMiscBits | accessTokenScopeWriteNotificationBits |
9499
accessTokenScopeWriteOrganizationBits | accessTokenScopeWritePackageBits | accessTokenScopeWriteIssueBits |
95-
accessTokenScopeWriteRepositoryBits | accessTokenScopeWriteUserBits
100+
accessTokenScopeWriteRepositoryBits | accessTokenScopeWriteUserBits | accessTokenScopeWriteCommitStatusBits
96101

97102
accessTokenScopePublicOnlyBits accessTokenScopeBitmap = 1 << iota
98103

@@ -123,6 +128,9 @@ const (
123128
accessTokenScopeReadUserBits accessTokenScopeBitmap = 1 << iota
124129
accessTokenScopeWriteUserBits accessTokenScopeBitmap = 1<<iota | accessTokenScopeReadUserBits
125130

131+
accessTokenScopeReadCommitStatusBits accessTokenScopeBitmap = 1 << iota
132+
accessTokenScopeWriteCommitStatusBits accessTokenScopeBitmap = 1<<iota | accessTokenScopeReadCommitStatusBits
133+
126134
// The current implementation only supports up to 64 token scopes.
127135
// If we need to support > 64 scopes,
128136
// refactoring the whole implementation in this file (and only this file) is needed.
@@ -141,6 +149,7 @@ var allAccessTokenScopes = []AccessTokenScope{
141149
AccessTokenScopeWriteIssue, AccessTokenScopeReadIssue,
142150
AccessTokenScopeWriteRepository, AccessTokenScopeReadRepository,
143151
AccessTokenScopeWriteUser, AccessTokenScopeReadUser,
152+
AccessTokenScopeWriteCommitStatus, AccessTokenScopeReadCommitStatus,
144153
}
145154

146155
// allAccessTokenScopeBits contains all access token scopes.
@@ -165,6 +174,8 @@ var allAccessTokenScopeBits = map[AccessTokenScope]accessTokenScopeBitmap{
165174
AccessTokenScopeWriteRepository: accessTokenScopeWriteRepositoryBits,
166175
AccessTokenScopeReadUser: accessTokenScopeReadUserBits,
167176
AccessTokenScopeWriteUser: accessTokenScopeWriteUserBits,
177+
AccessTokenScopeReadCommitStatus: accessTokenScopeReadCommitStatusBits,
178+
AccessTokenScopeWriteCommitStatus: accessTokenScopeWriteCommitStatusBits,
168179
}
169180

170181
// readAccessTokenScopes maps a scope category to the read permission scope
@@ -179,6 +190,7 @@ var accessTokenScopes = map[AccessTokenScopeLevel]map[AccessTokenScopeCategory]A
179190
AccessTokenScopeCategoryIssue: AccessTokenScopeReadIssue,
180191
AccessTokenScopeCategoryRepository: AccessTokenScopeReadRepository,
181192
AccessTokenScopeCategoryUser: AccessTokenScopeReadUser,
193+
AccessTokenScopeCategoryCommitStatus: AccessTokenScopeReadCommitStatus,
182194
},
183195
Write: {
184196
AccessTokenScopeCategoryActivityPub: AccessTokenScopeWriteActivityPub,
@@ -190,6 +202,7 @@ var accessTokenScopes = map[AccessTokenScopeLevel]map[AccessTokenScopeCategory]A
190202
AccessTokenScopeCategoryIssue: AccessTokenScopeWriteIssue,
191203
AccessTokenScopeCategoryRepository: AccessTokenScopeWriteRepository,
192204
AccessTokenScopeCategoryUser: AccessTokenScopeWriteUser,
205+
AccessTokenScopeCategoryCommitStatus: AccessTokenScopeWriteCommitStatus,
193206
},
194207
}
195208

@@ -359,7 +372,7 @@ func (bitmap accessTokenScopeBitmap) toScope() AccessTokenScope {
359372
scope := AccessTokenScope(strings.Join(scopes, ","))
360373
scope = AccessTokenScope(strings.ReplaceAll(
361374
string(scope),
362-
"write:activitypub,write:admin,write:misc,write:notification,write:organization,write:package,write:issue,write:repository,write:user",
375+
"write:activitypub,write:admin,write:misc,write:notification,write:organization,write:package,write:issue,write:repository,write:user,write:commitstatus",
363376
"all",
364377
))
365378
return scope

models/auth/access_token_scope_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ func TestAccessTokenScope_Normalize(t *testing.T) {
2121
{"", "", nil},
2222
{"write:misc,write:notification,read:package,write:notification,public-only", "public-only,write:misc,write:notification,read:package", nil},
2323
{"all", "all", nil},
24-
{"write:activitypub,write:admin,write:misc,write:notification,write:organization,write:package,write:issue,write:repository,write:user", "all", nil},
25-
{"write:activitypub,write:admin,write:misc,write:notification,write:organization,write:package,write:issue,write:repository,write:user,public-only", "public-only,all", nil},
24+
{"write:activitypub,write:admin,write:misc,write:notification,write:organization,write:package,write:issue,write:repository,write:user,write:commitstatus", "all", nil},
25+
{"write:activitypub,write:admin,write:misc,write:notification,write:organization,write:package,write:issue,write:repository,write:user,write:commitstatus,public-only", "public-only,all", nil},
2626
}
2727

28-
for _, scope := range []string{"activitypub", "admin", "misc", "notification", "organization", "package", "issue", "repository", "user"} {
28+
for _, scope := range []string{"activitypub", "admin", "misc", "notification", "organization", "package", "issue", "repository", "user", "commitstatus"} {
2929
tests = append(tests,
3030
scopeTestNormalize{AccessTokenScope(fmt.Sprintf("read:%s", scope)), AccessTokenScope(fmt.Sprintf("read:%s", scope)), nil},
3131
scopeTestNormalize{AccessTokenScope(fmt.Sprintf("write:%s", scope)), AccessTokenScope(fmt.Sprintf("write:%s", scope)), nil},

0 commit comments

Comments
 (0)