feat: fix the role in space memeber.

This commit is contained in:
lishuang
2023-07-22 20:05:25 +08:00
parent 4ebf15f3c1
commit f0a1c0ab06
3 changed files with 24 additions and 7 deletions
+4 -2
View File
@@ -58,9 +58,11 @@ func (this *SpaceMemberController) RegisterRoutes() map[string]func(writer http.
routeMap := make(map[string]func(writer http.ResponseWriter, request *http.Request)) routeMap := make(map[string]func(writer http.ResponseWriter, request *http.Request))
//admin user can create/edit/delete
routeMap["/api/space/member/create"] = this.Wrap(this.Create, USER_ROLE_USER) 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/edit"] = this.Wrap(this.Edit, USER_ROLE_USER)
routeMap["/api/space/member/delete"] = this.Wrap(this.Delete, 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/detail"] = this.Wrap(this.Detail, USER_ROLE_USER)
routeMap["/api/space/member/mine"] = this.Wrap(this.Mine, USER_ROLE_USER) routeMap["/api/space/member/mine"] = this.Wrap(this.Mine, USER_ROLE_USER)
routeMap["/api/space/member/page"] = this.Wrap(this.Page, USER_ROLE_USER) routeMap["/api/space/member/page"] = this.Wrap(this.Page, USER_ROLE_USER)
@@ -110,7 +112,7 @@ func (this *SpaceMemberController) Edit(writer http.ResponseWriter, request *htt
spaceMember := this.spaceMemberDao.CheckByUuid(uuid) spaceMember := this.spaceMemberDao.CheckByUuid(uuid)
currentUser := this.checkUser(request) currentUser := this.checkUser(request)
canManage := this.spaceMemberService.canManageBySpaceMember(currentUser, spaceMember) canManage := this.spaceMemberService.canManage(currentUser, spaceMember.SpaceUuid)
if !canManage { if !canManage {
panic(result.BadRequestI18n(request, i18n.PermissionDenied)) panic(result.BadRequestI18n(request, i18n.PermissionDenied))
} }
@@ -126,7 +128,7 @@ func (this *SpaceMemberController) Delete(writer http.ResponseWriter, request *h
spaceMember := this.spaceMemberDao.CheckByUuid(uuid) spaceMember := this.spaceMemberDao.CheckByUuid(uuid)
user := this.checkUser(request) user := this.checkUser(request)
canManage := this.spaceMemberService.canManageBySpaceMember(user, spaceMember) canManage := this.spaceMemberService.canManage(user, spaceMember.SpaceUuid)
if !canManage { if !canManage {
panic(result.BadRequestI18n(request, i18n.PermissionDenied)) panic(result.BadRequestI18n(request, i18n.PermissionDenied))
} }
+2 -2
View File
@@ -5,13 +5,13 @@ import (
) )
const ( const (
//read only member //guest member
SPACE_MEMBER_GUEST = "GUEST" SPACE_MEMBER_GUEST = "GUEST"
//read only member //read only member
SPACE_MEMBER_ROLE_READ_ONLY = "READ_ONLY" SPACE_MEMBER_ROLE_READ_ONLY = "READ_ONLY"
//read write member //read write member
SPACE_MEMBER_ROLE_READ_WRITE = "READ_WRITE" SPACE_MEMBER_ROLE_READ_WRITE = "READ_WRITE"
//read write member //admin member
SPACE_MEMBER_ROLE_ADMIN = "ADMIN" SPACE_MEMBER_ROLE_ADMIN = "ADMIN"
) )
+18 -3
View File
@@ -105,6 +105,21 @@ func (this *SpaceService) CreateSpace(
} }
// checkout a adminAble space.
func (this *SpaceService) CheckAdminAbleByUuid(request *http.Request, user *User, spaceUuid string) *Space {
space := this.spaceDao.CheckByUuid(spaceUuid)
if space.Type == SPACE_TYPE_PRIVATE && user.Uuid == space.UserUuid {
return space
}
manage := this.spaceMemberService.canManage(user, spaceUuid)
if !manage {
panic(result.BadRequestI18n(request, i18n.PermissionDenied))
}
return space
}
// checkout a writable space. // checkout a writable space.
func (this *SpaceService) CheckWritableByUuid(request *http.Request, user *User, spaceUuid string) *Space { func (this *SpaceService) CheckWritableByUuid(request *http.Request, user *User, spaceUuid string) *Space {
space := this.spaceDao.CheckByUuid(spaceUuid) space := this.spaceDao.CheckByUuid(spaceUuid)
@@ -112,8 +127,8 @@ func (this *SpaceService) CheckWritableByUuid(request *http.Request, user *User,
return space return space
} }
manage := this.spaceMemberService.canWrite(user, spaceUuid) writable := this.spaceMemberService.canWrite(user, spaceUuid)
if !manage { if !writable {
panic(result.BadRequestI18n(request, i18n.PermissionDenied)) panic(result.BadRequestI18n(request, i18n.PermissionDenied))
} }
@@ -137,7 +152,7 @@ func (this *SpaceService) CheckReadableByUuid(request *http.Request, user *User,
// edit space's info // edit space's info
func (this *SpaceService) Edit(request *http.Request, user *User, spaceUuid string, sizeLimit int64, totalSizeLimit int64) *Space { func (this *SpaceService) Edit(request *http.Request, user *User, spaceUuid string, sizeLimit int64, totalSizeLimit int64) *Space {
space := this.CheckWritableByUuid(request, user, spaceUuid) space := this.CheckAdminAbleByUuid(request, user, spaceUuid)
if sizeLimit < 0 && sizeLimit != -1 { if sizeLimit < 0 && sizeLimit != -1 {
panic("sizeLimit cannot be negative expect -1.") panic("sizeLimit cannot be negative expect -1.")