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 @@
+
+
+