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]
()
| 191 | // @Security ApiKeyAuth |
| 192 | // @Router /users/{name} [delete] |
| 193 | func (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() |
no test coverage detected