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 (
|
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…
Reference in New Issue