summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorbt <bt@rctt.net>2026-05-24 19:41:57 +0200
committerbt <bt@rctt.net>2026-05-24 19:41:57 +0200
commit509bfdbcfc483240f31f9ecd0b4f97dbba96f6f7 (patch)
treea22a488d079175f75129e81fd2d32ba4d21d3996 /server
parentbd2ebe456996a51ad4230ea9c69f2d7c0879cf9d (diff)
downloadsolec-509bfdbcfc483240f31f9ecd0b4f97dbba96f6f7.tar.gz
solec-509bfdbcfc483240f31f9ecd0b4f97dbba96f6f7.zip
[daemon] Use database to check history read permissions
Diffstat (limited to 'server')
-rw-r--r--server/user.go10
1 files changed, 8 insertions, 2 deletions
diff --git a/server/user.go b/server/user.go
index c27c6a1..6ca857a 100644
--- a/server/user.go
+++ b/server/user.go
@@ -171,13 +171,19 @@ func (s *Server) handleUsermode(user *User, conn net.Conn, mode core.Usermode) e
// TODO: Better errors
func (s *Server) handleHistory(user *User, conn net.Conn, hist core.History) error {
- addr, err := core.ReadAddr(hist.Channel)
+ _, err := core.ReadAddr(hist.Channel)
if err != nil {
fmt.Println("cannot parse address:", err)
return user.Send(conn, core.Error{core.ErrorNotFound})
}
- if _, ok := user.Channels[addr.Channel]; !ok {
+ perm, err := s.Storage.GetPermission(user.Name+"@"+s.cfg.Name, hist.Channel)
+ if err != nil {
+ fmt.Println("cannot get message history:", err)
+ return user.Send(conn, core.Error{core.ErrorNotFound})
+ }
+
+ if perm.Read == false {
fmt.Println("cannot get message history: not authorized")
return user.Send(conn, core.Error{core.ErrorNotFound})
}