refactor(oauth): move build url logic to service

pull/2749/head
Chaim Lev Ari 6 years ago
parent c5c06b307a
commit 60040e90d0

@ -3,9 +3,6 @@ package auth
import ( import (
"log" "log"
"net/http" "net/http"
"strings"
"golang.org/x/oauth2"
"github.com/asaskevich/govalidator" "github.com/asaskevich/govalidator"
httperror "github.com/portainer/libhttp/error" 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} return &httperror.HandlerError{http.StatusForbidden, "OAuth authentication is disabled", err}
} }
endpoint := oauth2.Endpoint{ url := handler.OAuthService.BuildLoginURL(settings.OAuthSettings)
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")
http.Redirect(w, r, url, http.StatusTemporaryRedirect) http.Redirect(w, r, url, http.StatusTemporaryRedirect)
return nil return nil
} }

@ -165,3 +165,21 @@ func (*Service) GetUsername(token string, settings *portainer.OAuthSettings) (st
Body: body, 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 { OAuthService interface {
GetAccessToken(code string, settings *OAuthSettings) (string, error) GetAccessToken(code string, settings *OAuthSettings) (string, error)
GetUsername(token string, settings *OAuthSettings) (string, error) GetUsername(token string, settings *OAuthSettings) (string, error)
BuildLoginURL(oauthSettings OAuthSettings) string
} }
// SwarmStackManager represents a service to manage Swarm stacks // SwarmStackManager represents a service to manage Swarm stacks

Loading…
Cancel
Save