add MemberProfile to session.

This commit is contained in:
Miroslav Šedivý 2020-11-25 19:44:50 +01:00
parent b73e2403af
commit bc77c8f8f5
2 changed files with 23 additions and 12 deletions

View File

@ -42,9 +42,11 @@ func (manager *SessionManagerCtx) New(id string, admin bool) types.Session {
session := &SessionCtx{ session := &SessionCtx{
id: id, id: id,
admin: admin,
manager: manager, manager: manager,
logger: manager.logger.With().Str("id", id).Logger(), logger: manager.logger.With().Str("id", id).Logger(),
profile: MemberProfile{
is_admin: admin,
},
connected: false, connected: false,
} }
@ -116,7 +118,7 @@ func (manager *SessionManagerCtx) Admins() []types.Session {
var sessions []types.Session var sessions []types.Session
for _, session := range manager.members { for _, session := range manager.members {
if !session.connected || !session.admin { if !session.Connected() || !session.Admin() {
continue continue
} }
@ -132,7 +134,7 @@ func (manager *SessionManagerCtx) Members() []types.Session {
var sessions []types.Session var sessions []types.Session
for _, session := range manager.members { for _, session := range manager.members {
if !session.connected { if !session.Connected() {
continue continue
} }
@ -147,7 +149,7 @@ func (manager *SessionManagerCtx) Broadcast(v interface{}, exclude interface{})
defer manager.membersMu.Unlock() defer manager.membersMu.Unlock()
for id, session := range manager.members { for id, session := range manager.members {
if !session.connected { if !session.Connected() {
continue continue
} }
@ -168,7 +170,7 @@ func (manager *SessionManagerCtx) AdminBroadcast(v interface{}, exclude interfac
defer manager.membersMu.Unlock() defer manager.membersMu.Unlock()
for id, session := range manager.members { for id, session := range manager.members {
if !session.connected || !session.Admin() { if !session.Connected() || !session.Admin() {
continue continue
} }

View File

@ -8,15 +8,24 @@ import (
"demodesk/neko/internal/types/message" "demodesk/neko/internal/types/message"
) )
type MemberProfile struct {
token string
name string
is_admin bool
enabled bool
can_control bool
can_watch bool
clipboard_access bool
}
type SessionCtx struct { type SessionCtx struct {
logger zerolog.Logger
id string id string
name string logger zerolog.Logger
admin bool
connected bool
manager *SessionManagerCtx manager *SessionManagerCtx
profile MemberProfile
websocket_peer types.WebSocketPeer websocket_peer types.WebSocketPeer
webrtc_peer types.WebRTCPeer webrtc_peer types.WebRTCPeer
connected bool
} }
func (session *SessionCtx) ID() string { func (session *SessionCtx) ID() string {
@ -24,11 +33,11 @@ func (session *SessionCtx) ID() string {
} }
func (session *SessionCtx) Name() string { func (session *SessionCtx) Name() string {
return session.name return session.profile.name
} }
func (session *SessionCtx) Admin() bool { func (session *SessionCtx) Admin() bool {
return session.admin return session.profile.is_admin
} }
func (session *SessionCtx) IsHost() bool { func (session *SessionCtx) IsHost() bool {
@ -40,7 +49,7 @@ func (session *SessionCtx) Connected() bool {
} }
func (session *SessionCtx) SetName(name string) { func (session *SessionCtx) SetName(name string) {
session.name = name session.profile.name = name
} }
func (session *SessionCtx) SetWebSocketPeer(websocket_peer types.WebSocketPeer) { func (session *SessionCtx) SetWebSocketPeer(websocket_peer types.WebSocketPeer) {