|
|
|
|
@ -5,74 +5,21 @@ import ( |
|
|
|
|
"time" |
|
|
|
|
|
|
|
|
|
"github.com/gofiber/fiber/v2" |
|
|
|
|
_ "github.com/mattn/go-sqlite3" |
|
|
|
|
sq "github.com/Masterminds/squirrel" |
|
|
|
|
"github.com/gofiber/fiber/v2/middleware/session" |
|
|
|
|
|
|
|
|
|
"MY/webapp/data" |
|
|
|
|
. "MY/webapp/common" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
var STORE *session.Store |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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) } |
|
|
|
|
|
|
|
|
|
// BUG: THIS IS A BIG NO NO, just for getting going
|
|
|
|
|
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 Setup(app *fiber.App) { |
|
|
|
|
STORE = session.New() |
|
|
|
|
|
|
|
|
|
// this forces static pages to reload
|
|
|
|
|
app.Static("/", "./public", fiber.Static{ |
|
|
|
|
Compress: false, |
|
|
|
|
CacheDuration: 1 * time.Nanosecond, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
// api/auth.go
|
|
|
|
|
app.Get("/api/logout", GetApiLogout) |
|
|
|
|
app.Post("/api/login", PostApiLogin) |
|
|
|
|
app.Post("/api/register", PostApiRegister) |
|
|
|
|
|