mirror of https://github.com/portainer/portainer
feat(api): rewrite SwarmInspect operation (#2065)
* feat(api): rewrite SwarmInspect operation * refactor(api): remove useless statementspull/2067/head
parent
b1227b17e1
commit
98b0ab50fc
|
@ -248,7 +248,7 @@ func (p *proxyTransport) proxyNodeRequest(request *http.Request) (*http.Response
|
||||||
func (p *proxyTransport) proxySwarmRequest(request *http.Request) (*http.Response, error) {
|
func (p *proxyTransport) proxySwarmRequest(request *http.Request) (*http.Response, error) {
|
||||||
switch requestPath := request.URL.Path; requestPath {
|
switch requestPath := request.URL.Path; requestPath {
|
||||||
case "/swarm":
|
case "/swarm":
|
||||||
return p.executeDockerRequest(request)
|
return p.rewriteOperation(request, swarmInspectOperation)
|
||||||
default:
|
default:
|
||||||
// assume /swarm/{action}
|
// assume /swarm/{action}
|
||||||
return p.administratorOperation(request)
|
return p.administratorOperation(request)
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
package proxy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// swarmInspectOperation extracts the response as a JSON object and rewrites the response based
|
||||||
|
// on the current user role. Sensitive fields are deleted from the response for non-administrator users.
|
||||||
|
func swarmInspectOperation(response *http.Response, executor *operationExecutor) error {
|
||||||
|
// SwarmInspect response is a JSON object
|
||||||
|
// https://docs.docker.com/engine/api/v1.30/#operation/SwarmInspect
|
||||||
|
responseObject, err := getResponseAsJSONOBject(response)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if !executor.operationContext.isAdmin {
|
||||||
|
delete(responseObject, "JoinTokens")
|
||||||
|
delete(responseObject, "TLSInfo")
|
||||||
|
}
|
||||||
|
|
||||||
|
return rewriteResponse(response, responseObject, http.StatusOK)
|
||||||
|
}
|
Loading…
Reference in New Issue