mirror of
https://codeberg.org/Codeberg/pages-server.git
synced 2025-04-24 22:06:57 +00:00
34 lines
1.1 KiB
Go
34 lines
1.1 KiB
Go
|
package handler
|
||
|
|
||
|
import (
|
||
|
"codeberg.org/codeberg/pages/server/cache"
|
||
|
"codeberg.org/codeberg/pages/server/context"
|
||
|
"codeberg.org/codeberg/pages/server/dns"
|
||
|
"codeberg.org/codeberg/pages/server/gitea"
|
||
|
"codeberg.org/codeberg/pages/server/upstream"
|
||
|
"github.com/rs/zerolog"
|
||
|
)
|
||
|
|
||
|
func handleAuth(log zerolog.Logger, ctx *context.Context, giteaClient *gitea.Client,
|
||
|
mainDomainSuffix string,
|
||
|
trimmedHost string,
|
||
|
dnsLookupCache, authCache cache.SetGetKey,
|
||
|
) []string {
|
||
|
// Get credentials for a given branch/repo/owner
|
||
|
targetOwner, targetRepo, targetBranch := dns.GetTargetFromDNS(trimmedHost, mainDomainSuffix, dnsLookupCache)
|
||
|
var credentials []string
|
||
|
canonicalLink := false
|
||
|
|
||
|
// Try to use the given repo on the given branch or the default branch
|
||
|
log.Debug().Msg("auth preparations, trying to get credentials")
|
||
|
if targetOpt, works := tryBranch(log, ctx, giteaClient, &upstream.Options{
|
||
|
TargetOwner: targetOwner,
|
||
|
TargetRepo: targetRepo,
|
||
|
TargetBranch: targetBranch,
|
||
|
}, canonicalLink); works {
|
||
|
credentials = targetOpt.CheckAuth(giteaClient, authCache)
|
||
|
}
|
||
|
|
||
|
return credentials
|
||
|
}
|