diff options
author | Vikas Kushwaha <dev@vikas.rocks> | 2025-02-11 16:31:08 +0530 |
---|---|---|
committer | Vikas Kushwaha <dev@vikas.rocks> | 2025-02-11 16:31:08 +0530 |
commit | 57eb8f6712361a3bf75983ce153fac4846dc0273 (patch) | |
tree | 269a168d59c917c4e313c819e2b4c3ff8175f912 /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.go | 81 |
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") +} |