commit 99fc0c9a2c88041ced5632181daa1a7d5e231549
parent f7ca88fd4ebfecedb1afc02a680e1935b9f82af9
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Thu, 22 Jun 2023 09:20:58 -0700
simplify code
Diffstat:
9 files changed, 120 insertions(+), 110 deletions(-)
diff --git a/pkg/web/handlers/admin.go b/pkg/web/handlers/admin.go
@@ -5,6 +5,7 @@ import (
"dkforest/pkg/managers"
"dkforest/pkg/web/handlers/interceptors"
"dkforest/pkg/web/handlers/usersStreamsManager"
+ hutils "dkforest/pkg/web/handlers/utils"
"fmt"
"github.com/jinzhu/gorm"
"io"
@@ -161,7 +162,7 @@ func AdminUploadsHandler(c echo.Context) error {
if err := file.Delete(db); err != nil {
logrus.Error(err)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
}
@@ -182,7 +183,7 @@ func AdminFiledropsHandler(c echo.Context) error {
if _, err := db.CreateFiledrop(); err != nil {
logrus.Error(err)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
} else if formName == "deleteFiledrop" {
fileName := c.Request().PostFormValue("file_name")
@@ -193,7 +194,7 @@ func AdminFiledropsHandler(c echo.Context) error {
if err := file.Delete(db); err != nil {
logrus.Error(err)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
}
@@ -233,13 +234,13 @@ func AdminDeleteDownloadHandler(c echo.Context) error {
downloadID, err := utils.ParseInt64(c.Param("downloadID"))
if err != nil {
return c.Render(http.StatusOK, "flash",
- FlashResponse{"download id not found", c.Request().Referer(), "alert-danger"})
+ FlashResponse{"download id not found", hutils.GetReferer(c), "alert-danger"})
}
if err := db.DeleteDownloadByID(downloadID); err != nil {
logrus.Error(err)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
// AdminSettingsHandler ...
@@ -265,7 +266,7 @@ func AdminSettingsHandler(c echo.Context) error {
if err := open.Run(config.Global.ProjectPath()); err != nil {
logrus.Error(err)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
} else if formName == "saveSettings" {
settings := db.GetSettings()
@@ -290,7 +291,7 @@ func AdminSettingsHandler(c echo.Context) error {
config.DownloadsEnabled.Store(settings.DownloadsEnabled)
config.ForumEnabled.Store(settings.ForumEnabled)
config.MaybeAuthEnabled.Store(settings.MaybeAuthEnabled)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
}
@@ -416,14 +417,14 @@ func BackupHandler(c echo.Context) error {
}
})
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
} else if formName == "toggleMaintenance" {
if config.MaintenanceAtom.CAS(false, true) {
logrus.Info("maintenance mode turned on")
} else if config.MaintenanceAtom.CAS(true, false) {
logrus.Info("maintenance mode turned off")
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
}
@@ -497,17 +498,17 @@ func AdminDeleteUserHandler(c echo.Context) error {
userID, err := dutils.ParseUserID(c.Param("userID"))
if err != nil {
return c.Render(http.StatusOK, "flash",
- FlashResponse{"user id not found", c.Request().Referer(), "alert-danger"})
+ FlashResponse{"user id not found", hutils.GetReferer(c), "alert-danger"})
}
if userID == config.RootAdminID {
return c.Render(http.StatusOK, "flash",
- FlashResponse{"Root admin cannot be deleted", c.Request().Referer(), "alert-danger"})
+ FlashResponse{"Root admin cannot be deleted", hutils.GetReferer(c), "alert-danger"})
}
if err := db.DeleteUserByID(userID); err != nil {
logrus.Error(err)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func IgnoredDeleteHandler(c echo.Context) error {
@@ -515,7 +516,7 @@ func IgnoredDeleteHandler(c echo.Context) error {
userID := dutils.DoParseUserID(c.Request().PostFormValue("user_id"))
ignoredUserID := dutils.DoParseUserID(c.Request().PostFormValue("ignored_user_id"))
db.UnIgnoreUser(userID, ignoredUserID)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
// AdminDeleteRoomHandler ...
@@ -523,7 +524,7 @@ func AdminDeleteRoomHandler(c echo.Context) error {
db := c.Get("database").(*database.DkfDB)
id := dutils.DoParseRoomID(c.Param("roomID"))
db.DeleteChatRoomByID(id)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func AdminUserSecurityLogsHandler(c echo.Context) error {
@@ -590,7 +591,7 @@ func AdminEditUserHandler(c echo.Context) error {
if formName == "reset_tutorial" {
user.ChatTutorial = 0
user.DoSave(db)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
data.Username = database.Username(c.FormValue("username"))
@@ -670,7 +671,7 @@ func AdminEditUserHandler(c echo.Context) error {
user.ChatFont = data.ChatFont
user.DoSave(db)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
// AdminEditRoomHandler ...
diff --git a/pkg/web/handlers/api/v1/chatControlsHandler.go b/pkg/web/handlers/api/v1/chatControlsHandler.go
@@ -3,6 +3,7 @@ package v1
import (
"dkforest/pkg/database"
"dkforest/pkg/utils"
+ hutils "dkforest/pkg/web/handlers/utils"
"github.com/labstack/echo"
"net/http"
)
@@ -51,7 +52,7 @@ func handlePost(db *database.DkfDB, c echo.Context, data chatControlsData, authU
return handleUpdateReadMarkerPost(db, c, room, authUser)
}
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func handleToggleHBPost(db *database.DkfDB, c echo.Context, authUser *database.User) error {
@@ -60,7 +61,7 @@ func handleToggleHBPost(db *database.DkfDB, c echo.Context, authUser *database.U
authUser.DoSave(db)
database.MsgPubSub.Pub("refresh_"+string(authUser.Username), database.ChatMessageType{})
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func handleToggleMPost(db *database.DkfDB, c echo.Context, authUser *database.User) error {
@@ -69,23 +70,23 @@ func handleToggleMPost(db *database.DkfDB, c echo.Context, authUser *database.Us
authUser.DoSave(db)
database.MsgPubSub.Pub("refresh_"+string(authUser.Username), database.ChatMessageType{})
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func handleToggleIgnoredPost(db *database.DkfDB, c echo.Context, authUser *database.User) error {
authUser.DisplayIgnored = !authUser.DisplayIgnored
authUser.DoSave(db)
database.MsgPubSub.Pub("refresh_"+string(authUser.Username), database.ChatMessageType{})
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func handleAfkPost(db *database.DkfDB, c echo.Context, authUser *database.User) error {
authUser.AFK = !authUser.AFK
authUser.DoSave(db)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func handleUpdateReadMarkerPost(db *database.DkfDB, c echo.Context, room database.ChatRoom, authUser *database.User) error {
db.UpdateChatReadMarker(authUser.ID, room.ID)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go
@@ -240,7 +240,7 @@ func UserHellbanHandler(c echo.Context) error {
userID := dutils.DoParseUserID(c.Param("userID"))
user, err := db.GetUserByID(userID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if !user.IsHellbanned {
if authUser.IsAdmin || !user.IsModerator() {
@@ -249,7 +249,7 @@ func UserHellbanHandler(c echo.Context) error {
managers.ActiveUsers.UpdateUserHBInRooms(managers.NewUserInfo(&user))
}
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func UserUnHellbanHandler(c echo.Context) error {
@@ -258,14 +258,14 @@ func UserUnHellbanHandler(c echo.Context) error {
userID := dutils.DoParseUserID(c.Param("userID"))
user, err := db.GetUserByID(userID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if user.IsHellbanned {
db.NewAudit(*authUser, fmt.Sprintf("unhellban %s #%d", user.Username, user.ID))
user.UnHellBan(db)
managers.ActiveUsers.UpdateUserHBInRooms(managers.NewUserInfo(&user))
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func KickHandler(c echo.Context) error {
@@ -274,13 +274,13 @@ func KickHandler(c echo.Context) error {
userID := dutils.DoParseUserID(c.Param("userID"))
user, err := db.GetUserByID(userID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if user.IsModerator() {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
_ = dutils.SilentKick(db, user, *authUser)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func SubscribeHandler(c echo.Context) error {
@@ -289,10 +289,10 @@ func SubscribeHandler(c echo.Context) error {
roomName := c.Param("roomName")
room, err := db.GetChatRoomByName(roomName)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
_ = db.SubscribeToRoom(authUser.ID, room.ID)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func UnsubscribeHandler(c echo.Context) error {
@@ -301,10 +301,10 @@ func UnsubscribeHandler(c echo.Context) error {
roomName := c.Param("roomName")
room, err := db.GetChatRoomByName(roomName)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
_ = db.UnsubscribeFromRoom(authUser.ID, room.ID)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func ThreadSubscribeHandler(c echo.Context) error {
@@ -313,10 +313,10 @@ func ThreadSubscribeHandler(c echo.Context) error {
threadUUID := database.ForumThreadUUID(c.Param("threadUUID"))
thread, err := db.GetForumThreadByUUID(threadUUID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
_ = db.SubscribeToForumThread(authUser.ID, thread.ID)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func ThreadUnsubscribeHandler(c echo.Context) error {
@@ -325,10 +325,10 @@ func ThreadUnsubscribeHandler(c echo.Context) error {
threadUUID := database.ForumThreadUUID(c.Param("threadUUID"))
thread, err := db.GetForumThreadByUUID(threadUUID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
_ = db.UnsubscribeFromForumThread(authUser.ID, thread.ID)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func ChatMessageReactionHandler(c echo.Context) error {
@@ -348,7 +348,7 @@ func ChatMessageReactionHandler(c echo.Context) error {
_ = db.DeleteReaction(authUser.ID, msg.ID, reaction)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func ChatDeleteMessageHandler(c echo.Context) error {
@@ -366,7 +366,7 @@ func ChatDeleteMessageHandler(c echo.Context) error {
if err := msg.UserCanDeleteErr(*authUser); err != nil {
logrus.Error(err)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
// Audit when moderator/admin deletes a message he doesn't own
@@ -388,7 +388,7 @@ func ChatDeleteMessageHandler(c echo.Context) error {
logrus.Error(err)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func ClubDeleteMessageHandler(c echo.Context) error {
@@ -397,21 +397,21 @@ func ClubDeleteMessageHandler(c echo.Context) error {
messageID := database.ForumMessageID(utils.DoParseInt64(c.Param("messageID")))
msg, err := db.GetForumMessage(messageID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if authUser.ID != msg.UserID && !authUser.IsAdmin {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if !msg.CanEdit() && !authUser.IsAdmin {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if err := db.DeleteForumMessageByID(messageID); err != nil {
logrus.Error(err)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func DeleteNotificationHandler(c echo.Context) error {
@@ -421,7 +421,7 @@ func DeleteNotificationHandler(c echo.Context) error {
var msg database.Notification
if err := db.DB().Where("ID = ? AND user_id = ?", notificationID, authUser.ID).First(&msg).Error; err != nil {
logrus.Error(err)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if err := db.DeleteNotificationByID(notificationID); err != nil {
logrus.Error(err)
@@ -436,7 +436,7 @@ func DeleteSessionNotificationHandler(c echo.Context) error {
var msg database.SessionNotification
if err := db.DB().Where("ID = ? AND session_token = ?", sessionNotificationID, authCookie.Value).First(&msg).Error; err != nil {
logrus.Error(err)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if err := db.DeleteSessionNotificationByID(sessionNotificationID); err != nil {
logrus.Error(err)
diff --git a/pkg/web/handlers/chat.go b/pkg/web/handlers/chat.go
@@ -127,7 +127,7 @@ func handlePost(db *database.DkfDB, c echo.Context, data chatData, authUser *dat
case "chat-password":
return handleChatPasswordPost(db, c, data, authUser)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
// Logout of a protected room (delete room cookies)
@@ -141,7 +141,7 @@ func handleTutorialPost(db *database.DkfDB, c echo.Context, data chatData, authU
authUser.ChatTutorial++
authUser.DoSave(db)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
// Handle POST requests for chat-password, when someone tries to authenticate in a protected room providing a password.
diff --git a/pkg/web/handlers/chess.go b/pkg/web/handlers/chess.go
@@ -111,7 +111,7 @@ func ChessHandler(c echo.Context) error {
data.Error = err.Error()
return c.Render(http.StatusOK, "chess", data)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
return c.Render(http.StatusOK, "chess", data)
@@ -347,7 +347,7 @@ func ChessGameStatsHandler(c echo.Context) error {
var stats *interceptors.AnalyzeResult
if err := json.Unmarshal(g.DbChessGame.Stats, &stats); err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if c.Request().Method == http.MethodPost {
@@ -460,12 +460,12 @@ button {
if c.Request().Method == http.MethodPost {
if !g.IsPlayer(authUser.ID) {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
btnSubmit := c.Request().PostFormValue("btn_submit")
if btnSubmit == "resign-cancel" {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
} else if btnSubmit == "resign" {
@@ -502,7 +502,7 @@ button {
logrus.Error(err)
}
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
htmlTmpl := cssReset + interceptors.ChessCSS + `
diff --git a/pkg/web/handlers/forum.go b/pkg/web/handlers/forum.go
@@ -117,15 +117,15 @@ func ThreadEditHandler(c echo.Context) error {
}
authUser := c.Get("authUser").(*database.User)
if !authUser.CanUseForumFn() {
- return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: c.Request().Referer(), Type: "alert-danger"})
+ return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: hutils.GetReferer(c), Type: "alert-danger"})
}
if !authUser.IsAdmin {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
threadUUID := database.ForumThreadUUID(c.Param("threadUUID"))
thread, err := db.GetForumThreadByUUID(threadUUID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
var data editForumThreadData
data.Thread = thread
@@ -147,16 +147,16 @@ func ThreadDeleteHandler(c echo.Context) error {
authUser := c.Get("authUser").(*database.User)
db := c.Get("database").(*database.DkfDB)
if !authUser.CanUseForumFn() {
- return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: c.Request().Referer(), Type: "alert-danger"})
+ return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: hutils.GetReferer(c), Type: "alert-danger"})
}
threadUUID := database.ForumThreadUUID(c.Param("threadUUID"))
thread, err := db.GetForumThreadByUUID(threadUUID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if !authUser.IsAdmin {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
var data deleteForumThreadData
@@ -179,7 +179,7 @@ func ThreadReplyHandler(c echo.Context) error {
authUser := c.Get("authUser").(*database.User)
db := c.Get("database").(*database.DkfDB)
if !authUser.CanUseForumFn() {
- return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: c.Request().Referer(), Type: "alert-danger"})
+ return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: hutils.GetReferer(c), Type: "alert-danger"})
}
threadUUID := database.ForumThreadUUID(c.Param("threadUUID"))
@@ -242,7 +242,7 @@ func ThreadEditMessageHandler(c echo.Context) error {
authUser := c.Get("authUser").(*database.User)
db := c.Get("database").(*database.DkfDB)
if !authUser.CanUseForumFn() {
- return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: c.Request().Referer(), Type: "alert-danger"})
+ return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: hutils.GetReferer(c), Type: "alert-danger"})
}
threadUUID := database.ForumThreadUUID(c.Param("threadUUID"))
messageUUID := database.ForumMessageUUID(c.Param("messageUUID"))
@@ -297,26 +297,26 @@ func ThreadDeleteMessageHandler(c echo.Context) error {
authUser := c.Get("authUser").(*database.User)
db := c.Get("database").(*database.DkfDB)
if !authUser.CanUseForumFn() {
- return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: c.Request().Referer(), Type: "alert-danger"})
+ return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: hutils.GetReferer(c), Type: "alert-danger"})
}
messageUUID := database.ForumMessageUUID(c.Param("messageUUID"))
msg, err := db.GetForumMessageByUUID(messageUUID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if authUser.ID != msg.UserID && !authUser.IsAdmin {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if !msg.CanEdit() && !authUser.IsAdmin {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
var data deleteForumMessageData
data.Thread, err = db.GetForumThreadByID(msg.ThreadID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
data.Message = msg
@@ -337,7 +337,7 @@ func NewThreadHandler(c echo.Context) error {
authUser := c.Get("authUser").(*database.User)
db := c.Get("database").(*database.DkfDB)
if !authUser.CanUseForumFn() {
- return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: c.Request().Referer(), Type: "alert-danger"})
+ return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: hutils.GetReferer(c), Type: "alert-danger"})
}
var data newThreadData
@@ -412,5 +412,5 @@ func ForumReindexHandler(c echo.Context) error {
if err := db.DB().Exec(`INSERT INTO fts5_forum_messages(fts5_forum_messages) VALUES('rebuild')`).Error; err != nil {
logrus.Error(err)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
diff --git a/pkg/web/handlers/links.go b/pkg/web/handlers/links.go
@@ -189,11 +189,11 @@ func RestoreLinkHandler(c echo.Context) error {
linkUUID := c.Param("linkUUID")
var link database.Link
if err := db.DB().Unscoped().First(&link, "uuid = ?", linkUUID).Error; err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
db.NewAudit(*authUser, fmt.Sprintf("restore link %s", link.URL))
db.DB().Unscoped().Model(&database.Link{}).Where("id = ?", link.ID).Update("deleted_at", nil)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func ClaimLinkHandler(c echo.Context) error {
@@ -405,7 +405,7 @@ func EditLinkHandler(c echo.Context) error {
logrus.Error(err)
}
db.NewAudit(*authUser, fmt.Sprintf("create gpg for link %s", link.URL))
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
} else if formName == "createMirror" {
data.MirrorLink = c.Request().PostFormValue("mirror_link")
@@ -417,7 +417,7 @@ func EditLinkHandler(c echo.Context) error {
logrus.Error(err)
}
db.NewAudit(*authUser, fmt.Sprintf("create mirror for link %s", link.URL))
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
return c.Redirect(http.StatusFound, "/links")
}
@@ -431,11 +431,11 @@ func LinkDeleteHandler(c echo.Context) error {
linkUUID := c.Param("linkUUID")
link, err := db.GetLinkByUUID(linkUUID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if !authUser.IsModerator() {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
var data deleteLinkData
@@ -479,15 +479,15 @@ func LinkPgpDeleteHandler(c echo.Context) error {
linkPgpID := utils.DoParseInt64(c.Param("linkPgpID"))
linkPgp, err := db.GetLinkPgpByID(linkPgpID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
link, err := db.GetLinkByID(linkPgp.LinkID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if !authUser.IsModerator() {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
var data deleteLinkPgpData
@@ -510,15 +510,15 @@ func LinkMirrorDeleteHandler(c echo.Context) error {
linkMirrorID := utils.DoParseInt64(c.Param("linkMirrorID"))
linkMirror, err := db.GetLinkMirrorByID(linkMirrorID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
link, err := db.GetLinkByID(linkMirror.LinkID)
if err != nil {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if !authUser.IsModerator() {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
var data deleteLinkMirrorData
@@ -579,7 +579,7 @@ func LinksUploadHandler(c echo.Context) error {
logrus.Error(err)
}
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
return c.Render(http.StatusOK, "links-upload", data)
}
@@ -677,5 +677,5 @@ func LinksReindexHandler(c echo.Context) error {
logrus.Error(err)
}
db.DB().Exec(`delete from fts5_links where rowid in (select id from links where deleted_at is not null)`)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
diff --git a/pkg/web/handlers/settings.go b/pkg/web/handlers/settings.go
@@ -182,7 +182,7 @@ func changeSettingsForm(c echo.Context, data settingsChatData) error {
return c.Render(http.StatusOK, "settings.chat", data)
}
- return c.Render(http.StatusOK, "flash", FlashResponse{Message: "Settings changed successfully", Redirect: c.Request().Referer()})
+ return c.Render(http.StatusOK, "flash", FlashResponse{Message: "Settings changed successfully", Redirect: hutils.GetReferer(c)})
}
func SettingsSecurityHandler(c echo.Context) error {
@@ -254,7 +254,7 @@ func changeUsernameForm(c echo.Context, data settingsAccountData) error {
}
db.CreateSecurityLog(authUser.ID, database.UsernameChangedSecurityLog)
- return c.Render(http.StatusOK, "flash", FlashResponse{Message: "Username changed successfully", Redirect: c.Request().Referer()})
+ return c.Render(http.StatusOK, "flash", FlashResponse{Message: "Username changed successfully", Redirect: hutils.GetReferer(c)})
}
func editProfileForm(c echo.Context, data settingsAccountData) error {
@@ -286,7 +286,7 @@ func editProfileForm(c echo.Context, data settingsAccountData) error {
authUser.TerminateAllSessionsOnLogout = data.TerminateAllSessionsOnLogout
authUser.DoSave(db)
- return c.Render(http.StatusOK, "flash", FlashResponse{Message: "Profile changed successfully", Redirect: c.Request().Referer()})
+ return c.Render(http.StatusOK, "flash", FlashResponse{Message: "Profile changed successfully", Redirect: hutils.GetReferer(c)})
}
func changeAvatarForm(c echo.Context, data settingsAccountData) error {
@@ -350,7 +350,7 @@ func changeAvatarForm(c echo.Context, data settingsAccountData) error {
authUser.SetAvatar(fileBytes)
authUser.DoSave(db)
- return c.Render(http.StatusOK, "flash", FlashResponse{Message: "Avatar changed successfully", Redirect: c.Request().Referer()})
+ return c.Render(http.StatusOK, "flash", FlashResponse{Message: "Avatar changed successfully", Redirect: hutils.GetReferer(c)})
}
func SettingsChatPMHandler(c echo.Context) error {
@@ -378,12 +378,12 @@ func SettingsChatPMHandler(c echo.Context) error {
return c.Render(http.StatusOK, "settings.chat-pm", data)
}
db.AddWhitelistedUser(authUser.ID, user.ID)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
} else if formName == "rmWhitelist" {
userID := dutils.DoParseUserID(c.Request().PostFormValue("userID"))
db.RmWhitelistedUser(authUser.ID, userID)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
} else if formName == "addBlacklist" {
data.AddBlacklist = database.Username(strings.TrimSpace(c.Request().PostFormValue("username")))
@@ -393,19 +393,19 @@ func SettingsChatPMHandler(c echo.Context) error {
return c.Render(http.StatusOK, "settings.chat-pm", data)
}
db.AddBlacklistedUser(authUser.ID, user.ID)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
} else if formName == "rmBlacklist" {
userID := dutils.DoParseUserID(c.Request().PostFormValue("userID"))
db.RmBlacklistedUser(authUser.ID, userID)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
data.PmMode = utils.Clamp(utils.DoParseInt64(c.Request().PostFormValue("pm_mode")), 0, 1)
authUser.BlockNewUsersPm = utils.DoParseBool(c.Request().PostFormValue("block_new_users_pm"))
authUser.PmMode = data.PmMode
authUser.DoSave(db)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func SettingsChatIgnoreHandler(c echo.Context) error {
@@ -431,18 +431,18 @@ func SettingsChatIgnoreHandler(c echo.Context) error {
return c.Render(http.StatusOK, "settings.chat-ignore", data)
}
db.IgnoreUser(authUser.ID, user.ID)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
} else if formName == "rmIgnored" {
userID := dutils.DoParseUserID(c.Request().PostFormValue("userID"))
db.UnIgnoreUser(authUser.ID, userID)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
data.PmMode = utils.Clamp(utils.DoParseInt64(c.Request().PostFormValue("pm_mode")), 0, 1)
authUser.PmMode = data.PmMode
authUser.DoSave(db)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func SettingsChatSnippetsHandler(c echo.Context) error {
@@ -482,22 +482,22 @@ func SettingsChatSnippetsHandler(c echo.Context) error {
data.Error = err.Error()
return c.Render(http.StatusOK, "settings.chat-snippets", data)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
} else if formName == "rmSnippet" {
snippetName := c.Request().PostFormValue("snippetName")
db.DeleteSnippet(authUser.ID, snippetName)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func SettingsPublicNotesHandler(c echo.Context) error {
authUser := c.Get("authUser").(*database.User)
db := c.Get("database").(*database.DkfDB)
if !authUser.CanUseForumFn() {
- return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: c.Request().Referer(), Type: "alert-danger"})
+ return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: hutils.GetReferer(c), Type: "alert-danger"})
}
var data settingsPublicNotesData
data.ActiveTab = "notes"
@@ -509,7 +509,7 @@ func SettingsPublicNotesHandler(c echo.Context) error {
data.Error = err.Error()
return c.Render(http.StatusOK, "settings.public-notes", data)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
return c.Render(http.StatusOK, "settings.public-notes", data)
@@ -519,7 +519,7 @@ func SettingsPrivateNotesHandler(c echo.Context) error {
authUser := c.Get("authUser").(*database.User)
db := c.Get("database").(*database.DkfDB)
if !authUser.CanUseForumFn() {
- return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: c.Request().Referer(), Type: "alert-danger"})
+ return c.Render(http.StatusOK, "flash", FlashResponse{Message: hutils.AccountTooYoungErr.Error(), Redirect: hutils.GetReferer(c), Type: "alert-danger"})
}
var data settingsPrivateNotesData
data.ActiveTab = "notes"
@@ -533,7 +533,7 @@ func SettingsPrivateNotesHandler(c echo.Context) error {
data.Error = err.Error()
return c.Render(http.StatusOK, "settings.private-notes", data)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
return c.Render(http.StatusOK, "settings.private-notes", data)
@@ -562,7 +562,7 @@ func SettingsSessionsHandler(c echo.Context) error {
sessionToken := c.Request().PostFormValue("sessionToken")
_ = db.DeleteUserSessionByToken(authUser.ID, sessionToken)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
return c.Render(http.StatusOK, "settings.sessions", data)
@@ -578,13 +578,13 @@ func SettingsAPIHandler(c echo.Context) error {
formName := c.Request().PostFormValue("formName")
btnSubmit := c.Request().PostFormValue("btn_submit")
if btnSubmit == "Cancel" {
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
if formName == "confirm" {
token := utils.GenerateToken16()
authUser.ApiKey = token
authUser.DoSave(db)
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
data.NeedConfirm = true
}
@@ -646,7 +646,7 @@ func changePasswordForm(c echo.Context, data settingsPasswordData) error {
return c.Render(http.StatusFound, "flash", FlashResponse{Message: "Password changed successfully", Redirect: "/login"})
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func changeDuressPasswordForm(c echo.Context, data settingsPasswordData) error {
@@ -684,7 +684,7 @@ func changeDuressPasswordForm(c echo.Context, data settingsPasswordData) error {
return c.Render(http.StatusFound, "flash", FlashResponse{Message: "Password changed successfully", Redirect: "/login"})
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
func SettingsUploadsHandler(c echo.Context) error {
@@ -715,7 +715,7 @@ func SettingsUploadsHandler(c echo.Context) error {
if err := file.Delete(db); err != nil {
logrus.Error(err)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
return c.Render(http.StatusOK, "settings.uploads", data)
}
@@ -943,7 +943,7 @@ func SettingsWebsiteHandler(c echo.Context) error {
config.SilentSelfKick.Store(settings.SilentSelfKick)
db.NewAudit(*authUser, fmt.Sprintf("website settings, signup: %t, forum: %t, sk: %t",
settings.SignupEnabled, settings.ForumEnabled, settings.SilentSelfKick))
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
return c.Render(http.StatusOK, "settings.website", data)
@@ -961,7 +961,7 @@ func SettingsInvitationsHandler(c echo.Context) error {
if _, err := db.CreateInvitation(authUser.ID); err != nil {
logrus.Error(err)
}
- return c.Redirect(http.StatusFound, c.Request().Referer())
+ return hutils.RedirectReferer(c)
}
data.Invitations, _ = db.GetUserUnusedInvitations(authUser.ID)
@@ -1004,5 +1004,5 @@ func SettingsSecretPhraseHandler(c echo.Context) error {
authUser.DoSave(db)
db.CreateSecurityLog(authUser.ID, database.ChangeSecretPhraseSecurityLog)
- return c.Render(http.StatusFound, "flash", FlashResponse{Message: "Secret phrase changed successfully", Redirect: c.Request().Referer()})
+ return c.Render(http.StatusFound, "flash", FlashResponse{Message: "Secret phrase changed successfully", Redirect: hutils.GetReferer(c)})
}
diff --git a/pkg/web/handlers/utils/utils.go b/pkg/web/handlers/utils/utils.go
@@ -204,3 +204,11 @@ func CloseSignalChan(c echo.Context) <-chan struct{} {
})
return ctx.Done()
}
+
+func GetReferer(c echo.Context) string {
+ return c.Request().Referer()
+}
+
+func RedirectReferer(c echo.Context) error {
+ return c.Redirect(http.StatusFound, GetReferer(c))
+}