package v1 import ( "github.com/labstack/echo/v4" v1 "github.com/chaitin/panda-wiki/api/kb/v1" "github.com/chaitin/panda-wiki/consts" "github.com/chaitin/panda-wiki/domain" ) // KBUserList // // @Summary KBUserList // @Description KBUserList // @Tags knowledge_base // @Accept json // @Produce json // @Security bearerAuth // @Param kb_id query string true "Knowledge Base ID" // @Success 200 {object} domain.PWResponse{data=[]v1.KBUserListItemResp} // @Router /api/v1/knowledge_base/user/list [get] func (h *KnowledgeBaseHandler) KBUserList(c echo.Context) error { var req v1.KBUserListReq if err := c.Bind(&req); err != nil { return h.NewResponseWithError(c, "request params is invalid", err) } if err := c.Validate(req); err != nil { return h.NewResponseWithError(c, "validate request params failed", err) } resp, err := h.usecase.GetKBUserList(c.Request().Context(), req) if err != nil { return h.NewResponseWithError(c, "get kb user list failed", err) } return h.NewResponseWithData(c, resp) } // KBUserInvite // // @Summary KBUserInvite // @Description Invite user to knowledge base // @Tags knowledge_base // @Accept json // @Produce json // @Security bearerAuth // @Param param body v1.KBUserInviteReq true "Invite User Request" // @Success 200 {object} domain.Response // @Router /api/v1/knowledge_base/user/invite [post] func (h *KnowledgeBaseHandler) KBUserInvite(c echo.Context) error { var req v1.KBUserInviteReq if err := c.Bind(&req); err != nil { return h.NewResponseWithError(c, "invalid request", err) } if err := c.Validate(&req); err != nil { return h.NewResponseWithError(c, "validate request failed", err) } if !domain.GetBaseEditionLimitation(c.Request().Context()).AllowAdminPerm && req.Perm != consts.UserKBPermissionFullControl { return h.NewResponseWithError(c, "当前版本不支持管理员分权控制", nil) } err := h.usecase.KBUserInvite(c.Request().Context(), req) if err != nil { return h.NewResponseWithError(c, "invite user to kb failed", err) } return h.NewResponseWithData(c, nil) } // KBUserUpdate // // @Summary KBUserUpdate // @Description Update user permission in knowledge base // @Tags knowledge_base // @Accept json // @Produce json // @Security bearerAuth // @Param param body v1.KBUserUpdateReq true "Update User Permission Request" // @Success 200 {object} domain.Response // @Router /api/v1/knowledge_base/user/update [patch] func (h *KnowledgeBaseHandler) KBUserUpdate(c echo.Context) error { var req v1.KBUserUpdateReq if err := c.Bind(&req); err != nil { return h.NewResponseWithError(c, "invalid request", err) } if err := c.Validate(&req); err != nil { return h.NewResponseWithError(c, "validate request failed", err) } if !domain.GetBaseEditionLimitation(c.Request().Context()).AllowAdminPerm && req.Perm != consts.UserKBPermissionFullControl { return h.NewResponseWithError(c, "当前版本不支持管理员分权控制", nil) } err := h.usecase.UpdateUserKB(c.Request().Context(), req) if err != nil { return h.NewResponseWithError(c, "update user kb permission failed", err) } return h.NewResponseWithData(c, nil) } // KBUserDelete // // @Summary KBUserDelete // @Description Remove user from knowledge base // @Tags knowledge_base // @Accept json // @Produce json // @Security bearerAuth // @Param param query v1.KBUserDeleteReq true "Remove User Request" // @Success 200 {object} domain.Response // @Router /api/v1/knowledge_base/user/delete [delete] func (h *KnowledgeBaseHandler) KBUserDelete(c echo.Context) error { var req v1.KBUserDeleteReq if err := c.Bind(&req); err != nil { return h.NewResponseWithError(c, "invalid request", err) } if err := c.Validate(&req); err != nil { return h.NewResponseWithError(c, "validate request failed", err) } err := h.usecase.KBUserDelete(c.Request().Context(), req) if err != nil { return h.NewResponseWithError(c, "remove user from kb failed", err) } return h.NewResponseWithData(c, nil) }