github.com/covergates/covergates@v0.2.2-0.20201009050117-42ef8a19fb95/modules/login/login.go (about)

     1  package login
     2  
     3  import (
     4  	"github.com/covergates/covergates/config"
     5  	"github.com/covergates/covergates/core"
     6  	"github.com/drone/go-login/login"
     7  	"github.com/drone/go-login/login/gitea"
     8  	"github.com/drone/go-login/login/github"
     9  	"github.com/drone/go-login/login/gitlab"
    10  )
    11  
    12  type middleware struct {
    13  	config *config.Config
    14  }
    15  
    16  // NewMiddleware of login
    17  func NewMiddleware(config *config.Config) core.LoginMiddleware {
    18  	return &middleware{
    19  		config: config,
    20  	}
    21  }
    22  
    23  func (m *middleware) Handler(scm core.SCMProvider) login.Middleware {
    24  	var middleware login.Middleware
    25  	switch scm {
    26  	case core.Github:
    27  		middleware = &github.Config{
    28  			ClientID:     m.config.Github.ClientID,
    29  			ClientSecret: m.config.Github.ClientSecret,
    30  			Server:       m.config.Github.Server,
    31  			Scope:        m.config.Github.Scope,
    32  			Client:       BasicClient(m.config.Github.SkipVerity),
    33  		}
    34  	case core.Gitea:
    35  		middleware = &gitea.Config{
    36  			ClientID:     m.config.Gitea.ClientID,
    37  			ClientSecret: m.config.Gitea.ClientSecret,
    38  			Server:       m.config.Gitea.Server,
    39  			Scope:        m.config.Gitea.Scope,
    40  			RedirectURL:  m.config.Server.URL() + "/login/gitea",
    41  			Client:       BasicClient(m.config.Gitea.SkipVerity),
    42  		}
    43  	case core.GitLab:
    44  		middleware = &gitlab.Config{
    45  			ClientID:     m.config.GitLab.ClientID,
    46  			ClientSecret: m.config.GitLab.ClientSecret,
    47  			RedirectURL:  m.config.Server.URL() + "/login/gitlab",
    48  			Server:       m.config.GitLab.Server,
    49  			Client:       BasicClient(m.config.GitLab.SkipVerity),
    50  			Scope:        m.config.GitLab.Scope,
    51  		}
    52  	}
    53  	return middleware
    54  }