mirror of https://github.com/portainer/portainer
refactor(oauth): move build url logic to service
parent
c5c06b307a
commit
60040e90d0
|
@ -3,9 +3,6 @@ package auth
|
|||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"golang.org/x/oauth2"
|
||||
|
||||
"github.com/asaskevich/govalidator"
|
||||
httperror "github.com/portainer/libhttp/error"
|
||||
|
@ -88,20 +85,7 @@ func (handler *Handler) loginOAuth(w http.ResponseWriter, r *http.Request) *http
|
|||
return &httperror.HandlerError{http.StatusForbidden, "OAuth authentication is disabled", err}
|
||||
}
|
||||
|
||||
endpoint := oauth2.Endpoint{
|
||||
AuthURL: settings.OAuthSettings.AuthorizationURI,
|
||||
TokenURL: settings.OAuthSettings.AccessTokenURI,
|
||||
}
|
||||
|
||||
oauthConfig := &oauth2.Config{
|
||||
ClientID: settings.OAuthSettings.ClientID,
|
||||
ClientSecret: settings.OAuthSettings.ClientSecret,
|
||||
Endpoint: endpoint,
|
||||
RedirectURL: settings.OAuthSettings.RedirectURI,
|
||||
Scopes: strings.Split(settings.OAuthSettings.Scopes, ","),
|
||||
}
|
||||
|
||||
url := oauthConfig.AuthCodeURL("portainer")
|
||||
url := handler.OAuthService.BuildLoginURL(settings.OAuthSettings)
|
||||
http.Redirect(w, r, url, http.StatusTemporaryRedirect)
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -165,3 +165,21 @@ func (*Service) GetUsername(token string, settings *portainer.OAuthSettings) (st
|
|||
Body: body,
|
||||
}
|
||||
}
|
||||
|
||||
// BuildLoginURL creates a login url for the oauth provider
|
||||
func (*Service) BuildLoginURL(oauthSettings portainer.OAuthSettings) string {
|
||||
endpoint := oauth2.Endpoint{
|
||||
AuthURL: oauthSettings.AuthorizationURI,
|
||||
TokenURL: oauthSettings.AccessTokenURI,
|
||||
}
|
||||
|
||||
oauthConfig := &oauth2.Config{
|
||||
ClientID: oauthSettings.ClientID,
|
||||
ClientSecret: oauthSettings.ClientSecret,
|
||||
Endpoint: endpoint,
|
||||
RedirectURL: oauthSettings.RedirectURI,
|
||||
Scopes: strings.Split(oauthSettings.Scopes, ","),
|
||||
}
|
||||
|
||||
return oauthConfig.AuthCodeURL("portainer")
|
||||
}
|
||||
|
|
|
@ -766,6 +766,7 @@ type (
|
|||
OAuthService interface {
|
||||
GetAccessToken(code string, settings *OAuthSettings) (string, error)
|
||||
GetUsername(token string, settings *OAuthSettings) (string, error)
|
||||
BuildLoginURL(oauthSettings OAuthSettings) string
|
||||
}
|
||||
|
||||
// SwarmStackManager represents a service to manage Swarm stacks
|
||||
|
|
Loading…
Reference in New Issue