aboutsummaryrefslogtreecommitdiff
path: root/cmd/web/controller/htmx/setting.go
diff options
context:
space:
mode:
authorVikas Kushwaha <dev@vikas.rocks>2025-02-11 16:31:08 +0530
committerVikas Kushwaha <dev@vikas.rocks>2025-02-11 16:31:08 +0530
commit57eb8f6712361a3bf75983ce153fac4846dc0273 (patch)
tree269a168d59c917c4e313c819e2b4c3ff8175f912 /cmd/web/controller/htmx/setting.go
Initial commit
Diffstat (limited to 'cmd/web/controller/htmx/setting.go')
-rw-r--r--cmd/web/controller/htmx/setting.go81
1 files changed, 81 insertions, 0 deletions
diff --git a/cmd/web/controller/htmx/setting.go b/cmd/web/controller/htmx/setting.go
new file mode 100644
index 0000000..28c138c
--- /dev/null
+++ b/cmd/web/controller/htmx/setting.go
@@ -0,0 +1,81 @@
+package HTMXController
+
+import (
+ "projecty/cmd/web/model"
+ "projecty/internal"
+ "projecty/internal/authentication"
+ "projecty/internal/database"
+ "projecty/internal/helper"
+
+ "github.com/go-playground/validator/v10"
+ "github.com/gofiber/fiber/v2"
+)
+
+func SettingPage(c *fiber.Ctx) error {
+
+ var authenticatedUser model.User
+
+ isAuthenticated, userID := authentication.AuthGet(c)
+
+ if isAuthenticated {
+ db := database.Get()
+ db.Model(&authenticatedUser).
+ Where("id = ?", userID).
+ First(&authenticatedUser)
+ }
+
+ return c.Render("settings/htmx-setting-page", fiber.Map{
+ "PageTitle": "Settings",
+ "NavBarActive": "settings",
+ "FiberCtx": c,
+ "AuthenticatedUser": authenticatedUser,
+ }, "layouts/app-htmx")
+
+}
+
+func SettingAction(c *fiber.Ctx) error {
+
+ var errorBag []string
+ validate := internal.NewValidator()
+
+ isAuthenticated, userID := authentication.AuthGet(c)
+ if !isAuthenticated {
+ return helper.HTMXRedirectTo("/sign-in", "/htmx/sign-in", c)
+ }
+
+ user := &model.User{
+ ID: userID,
+ Image: c.FormValue("image"),
+ Name: c.FormValue("name"),
+ Bio: c.FormValue("bio"),
+ Email: c.FormValue("email"),
+ Password: c.FormValue("password"),
+ }
+
+ err := validate.Validate(user)
+ if err != nil {
+ for _, err := range err.(validator.ValidationErrors) {
+ errorBag = append(errorBag, internal.ErrorMessage(err.Field(), err.Tag()))
+ }
+
+ return c.Render("settings/partials/form-message", fiber.Map{
+ "IsOob": true,
+ "Errors": errorBag,
+ }, "layouts/app-htmx")
+ }
+
+ if user.Password != "" {
+ user.HashPassword()
+ }
+
+ db := database.Get()
+ db.Model(user).Updates(user)
+
+ return c.Render("settings/partials/htmx-form-message", fiber.Map{
+ "IsOob": true,
+ "SuccessMessages": []string{"Data successfully saved."},
+ "NavBarActive": "settings",
+ "FiberCtx": c,
+ "AuthenticatedUser": user,
+ }, "layouts/app-htmx")
+}