131 lines
3.9 KiB
Go
131 lines
3.9 KiB
Go
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)
|
|
}
|