commit 532d9f50bf94c18dd3c89e5463857b572d03ba66
parent 4fe43d3e65f03c1fdf53054e1c3f33b6e2572952
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Wed, 4 Jan 2023 19:17:30 -0800
better errors
Diffstat:
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