From fdb328a1fff15023cecaaaaf8685f86cb354b201 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Sat, 13 Sep 2025 14:25:15 -0400 Subject: [PATCH] Updated with the latest go-web-kit stuff, and also merged back some changes to that project. --- api/auth.go | 106 +++++++++++++++++++++------------------- api/message.go | 2 +- data/crud.go | 9 ++-- views/layouts/main.html | 8 +++ 4 files changed, 69 insertions(+), 56 deletions(-) diff --git a/api/auth.go b/api/auth.go index 8191c37..82837e7 100644 --- a/api/auth.go +++ b/api/auth.go @@ -15,6 +15,55 @@ import ( . "MY/webapp/common" ) +func GetApiLogout(c *fiber.Ctx) error { + err := LogoutUser(c) + if err != nil { return IfErrNil(err, c) } + + return c.Redirect("/") +} + +func PostApiRegister(c *fiber.Ctx) error { + user, err := ReceivePost[data.User](c) + if err != nil { return IfErrNil(err, c) } + + err = SetUserPassword(user) + if err != nil { return IfErrNil(err, c) } + + sql, args, err := sq.Insert("user"). + Columns("username", "email", "password"). + Values(user.Username, user.Email, user.Password).ToSql() + + _, err = data.Exec(err, sql, args...) + if err != nil { return IfErrNil(err, c) } + + return c.Redirect("/login/") +} + +func PostApiLogin(c *fiber.Ctx) error { + var user data.User + + login, err := ReceivePost[data.Login](c) + if(err != nil) { return IfErrNil(err, c) } + + pass_good, err := LoginUser(&user, login) + if err != nil { return IfErrNil(err, c) } + + if pass_good { + sess, err := STORE.Get(c) + if err != nil { return IfErrNil(err, c) } + + sess.Set("user_id", user.Id) + sess.Set("authenticated", true) + sess.Set("admin", IsAdmin(&user)) + err = sess.Save() + if err != nil { return IfErrNil(err, c) } + + return c.Redirect("/") + } else { + return c.Redirect("/login/") + } +} + func IsAdmin(user *data.User) bool { return user.Username == config.Settings.Admin } @@ -27,7 +76,8 @@ func CheckAuthed(c *fiber.Ctx, needs_admin bool) (*session.Session, error) { admin := sess.Get("admin") == true authed := sess.Get("authenticated") == true - log.Printf("session admin=%v, session authed=%v, needs_admin = %v", admin, authed, needs_admin) + log.Printf("session admin=%v, session authed=%v, needs_admin = %v", + sess.Get("admin"), sess.Get("authenticated"), needs_admin) if needs_admin { authed = admin && authed @@ -46,7 +96,10 @@ func CheckAuthed(c *fiber.Ctx, needs_admin bool) (*session.Session, error) { func LogoutUser(c *fiber.Ctx) error { sess, err := STORE.Get(c) if err != nil { return err } - sess.Reset() + + err = sess.Destroy() + if err != nil { return err } + err = sess.Save() return err } @@ -73,52 +126,3 @@ func SetUserPassword(user *data.User) error { user.Password = string(hashed) return nil } - -func GetApiLogout(c *fiber.Ctx) error { - err := LogoutUser(c) - if err != nil { return IfErrNil(err, c) } - - return c.Redirect("/") -} - -func PostApiRegister(c *fiber.Ctx) error { - user, err := ReceivePost[data.User](c) - if err != nil { return IfErrNil(err, c) } - - err = SetUserPassword(user) - if err != nil { return IfErrNil(err, c) } - - sql, args, err := sq.Insert("user"). - Columns("username", "email", "password"). - Values(user.Username, user.Email, user.Password).ToSql() - - err = data.Exec(err, sql, args...) - if err != nil { return IfErrNil(err, c) } - - return c.Redirect("/login/") -} - -func PostApiLogin(c *fiber.Ctx) error { - var user data.User - - login, err := ReceivePost[data.Login](c) - if(err != nil) { return IfErrNil(err, c) } - - pass_good, err := LoginUser(&user, login) - if err != nil { return IfErrNil(err, c) } - - if pass_good { - sess, err := STORE.Get(c) - if err != nil { return IfErrNil(err, c) } - - sess.Set("authenticated", true) - sess.Set("user_id", user.Id) - sess.Set("admin", IsAdmin(&user)) - err = sess.Save() - if err != nil { return IfErrNil(err, c) } - - return c.Redirect("/") - } else { - return c.Redirect("/login/") - } -} diff --git a/api/message.go b/api/message.go index a0ca355..76ca130 100644 --- a/api/message.go +++ b/api/message.go @@ -36,7 +36,7 @@ func PostApiMessage(c *fiber.Ctx) error { sql, args, err := build.ToSql() - err = data.Exec(err, sql, args...) + _, err = data.Exec(err, sql, args...) if err != nil { return IfErrNil(err, c) } return c.Redirect("/feed/") diff --git a/data/crud.go b/data/crud.go index f645f9b..f0a5b3c 100644 --- a/data/crud.go +++ b/data/crud.go @@ -2,6 +2,7 @@ package data import ( "log" + "database/sql" "github.com/gofiber/fiber/v2" _ "github.com/mattn/go-sqlite3" "github.com/jmoiron/sqlx" @@ -50,8 +51,8 @@ func GetJson[T any](c *fiber.Ctx, err error, sql string, args ...interface{}) er fail: return err } -func Exec(err error, sql_query string, args ...interface{}) (error) { - if err != nil { return err } - DB.MustExec(sql_query, args...) - return err +func Exec(err error, sql_query string, args ...interface{}) (sql.Result, error) { + if err != nil { return nil, err } + result, err := DB.Exec(sql_query, args...) + return result, err } diff --git a/views/layouts/main.html b/views/layouts/main.html index 986ee99..840bef3 100644 --- a/views/layouts/main.html +++ b/views/layouts/main.html @@ -42,6 +42,14 @@ + + + + +