Fix GetScope method

This commit is contained in:
harryzcy 2022-09-07 10:47:08 -04:00
parent 4b570b83f8
commit 1ebfc83bb2
No known key found for this signature in database
GPG key ID: CC2953E050C19686

View file

@ -15,7 +15,6 @@ import (
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web/middleware" "code.gitea.io/gitea/modules/web/middleware"
"gitea.com/go-chi/binding" "gitea.com/go-chi/binding"
@ -407,12 +406,41 @@ func (f *NewAccessTokenForm) Validate(req *http.Request, errs binding.Errors) bi
} }
func (f *NewAccessTokenForm) GetScope() auth_model.AccessTokenScope { func (f *NewAccessTokenForm) GetScope() auth_model.AccessTokenScope {
scopesMapping := map[string]string{
"Repo": auth_model.AccessTokenScopeRepo,
"RepoStatus": auth_model.AccessTokenScopeRepoStatus,
"PublicRepo": auth_model.AccessTokenScopePublicRepo,
"AdminOrg": auth_model.AccessTokenScopeAdminOrg,
"WriteOrg": auth_model.AccessTokenScopeWriteOrg,
"ReadOrg": auth_model.AccessTokenScopeReadOrg,
"AdminPublicKey": auth_model.AccessTokenScopeAdminPublicKey,
"WritePublicKey": auth_model.AccessTokenScopeWritePublicKey,
"ReadPublicKey": auth_model.AccessTokenScopeReadPublicKey,
"AdminRepoHook": auth_model.AccessTokenScopeAdminRepoHook,
"WriteRepoHook": auth_model.AccessTokenScopeWriteRepoHook,
"ReadRepoHook": auth_model.AccessTokenScopeReadRepoHook,
"Notification": auth_model.AccessTokenScopeNotification,
"User": auth_model.AccessTokenScopeUser,
"ReadUser": auth_model.AccessTokenScopeReadUser,
"UserEmail": auth_model.AccessTokenScopeUserEmail,
"UserFollow": auth_model.AccessTokenScopeUserFollow,
"DeleteRepo": auth_model.AccessTokenScopeDeleteRepo,
"Package": auth_model.AccessTokenScopePackage,
"WritePackage": auth_model.AccessTokenScopeWritePackage,
"ReadPackage": auth_model.AccessTokenScopeReadPackage,
"DeletePackage": auth_model.AccessTokenScopeDeletePackage,
"AdminGPGKey": auth_model.AccessTokenScopeAdminGPGKey,
"WriteGPGKey": auth_model.AccessTokenScopeWriteGPGKey,
"ReadGPGKey": auth_model.AccessTokenScopeReadGPGKey,
"Sudo": auth_model.AccessTokenScopeSudo,
}
scope := "" scope := ""
v := reflect.ValueOf(*f) v := reflect.ValueOf(*f)
for i := 0; i < v.NumField(); i++ { for i := 0; i < v.NumField(); i++ {
if strings.HasPrefix(v.Type().Field(i).Name, "Scope") && v.Field(i).Bool() { if strings.HasPrefix(v.Type().Field(i).Name, "Scope") && v.Field(i).Bool() {
singleScope := v.Type().Field(i).Name[5:] singleScope := strings.TrimPrefix(v.Type().Field(i).Name, "Scope")
scope += util.ToSnakeCase(singleScope) + "," scope += scopesMapping[singleScope] + ","
} }
} }
scope = strings.TrimSuffix(scope, ",") scope = strings.TrimSuffix(scope, ",")