rethink needed
This commit is contained in:
@@ -6,11 +6,18 @@ import (
|
||||
|
||||
"go-socket/packages/convertions"
|
||||
"go-socket/packages/types"
|
||||
"go-socket/packages/wsServer"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func canHubUserMessage(channel)
|
||||
func haveUserPermissionsOnChannel(permissions types.CachedUserPermissions, user *types.HubUser, channel *types.HubChannel) bool {
|
||||
checkAgainst, ok := channel.UsersCachedPermissions[user.OriginalId]
|
||||
if !ok || (permissions&checkAgainst) == checkAgainst {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func HandleHubCreate(response http.ResponseWriter, request *http.Request) {
|
||||
if !validCheckWithResponseOnFail(&response, request, normal) {
|
||||
@@ -58,6 +65,7 @@ func HandleHubCreate(response http.ResponseWriter, request *http.Request) {
|
||||
Color: types.Rgba{}.GetRandom(),
|
||||
CreatedAt: hub.CreatedAt,
|
||||
}
|
||||
hub.JoinRole = memberRole
|
||||
hub.Roles[memberRole.Id] = memberRole
|
||||
creator.Roles.Add(memberRole.Id)
|
||||
|
||||
@@ -83,7 +91,7 @@ func HandleHubCreate(response http.ResponseWriter, request *http.Request) {
|
||||
channel.RolesCanView.Add(memberRole.Id)
|
||||
channel.RolesCanReadHistory.Add(rootGroup.Id)
|
||||
channel.RolesCanReadHistory.Add(memberRole.Id)
|
||||
channel.UsersCanView.Add()
|
||||
channel.UsersCachedPermissions[creator.OriginalId] = types.CachedUserPermissionsAll
|
||||
hub.Channels[channel.Id] = channel
|
||||
}
|
||||
|
||||
@@ -122,4 +130,18 @@ func HandleChannelSendMessage(response http.ResponseWriter, request *http.Reques
|
||||
return
|
||||
}
|
||||
|
||||
if !haveUserPermissionsOnChannel(types.CachedUserCanMessage, hubUser, channel) {
|
||||
http.Error(response, "cannot send messages here", http.StatusUnauthorized)
|
||||
return
|
||||
}
|
||||
|
||||
for id, userCachedPerms := range channel.UsersCachedPermissions {
|
||||
if !userCachedPerms.CanReadHistory() || id == user.Id {
|
||||
continue
|
||||
}
|
||||
|
||||
targetUser, ok :=
|
||||
|
||||
wsServer.WsSendMessageCloseIfTimeout()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user