mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-27 10:18:30 +00:00
c23c843abf
(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 commit3cb2cf907a
) (cherry picked from commit8e8b2335cc
) (cherry picked from commit02b71042b3
) (cherry picked from commit5ec9137eff
)
60 lines
1.7 KiB
Go
60 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{})
|
|
}
|