From 5f2fa2f0333203161ba8ed42407e1e6e457fe965 Mon Sep 17 00:00:00 2001 From: lishuang Date: Sat, 13 May 2023 19:12:21 +0800 Subject: [PATCH] feat: finish the edit for space and space member. --- code/rest/space_controller.go | 42 ++++++++++++++++++++++++++++ code/rest/space_member_controller.go | 23 +++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/code/rest/space_controller.go b/code/rest/space_controller.go index c95de2d..cd053f3 100644 --- a/code/rest/space_controller.go +++ b/code/rest/space_controller.go @@ -61,6 +61,7 @@ func (this *SpaceController) RegisterRoutes() map[string]func(writer http.Respon routeMap := make(map[string]func(writer http.ResponseWriter, request *http.Request)) routeMap["/api/space/create"] = this.Wrap(this.Create, USER_ROLE_ADMINISTRATOR) + routeMap["/api/space/edit"] = this.Wrap(this.Edit, USER_ROLE_ADMINISTRATOR) routeMap["/api/space/delete"] = this.Wrap(this.Delete, USER_ROLE_ADMINISTRATOR) routeMap["/api/space/detail"] = this.Wrap(this.Detail, USER_ROLE_USER) routeMap["/api/space/page"] = this.Wrap(this.Page, USER_ROLE_USER) @@ -119,6 +120,47 @@ func (this *SpaceController) Create(writer http.ResponseWriter, request *http.Re return this.Success(space) } +func (this *SpaceController) Edit(writer http.ResponseWriter, request *http.Request) *result.WebResult { + //space's name + spaceUuid := request.FormValue("spaceUuid") + sizeLimitStr := request.FormValue("sizeLimit") + totalSizeLimitStr := request.FormValue("totalSizeLimit") + + //only admin can edit user's sizeLimit + var sizeLimit int64 = 0 + if sizeLimitStr == "" { + panic("space's limit size is required") + } else { + intSizeLimit, err := strconv.Atoi(sizeLimitStr) + if err != nil { + this.PanicError(err) + } + sizeLimit = int64(intSizeLimit) + } + + var totalSizeLimit int64 = 0 + if totalSizeLimitStr == "" { + panic("space's total limit size is required") + } else { + intTotalSizeLimit, err := strconv.Atoi(totalSizeLimitStr) + if err != nil { + this.PanicError(err) + } + totalSizeLimit = int64(intTotalSizeLimit) + } + + space := this.spaceDao.CheckByUuid(spaceUuid) + spaceUser := this.userDao.CheckByUuid(space.UserUuid) + spaceUser.SizeLimit = sizeLimit + spaceUser.TotalSizeLimit = totalSizeLimit + + spaceUser = this.userDao.Save(spaceUser) + + space.User = spaceUser + + return this.Success(space) +} + func (this *SpaceController) Delete(writer http.ResponseWriter, request *http.Request) *result.WebResult { uuid := request.FormValue("uuid") diff --git a/code/rest/space_member_controller.go b/code/rest/space_member_controller.go index 1a24427..c6f059b 100644 --- a/code/rest/space_member_controller.go +++ b/code/rest/space_member_controller.go @@ -59,6 +59,7 @@ func (this *SpaceMemberController) RegisterRoutes() map[string]func(writer http. routeMap := make(map[string]func(writer http.ResponseWriter, request *http.Request)) routeMap["/api/space/member/create"] = this.Wrap(this.Create, USER_ROLE_USER) + routeMap["/api/space/member/edit"] = this.Wrap(this.Edit, USER_ROLE_USER) routeMap["/api/space/member/delete"] = this.Wrap(this.Delete, USER_ROLE_USER) routeMap["/api/space/member/detail"] = this.Wrap(this.Detail, USER_ROLE_USER) routeMap["/api/space/member/page"] = this.Wrap(this.Page, USER_ROLE_USER) @@ -104,6 +105,28 @@ func (this *SpaceMemberController) Create(writer http.ResponseWriter, request *h return this.Success(spaceMember) } +func (this *SpaceMemberController) Edit(writer http.ResponseWriter, request *http.Request) *result.WebResult { + spaceMemberUuid := request.FormValue("spaceMemberUuid") + spaceRole := request.FormValue("spaceRole") + + if spaceRole != SPACE_MEMBER_ROLE_READ_ONLY && spaceRole != SPACE_MEMBER_ROLE_READ_WRITE && spaceRole != SPACE_MEMBER_ROLE_ADMIN { + panic("spaceRole is not correct") + } + + spaceMember := this.spaceMemberDao.CheckByUuid(spaceMemberUuid) + + currentUser := this.checkUser(request) + canManage := this.spaceMemberService.canManageBySpaceMember(currentUser, spaceMember) + if !canManage { + panic(result.BadRequestI18n(request, i18n.PermissionDenied)) + } + + spaceMember.Role = spaceRole + spaceMember = this.spaceMemberDao.Save(spaceMember) + + return this.Success(spaceMember) +} + func (this *SpaceMemberController) Delete(writer http.ResponseWriter, request *http.Request) *result.WebResult { uuid := request.FormValue("uuid")