Fix: room members and room settings guest role no permission #142 #143

pull/150/head
zijiren233 2 years ago
parent 48ed7995b1
commit 6bb5be3a91

@ -41,6 +41,8 @@ func Init(e *gin.Engine) {
needAuthRoomApi := api.Group("", middlewares.AuthRoomMiddleware) needAuthRoomApi := api.Group("", middlewares.AuthRoomMiddleware)
needAuthRoomWithoutGuestApi := api.Group("", middlewares.AuthRoomWithoutGuestMiddleware)
{ {
public := api.Group("/public") public := api.Group("/public")
@ -58,10 +60,11 @@ func Init(e *gin.Engine) {
{ {
room := api.Group("/room") room := api.Group("/room")
needAuthRoom := needAuthRoomApi.Group("/room")
needAuthUser := needAuthUserApi.Group("/room") needAuthUser := needAuthUserApi.Group("/room")
needAuthRoom := needAuthRoomApi.Group("/room")
needAuthRoomWithoutGuest := needAuthRoomWithoutGuestApi.Group("/room")
initRoom(room, needAuthUser, needAuthRoom) initRoom(room, needAuthUser, needAuthRoom, needAuthRoomWithoutGuest)
} }
{ {
@ -160,7 +163,7 @@ func initAdmin(admin *gin.RouterGroup, root *gin.RouterGroup) {
} }
} }
func initRoom(room *gin.RouterGroup, needAuthUser *gin.RouterGroup, needAuthRoom *gin.RouterGroup) { func initRoom(room *gin.RouterGroup, needAuthUser *gin.RouterGroup, needAuthRoom *gin.RouterGroup, needAuthWithoutGuestRoom *gin.RouterGroup) {
room.GET("/ws", NewWebSocketHandler(utils.NewWebSocketServer())) room.GET("/ws", NewWebSocketHandler(utils.NewWebSocketServer()))
room.GET("/check", CheckRoom) room.GET("/check", CheckRoom)
@ -177,9 +180,9 @@ func initRoom(room *gin.RouterGroup, needAuthUser *gin.RouterGroup, needAuthRoom
needAuthRoom.GET("/me", RoomMe) needAuthRoom.GET("/me", RoomMe)
needAuthRoom.GET("/settings", RoomPiblicSettings) needAuthWithoutGuestRoom.GET("/settings", RoomPiblicSettings)
needAuthRoom.GET("/members", RoomMembers) needAuthWithoutGuestRoom.GET("/members", RoomMembers)
{ {
needAuthRoomAdmin := needAuthRoom.Group("/admin", middlewares.AuthRoomAdminMiddleware) needAuthRoomAdmin := needAuthRoom.Group("/admin", middlewares.AuthRoomAdminMiddleware)

@ -292,6 +292,19 @@ func AuthRoomMiddleware(ctx *gin.Context) {
log.Data["uro"] = user.Role.String() log.Data["uro"] = user.Role.String()
} }
func AuthRoomWithoutGuestMiddleware(ctx *gin.Context) {
AuthRoomMiddleware(ctx)
if ctx.IsAborted() {
return
}
user := ctx.MustGet("user").(*synccache.Entry[*op.User]).Value()
if user.IsGuest() {
ctx.AbortWithStatusJSON(http.StatusForbidden, model.NewApiErrorStringResp("guest is no permission"))
return
}
}
func AuthRoomAdminMiddleware(ctx *gin.Context) { func AuthRoomAdminMiddleware(ctx *gin.Context) {
AuthRoomMiddleware(ctx) AuthRoomMiddleware(ctx)
if ctx.IsAborted() { if ctx.IsAborted() {

Loading…
Cancel
Save