MCPcopy Index your code
hub / github.com/1Panel-dev/KubePi / DeleteUser

Method DeleteUser

internal/api/v1/user/user.go:193–264  ·  view source on GitHub ↗

Delete User @Tags users @Summary Delete user by name @Description Delete user by name @Accept json @Produce json @Param name path string true "用户名称" @Success 200 {object} v1User.User @Security ApiKeyAuth @Router /users/{name} [delete]

()

Source from the content-addressed store, hash-verified

191// @Security ApiKeyAuth
192// @Router /users/{name} [delete]
193func (h *Handler) DeleteUser() iris.Handler {
194 return func(ctx *context.Context) {
195 userName := ctx.Params().GetString("name")
196
197 u := ctx.Values().Get("profile")
198 profile := u.(session.UserProfile)
199
200 if userName == profile.Name {
201 ctx.StatusCode(iris.StatusBadRequest)
202 ctx.Values().Set("message", fmt.Errorf("can not delete yourself"))
203 return
204 }
205 tx, _ := server.DB().Begin(true)
206 txOptions := common.DBOptions{DB: tx}
207
208 rbs, err := h.roleBindingService.GetRoleBindingBySubject(v1Role.Subject{
209 Kind: "User",
210 Name: userName,
211 }, txOptions)
212 if err != nil && !errors.Is(err, storm.ErrNotFound) {
213 _ = tx.Rollback()
214 ctx.StatusCode(iris.StatusInternalServerError)
215 ctx.Values().Set("message", err.Error())
216 return
217 }
218 for i := range rbs {
219 if err := h.roleBindingService.Delete(rbs[i].Name, txOptions); err != nil {
220 _ = tx.Rollback()
221 ctx.StatusCode(iris.StatusInternalServerError)
222 ctx.Values().Set("message", err.Error())
223 return
224 }
225 }
226 cbs, err := h.clusterBindingService.GetBindingsByUserName(userName, txOptions)
227 if err != nil && !errors.Is(err, storm.ErrNotFound) {
228 _ = tx.Rollback()
229 ctx.StatusCode(iris.StatusInternalServerError)
230 ctx.Values().Set("message", err.Error())
231 return
232 }
233
234 for i := range cbs {
235 c, err := h.clusterService.Get(cbs[i].ClusterRef, common.DBOptions{})
236 if err != nil {
237 ctx.StatusCode(iris.StatusInternalServerError)
238 ctx.Values().Set("message", fmt.Sprintf("get cluster failed: %s", err.Error()))
239 return
240 }
241 k := kubernetes.NewKubernetes(c)
242 if err := k.CleanManagedClusterRoleBinding(cbs[i].UserRef); err != nil {
243 server.Logger().Errorf("can not delete cluster member %s : %s", cbs[i].UserRef, err)
244 }
245 if err := k.CleanManagedRoleBinding(cbs[i].UserRef); err != nil {
246 server.Logger().Errorf("can not delete cluster member %s : %s", cbs[i].UserRef, err)
247 }
248
249 if err := h.clusterBindingService.Delete(cbs[i].Name, txOptions); err != nil {
250 _ = tx.Rollback()

Callers 1

InstallFunction · 0.95

Calls 11

DBFunction · 0.92
NewKubernetesFunction · 0.92
LoggerFunction · 0.92
ErrorMethod · 0.80
GetMethod · 0.65
DeleteMethod · 0.65
GetBindingsByUserNameMethod · 0.65
SetMethod · 0.45

Tested by

no test coverage detected