@Id UserListV2 @Description get user list. @Tags user @Success 200 {object} models.UserListResp @Security ApiKeyAuth @Param filter_username query string false "filter user name" @Param filter_tenant query string false "filter tenant" @Router /v2/user/list [get]
(c echo.Context)
| 26 | // @Param filter_tenant query string false "filter tenant" |
| 27 | // @Router /v2/user/list [get] |
| 28 | func UserListV2(c echo.Context) error { |
| 29 | logger := handler.NewLogger().Named("UserListV2") |
| 30 | reqParam := new(models.UserListReq) |
| 31 | if err := handler.BindAndValidate(logger, c, reqParam); err != nil { |
| 32 | return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(err)) |
| 33 | } |
| 34 | |
| 35 | storeManager, err := common.NewStoreManager([]string{handler.ConsulAddr}, logger) |
| 36 | if err != nil { |
| 37 | return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("consul_addr=%v; connect to consul failed: %v", handler.ConsulAddr, err))) |
| 38 | } |
| 39 | userList, err := storeManager.FindUserList(reqParam.FilterTenant) |
| 40 | if nil != err { |
| 41 | return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("consul_addr=%v ; get job status list failed: %v", handler.ConsulAddr, err))) |
| 42 | } |
| 43 | |
| 44 | currentUser, err := getCurrentUser(c) |
| 45 | if err != nil { |
| 46 | return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(err)) |
| 47 | } |
| 48 | users := make([]*common.User, 0) |
| 49 | for _, user := range userList { |
| 50 | if !userHasAccess(storeManager, fmt.Sprintf("%s:%s", user.Tenant, user.Username), currentUser) { |
| 51 | continue |
| 52 | } |
| 53 | if strings.HasPrefix(user.Username, reqParam.FilterUsername) { |
| 54 | users = append(users, user) |
| 55 | } |
| 56 | } |
| 57 | |
| 58 | return c.JSON(http.StatusOK, &models.UserListResp{ |
| 59 | UserList: users, |
| 60 | BaseResp: models.BuildBaseResp(nil), |
| 61 | }) |
| 62 | } |
| 63 | |
| 64 | // @Id TenantListV2 |
| 65 | // @Description get tenant list. |
nothing calls this directly
no test coverage detected