dkforest

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

commit 532d9f50bf94c18dd3c89e5463857b572d03ba66
parent 4fe43d3e65f03c1fdf53054e1c3f33b6e2572952
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Wed,  4 Jan 2023 19:17:30 -0800

better errors

Diffstat:
Mpkg/web/handlers/api/v1/slashInterceptor.go | 33++++++++++++++++-----------------
1 file changed, 16 insertions(+), 17 deletions(-)

diff --git a/pkg/web/handlers/api/v1/slashInterceptor.go b/pkg/web/handlers/api/v1/slashInterceptor.go @@ -202,12 +202,15 @@ func kickCmd(c *Command, username string, purge bool) { dutils.Kick(user, *c.authUser, purge) } +var ErrUsernameNotFound = errors.New("username not found") +var ErrUnauthorized = errors.New("unauthorized") + func handleUnkickCmd(c *Command) (handled bool) { if m := unkickRgx.FindStringSubmatch(c.message); len(m) == 2 { username := m[1] user, err := database.GetUserByUsername(username) if err != nil { - c.err = ErrRedirect + c.err = ErrUsernameNotFound return true } database.NewAudit(*c.authUser, fmt.Sprintf("unkick %s #%d", user.Username, user.ID)) @@ -233,7 +236,7 @@ func handleForceCaptchaCmd(c *Command) (handled bool) { username := m[1] user, err := database.GetUserByUsername(username) if err != nil { - c.err = ErrRedirect + c.err = ErrUsernameNotFound return true } if c.authUser.IsAdmin || !user.IsModerator() || c.authUser.Username == username { @@ -252,11 +255,11 @@ func handleLogoutCmd(c *Command) (handled bool) { username := m[1] user, err := database.GetUserByUsername(username) if err != nil { - c.err = ErrRedirect + c.err = ErrUsernameNotFound return true } if !c.authUser.IsAdmin && user.Vetted { - c.err = ErrRedirect + c.err = ErrUnauthorized return true } if c.authUser.IsAdmin || !user.IsModerator() { @@ -279,11 +282,11 @@ func handleResetTutorialCmd(c *Command) (handled bool) { username := m[1] user, err := database.GetUserByUsername(username) if err != nil { - c.err = ErrRedirect + c.err = ErrUsernameNotFound return true } if !c.authUser.IsAdmin && user.Vetted { - c.err = ErrRedirect + c.err = ErrUnauthorized return true } if c.authUser.IsAdmin || !user.IsModerator() { @@ -302,15 +305,11 @@ func handleHellbanCmd(c *Command) (handled bool) { username := m[1] user, err := database.GetUserByUsername(username) if err != nil { - c.err = ErrRedirect + c.err = ErrUsernameNotFound return true } - if !c.authUser.IsAdmin && user.Vetted { - c.err = ErrRedirect - return true - } - if !c.authUser.IsAdmin && user.IsModerator() { - c.err = ErrRedirect + if !c.authUser.IsAdmin && (user.Vetted || user.IsModerator()) { + c.err = ErrUnauthorized return true } database.NewAudit(*c.authUser, fmt.Sprintf("hellban %s #%d", user.Username, user.ID)) @@ -328,11 +327,11 @@ func handleUnhellbanCmd(c *Command) (handled bool) { username := m[1] user, err := database.GetUserByUsername(username) if err != nil { - c.err = ErrRedirect + c.err = ErrUsernameNotFound return true } - if !c.authUser.IsAdmin && user.IsModerator() { - c.err = ErrRedirect + if !c.authUser.IsAdmin && (user.Vetted || user.IsModerator()) { + c.err = ErrUnauthorized return true } database.NewAudit(*c.authUser, fmt.Sprintf("unhellban %s #%d", user.Username, user.ID)) @@ -1149,7 +1148,7 @@ func handleProfileCmd(c *Command) (handled bool) { username := m[1] user, err := database.GetUserByUsername(username) if err != nil { - c.err = errors.New("username not found") + c.err = ErrUsernameNotFound return true } profile := `/u/` + user.Username