diff options
Diffstat (limited to 'server')
| -rw-r--r-- | server/user.go | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/server/user.go b/server/user.go index c615c40..9a0a71b 100644 --- a/server/user.go +++ b/server/user.go @@ -132,26 +132,29 @@ func (s *Server) handleUserPayload(user *User, sender net.Conn, payload any) err } func (s *Server) handleUsermode(user *User, conn net.Conn, mode core.Usermode) error { + _, err := core.ReadAddr(mode.UserAddr) + if err != nil { + log.Println("invalid user address") + return err + } - /* - userAddr, err := core.ReadAddr(mode.UserAddr) - if err != nil { - return err - } + _, err = core.ReadAddr(mode.ChannelAddr) + if err != nil { + log.Println("invalid channel address") + return err + } - chanAddr, err := core.ReadAddr(mode.ChannelAddr) - if err != nil { - return err - } + perm := core.PermissionData{ + User: mode.UserAddr, + Channel: mode.ChannelAddr, + } - if user.Addr != userAddr.Channel { - log.Println("unauthorized") - return user.Send(conn, core.Error{core.ErrorUnauthorized}) - } + if mode.Mode == core.UsermodeInChannel { + perm.Read = true + perm.Write = true + } - // TODO: change user permissions here - */ - return nil + return s.Storage.SetPermission(perm) } // TODO: Replace user.Send(error) with conn.Send() |
