mirror of
https://codeberg.org/git-pages/git-pages.git
synced 2026-07-08 00:56:31 +00:00
Allow forge auth for any repo in the forge user's namespace.
This commit is contained in:
+14
-3
@@ -9,6 +9,7 @@ import (
|
||||
"net"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"path"
|
||||
"slices"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -698,12 +699,22 @@ func authorizeGogsUser(repoURL string, forgeToken string) (*Authorization, error
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err = checkGogsRepositoryPushPermission(parsedRepoURL, forgeToken); err != nil {
|
||||
authorizedUser, err := fetchGogsAuthorizedUser(parsedRepoURL, forgeToken)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
authorizedUser, err := fetchGogsAuthorizedUser(parsedRepoURL, forgeToken)
|
||||
if err != nil {
|
||||
ownerAndRepo := strings.TrimPrefix(path.Clean(parsedRepoURL.Path), "/")
|
||||
owner, _, found := strings.Cut(ownerAndRepo, "/")
|
||||
if found && owner == authorizedUser.GetHandle() {
|
||||
// The authorized user owns any repository in their namespace.
|
||||
return &Authorization{
|
||||
repoURLs: []string{repoURL},
|
||||
forgeUser: authorizedUser,
|
||||
}, nil
|
||||
}
|
||||
|
||||
if err = checkGogsRepositoryPushPermission(parsedRepoURL, forgeToken); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user