gitea源码

providers_openid.go 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // Copyright 2021 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package oauth2
  4. import (
  5. "html/template"
  6. "code.gitea.io/gitea/modules/log"
  7. "code.gitea.io/gitea/modules/setting"
  8. "code.gitea.io/gitea/modules/svg"
  9. "github.com/markbates/goth"
  10. "github.com/markbates/goth/providers/openidConnect"
  11. )
  12. // OpenIDProvider is a GothProvider for OpenID
  13. type OpenIDProvider struct{}
  14. func (o *OpenIDProvider) SupportSSHPublicKey() bool {
  15. return true
  16. }
  17. // Name provides the technical name for this provider
  18. func (o *OpenIDProvider) Name() string {
  19. return "openidConnect"
  20. }
  21. // DisplayName returns the friendly name for this provider
  22. func (o *OpenIDProvider) DisplayName() string {
  23. return "OpenID Connect"
  24. }
  25. // IconHTML returns icon HTML for this provider
  26. func (o *OpenIDProvider) IconHTML(size int) template.HTML {
  27. return svg.RenderHTML("gitea-openid", size, "tw-mr-2")
  28. }
  29. // CreateGothProvider creates a GothProvider from this Provider
  30. func (o *OpenIDProvider) CreateGothProvider(providerName, callbackURL string, source *Source) (goth.Provider, error) {
  31. scopes := setting.OAuth2Client.OpenIDConnectScopes
  32. if len(scopes) == 0 {
  33. scopes = append(scopes, source.Scopes...)
  34. }
  35. provider, err := openidConnect.New(source.ClientID, source.ClientSecret, callbackURL, source.OpenIDConnectAutoDiscoveryURL, scopes...)
  36. if err != nil {
  37. log.Warn("Failed to create OpenID Connect Provider with name '%s' with url '%s': %v", providerName, source.OpenIDConnectAutoDiscoveryURL, err)
  38. }
  39. return provider, err
  40. }
  41. // CustomURLSettings returns the custom url settings for this provider
  42. func (o *OpenIDProvider) CustomURLSettings() *CustomURLSettings {
  43. return nil
  44. }
  45. var _ GothProvider = &OpenIDProvider{}
  46. func init() {
  47. RegisterGothProvider(&OpenIDProvider{})
  48. }