dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 727a062321c661e54d50a112c6a10195aabaf9e0
parent 49df6fdccb16400bccf0c46ab37353f0df7f9f96
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Sun, 18 Dec 2022 22:06:04 -0800

update user HB status in users manager when status changes

Diffstat:
Mpkg/managers/managers.go | 14++++++++++++++
Mpkg/web/handlers/admin.go | 2++
Mpkg/web/handlers/api/v1/handlers.go | 2++
Mpkg/web/handlers/api/v1/slashInterceptor.go | 2++
4 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/pkg/managers/managers.go b/pkg/managers/managers.go @@ -122,6 +122,20 @@ func (m *ActiveUsersManager) UpdateUserInRoom(room database.ChatRoom, userInfo U m.Unlock() } +func (m *ActiveUsersManager) UpdateUserHBInRooms(newUserInfo UserInfo) { + m.Lock() + for roomKey, usersMap := range m.activeUsers { + for username, userInfo := range usersMap { + if userInfo.UserID == userInfo.UserID { + prevUserInfo := m.activeUsers[roomKey][username] + prevUserInfo.IsHellbanned = newUserInfo.IsHellbanned + m.activeUsers[roomKey][username] = prevUserInfo + } + } + } + m.Unlock() +} + func (m *ActiveUsersManager) getRoomUsersMap(roomKey RoomKey) UsersMap { emptyUsersMap := make(UsersMap) m.RLock() diff --git a/pkg/web/handlers/admin.go b/pkg/web/handlers/admin.go @@ -2,6 +2,7 @@ package handlers import ( dutils "dkforest/pkg/database/utils" + "dkforest/pkg/managers" "math" "net/http" "os" @@ -649,6 +650,7 @@ func AdminEditUserHandler(c echo.Context) error { user.IsAdmin = data.IsAdmin if data.IsHellbanned { user.HellBan() + managers.ActiveUsers.UpdateUserHBInRooms(managers.NewUserInfo(user, nil)) } user.ApiKey = data.ApiKey user.Verified = data.Verified diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go @@ -179,10 +179,12 @@ func UserHellbanHandler(c echo.Context) error { if authUser.IsAdmin || !user.IsModerator() { database.NewAudit(*authUser, fmt.Sprintf("hellban %s #%d", user.Username, user.ID)) user.HellBan() + managers.ActiveUsers.UpdateUserHBInRooms(managers.NewUserInfo(user, nil)) } } else { database.NewAudit(*authUser, fmt.Sprintf("unhellban %s #%d", user.Username, user.ID)) user.UnHellBan() + managers.ActiveUsers.UpdateUserHBInRooms(managers.NewUserInfo(user, nil)) } } return c.Redirect(http.StatusFound, c.Request().Referer()) diff --git a/pkg/web/handlers/api/v1/slashInterceptor.go b/pkg/web/handlers/api/v1/slashInterceptor.go @@ -314,6 +314,7 @@ func handleHellbanCmd(c *Command) (handled bool) { } database.NewAudit(*c.authUser, fmt.Sprintf("hellban %s #%d", user.Username, user.ID)) user.HellBan() + managers.ActiveUsers.UpdateUserHBInRooms(managers.NewUserInfo(user, nil)) c.err = ErrRedirect return true @@ -335,6 +336,7 @@ func handleUnhellbanCmd(c *Command) (handled bool) { } database.NewAudit(*c.authUser, fmt.Sprintf("unhellban %s #%d", user.Username, user.ID)) user.UnHellBan() + managers.ActiveUsers.UpdateUserHBInRooms(managers.NewUserInfo(user, nil)) c.err = ErrRedirect return true