mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-10-29 05:21:04 +00:00
(cherry picked from commitaea4ab25a9) (cherry picked from commitd386b212c4) (cherry picked from commitc4935f08ad) (cherry picked from commitdc6ca7cd25) (cherry picked from commit25296d5a3c) (cherry picked from commit3d54c64c5f) (cherry picked from commit6ece0b9d01) (cherry picked from commit3b39962033) (cherry picked from commit5e2167cd03) (cherry picked from commite676d7b265) (cherry picked from commit9cd258e865) (cherry picked from commit0a8d58c159) (cherry picked from commitb66d06823a) (cherry picked from commit4fbe2a0047) (cherry picked from commita225e0c9b4) (cherry picked from commit21b670b927) (cherry picked from commitd586e335d5) (cherry picked from commit7ab21549a3) (cherry picked from commiteb3235039f) (cherry picked from commit02b16875cf)
59 lines
1.7 KiB
Go
59 lines
1.7 KiB
Go
// Copyright 2021 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package oauth2
|
|
|
|
import (
|
|
"html/template"
|
|
|
|
"code.gitea.io/gitea/modules/log"
|
|
"code.gitea.io/gitea/modules/setting"
|
|
"code.gitea.io/gitea/modules/svg"
|
|
|
|
"github.com/markbates/goth"
|
|
"github.com/markbates/goth/providers/openidConnect"
|
|
)
|
|
|
|
// OpenIDProvider is a GothProvider for OpenID
|
|
type OpenIDProvider struct{}
|
|
|
|
// Name provides the technical name for this provider
|
|
func (o *OpenIDProvider) Name() string {
|
|
return "openidConnect"
|
|
}
|
|
|
|
// DisplayName returns the friendly name for this provider
|
|
func (o *OpenIDProvider) DisplayName() string {
|
|
return "OpenID Connect"
|
|
}
|
|
|
|
// IconHTML returns icon HTML for this provider
|
|
func (o *OpenIDProvider) IconHTML(size int) template.HTML {
|
|
return svg.RenderHTML("gitea-openid", size, "gt-mr-3")
|
|
}
|
|
|
|
// CreateGothProvider creates a GothProvider from this Provider
|
|
func (o *OpenIDProvider) CreateGothProvider(providerName, callbackURL string, source *Source) (goth.Provider, error) {
|
|
scopes := setting.OAuth2Client.OpenIDConnectScopes
|
|
if len(scopes) == 0 {
|
|
scopes = append(scopes, source.Scopes...)
|
|
}
|
|
|
|
provider, err := openidConnect.New(source.ClientID, source.ClientSecret, callbackURL, source.OpenIDConnectAutoDiscoveryURL, scopes...)
|
|
if err != nil {
|
|
log.Warn("Failed to create OpenID Connect Provider with name '%s' with url '%s': %v", providerName, source.OpenIDConnectAutoDiscoveryURL, err)
|
|
}
|
|
provider.HTTPClient = HTTPClient
|
|
return provider, err
|
|
}
|
|
|
|
// CustomURLSettings returns the custom url settings for this provider
|
|
func (o *OpenIDProvider) CustomURLSettings() *CustomURLSettings {
|
|
return nil
|
|
}
|
|
|
|
var _ GothProvider = &OpenIDProvider{}
|
|
|
|
func init() {
|
|
RegisterGothProvider(&OpenIDProvider{})
|
|
}
|