mirror of
https://github.com/eyebluecn/tank.git
synced 2024-04-21 12:32:16 +00:00
feat: fix the role in space memeber.
This commit is contained in:
@@ -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))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -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.")
|
||||||
|
|||||||
Reference in New Issue
Block a user