|
|
|
|
@ -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/") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|