Files
trufflehog/pkg/analyzer/analyzers/bitbucket/scopes.go
MiccahandJoe Leon 2424683923 Analyze (#3099)
* Add POC analyze sub-command

* Address lint errors

* [chore] Embed scopes at compile time

* [chore] Move subcommand check up to prevent printing metrics

* added http logging to most analyzers

* Use custom RoundTripper with default http.Client

* Create framework of interfaces, structs, and protos

* Merge main

* Add AnalysisInfo to detectors.Result

* Hide analyze subcommand

* Update gen_proto.sh

* Update protos

* Make protos

* Update analyzer data types

* Rename argument to credentialInfo

---------

Co-authored-by: Joe Leon <[email protected]>
2024-07-25 12:06:05 -07:00

113 lines
2.7 KiB
Go

package bitbucket
var credential_type_map = map[string]string{
"repo_access_token": "Repository Access Token (Can access 1 repository)",
"project_access_token": "Project Access Token (Can access all repos in 1 project)",
"workspace_access_token": "Workspace Access Token (Can access all projects and repos in 1 workspace)",
}
type BitbucketScope struct {
Name string `json:"name"`
Category string `json:"category"`
ImpliedScopes []string `json:"implied_scopes"`
}
type ByCategoryAndName []BitbucketScope
func (a ByCategoryAndName) Len() int { return len(a) }
func (a ByCategoryAndName) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a ByCategoryAndName) Less(i, j int) bool {
categoryOrder := map[string]int{
"Account": 0,
"Projects": 1,
"Repositories": 2,
"Pull Requests": 3,
"Webhooks": 4,
"Pipelines": 5,
"Runners": 6,
}
nameOrder := map[string]int{
"Read": 0,
"Write": 1,
"Admin": 2,
"Delete": 3,
"Edit variables": 4,
"Read and write": 5,
}
if categoryOrder[a[i].Category] != categoryOrder[a[j].Category] {
return categoryOrder[a[i].Category] < categoryOrder[a[j].Category]
}
return nameOrder[a[i].Name] < nameOrder[a[j].Name]
}
var oauth_scope_map = map[string]BitbucketScope{
"repository": {
Name: "Read",
Category: "Repositories",
},
"repository:write": {
Name: "Write",
Category: "Repositories",
ImpliedScopes: []string{"repository"},
},
"repository:admin": {
Name: "Admin",
Category: "Repositories",
},
"repository:delete": {
Name: "Delete",
Category: "Repositories",
},
"pullrequest": {
Name: "Read",
Category: "Pull Requests",
ImpliedScopes: []string{"repository"},
},
"pullrequest:write": {
Name: "Write",
Category: "Pull Requests",
ImpliedScopes: []string{"pullrequest", "repository", "repository:write"},
},
"webhook": {
Name: "Read and write",
Category: "Webhooks",
},
"pipeline": {
Name: "Read",
Category: "Pipelines",
},
"pipeline:write": {
Name: "Write",
Category: "Pipelines",
ImpliedScopes: []string{"pipeline"},
},
"pipeline:variable": {
Name: "Edit variables",
Category: "Pipelines",
ImpliedScopes: []string{"pipeline", "pipeline:write"},
},
"runner": {
Name: "Read",
Category: "Runners",
},
"runner:write": {
Name: "Write",
Category: "Runners",
ImpliedScopes: []string{"runner"},
},
"project": {
Name: "Read",
Category: "Projects",
ImpliedScopes: []string{"repository"},
},
"project:admin": {
Name: "Admin",
Category: "Projects",
},
"account": {
Name: "Read",
Category: "Account",
},
}