Files
zrok/controller/deleteIdentity.go

48 lines
1.4 KiB
Go

package controller
import (
"fmt"
"github.com/go-openapi/runtime/middleware"
"github.com/michaelquigley/df/dl"
"github.com/openziti/zrok/v2/controller/automation"
"github.com/openziti/zrok/v2/rest_model_zrok"
"github.com/openziti/zrok/v2/rest_server_zrok/operations/admin"
)
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 {
dl.Errorf("invalid admin principal")
return admin.NewDeleteIdentityUnauthorized()
}
ziti, err := automation.NewZitiAutomation(cfg.Ziti)
if err != nil {
dl.Errorf("error getting automation client: %v", err)
return admin.NewDeleteIdentityInternalServerError()
}
// delete edge router policy for the identity
erpFilter := fmt.Sprintf("name=\"%v\"", identityZId)
if err := ziti.EdgeRouterPolicies.DeleteWithFilter(erpFilter); err != nil {
dl.Errorf("error deleting edge router policy: %v", err)
return admin.NewDeleteIdentityInternalServerError()
}
// delete the identity
if err := ziti.Identities.Delete(identityZId); err != nil {
dl.Errorf("error deleting identity '%v': %v", identityZId, err)
return admin.NewDeleteIdentityInternalServerError()
}
return admin.NewDeleteIdentityOK()
}