MCPcopy Create free account
hub / github.com/actiontech/dtle / DeleteUserV2

Function DeleteUserV2

api/handler/v2/user.go:273–305  ·  view source on GitHub ↗

@Id DeleteUserV2 @Description delete user. @Tags user @accept application/x-www-form-urlencoded @Security ApiKeyAuth @Param tenant formData string true "tenant" @Param username formData string true "user name" @Success 200 {object} models.DeleteUserRespV2 @Router /v2/user/delete [post]

(c echo.Context)

Source from the content-addressed store, hash-verified

271// @Success 200 {object} models.DeleteUserRespV2
272// @Router /v2/user/delete [post]
273func DeleteUserV2(c echo.Context) error {
274 logger := handler.NewLogger().Named("DeleteUserV2")
275 reqParam := new(models.DeleteUserReqV2)
276 if err := handler.BindAndValidate(logger, c, reqParam); err != nil {
277 return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(err))
278 }
279 // cannot delete default supper user
280 if reqParam.Tenant == common.DefaultAdminTenant && reqParam.Username == common.DefaultAdminUser {
281 return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("cannot delete superuser")))
282 }
283 tenant, user := GetUserName(c)
284 // cannot delete self
285 if reqParam.Tenant == tenant && reqParam.Username == user {
286 return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("cannot delete self")))
287 }
288
289 if hasAccess, err := checkUserAccess(logger, c, fmt.Sprintf("%s:%s", reqParam.Tenant, reqParam.Username)); err != nil || !hasAccess {
290 return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("current user has no access to operate group %v ; err : %v", reqParam.Tenant, err)))
291 }
292
293 storeManager, err := common.NewStoreManager([]string{handler.ConsulAddr}, logger)
294 if err != nil {
295 return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("get consul client failed: %v", err)))
296 }
297 if err := storeManager.DeleteUser(reqParam.Tenant, reqParam.Username); nil != err {
298 return c.JSON(http.StatusInternalServerError,
299 models.BuildBaseResp(fmt.Errorf("delete metadata of user[userName=%v,userGroup=%v] from consul failed: %v", reqParam.Username, reqParam.Tenant, err)))
300 }
301
302 return c.JSON(http.StatusOK, &models.DeleteUserRespV2{
303 BaseResp: models.BuildBaseResp(nil),
304 })
305}
306
307// @Id GetCurrentUserV2
308// @Description get current user.

Callers

nothing calls this directly

Calls 7

DeleteUserMethod · 0.95
NewLoggerFunction · 0.92
BindAndValidateFunction · 0.92
BuildBaseRespFunction · 0.92
NewStoreManagerFunction · 0.92
GetUserNameFunction · 0.85
checkUserAccessFunction · 0.85

Tested by

no test coverage detected