mirror of
https://github.com/openziti/zrok.git
synced 2025-08-04 22:29:14 +02:00
52 lines
1.5 KiB
Go
52 lines
1.5 KiB
Go
package controller
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/go-openapi/runtime/middleware"
|
|
"github.com/openziti/edge-api/rest_management_api_client/identity"
|
|
"github.com/openziti/zrok/controller/zrokEdgeSdk"
|
|
"github.com/openziti/zrok/rest_model_zrok"
|
|
"github.com/openziti/zrok/rest_server_zrok/operations/admin"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
type deleteIdentityHandler struct{}
|
|
|
|
func newDeleteIdentityHandler() *deleteIdentityHandler {
|
|
return &deleteIdentityHandler{}
|
|
}
|
|
|
|
func (h *deleteIdentityHandler) Handle(params admin.DeleteIdentityParams, principal *rest_model_zrok.Principal) middleware.Responder {
|
|
identityZId := params.Body.ZID
|
|
|
|
if !principal.Admin {
|
|
logrus.Errorf("invalid admin principal")
|
|
return admin.NewDeleteIdentityUnauthorized()
|
|
}
|
|
|
|
edge, err := zrokEdgeSdk.Client(cfg.Ziti)
|
|
if err != nil {
|
|
logrus.Errorf("error getting edge client: %v", err)
|
|
return admin.NewDeleteIdentityInternalServerError()
|
|
}
|
|
|
|
if err := zrokEdgeSdk.DeleteEdgeRouterPolicy(identityZId, edge); err != nil {
|
|
logrus.Errorf("error deleting edge router policy: %v", err)
|
|
return admin.NewDeleteIdentityInternalServerError()
|
|
}
|
|
|
|
req := &identity.DeleteIdentityParams{
|
|
ID: identityZId,
|
|
Context: context.Background(),
|
|
}
|
|
req.SetTimeout(30 * time.Second)
|
|
if _, err := edge.Identity.DeleteIdentity(req, nil); err != nil {
|
|
logrus.Errorf("error deleting identity '%v': %v", identityZId, err)
|
|
return admin.NewDeleteIdentityInternalServerError()
|
|
}
|
|
|
|
return admin.NewDeleteIdentityOK()
|
|
}
|