|
|
@@ -20,7 +20,7 @@ func main() {
|
|
|
databaseutils.DBUtil = &databaseutils.DBUtils{configutils.Conf.DBUser, configutils.Conf.DBPass, configutils.Conf.DBHost, configutils.Conf.DBName, nil} // init dbutils
|
|
|
databaseutils.DBUtil.Connect() // connect to db
|
|
|
|
|
|
- users := make([]usermanager.User, 0) // users list
|
|
|
+ users := make([]usermanager.User, 0) // users slice
|
|
|
usermanager.Users = &users // store globally accessible
|
|
|
|
|
|
fmt.Print("") // for not needing to remove fmt ...
|
|
|
@@ -49,12 +49,12 @@ func main() {
|
|
|
iris.Static("/img", "./static/img", 1)
|
|
|
iris.Static("/static", "./static/static", 1)
|
|
|
|
|
|
- iris.Post("/login", loginHandler, usermanager.AuthHandler) // login form handler
|
|
|
+ iris.Post("/login", usermanager.LoginHandler, usermanager.AuthHandler, templateHandler) // login form handler
|
|
|
iris.Post("/register", usermanager.CanBeAuthedHandler, usermanager.RegisterHandler, usermanager.LogoutHandler) // handles registration, logs user out
|
|
|
- iris.Post("/account", usermanager.AuthHandler, accountUpdateHandler, usermanager.LogoutHandler) // account management
|
|
|
+ iris.Post("/account", usermanager.AuthHandler, usermanager.AccountUpdateHandler, usermanager.LogoutHandler) // account management
|
|
|
iris.Post("/admin", usermanager.AuthHandler, usermanager.AdminHandler, adminPostHandler) // admin panel
|
|
|
|
|
|
- iris.Get("/login", templateHandler) // TODO not when logged in
|
|
|
+ iris.Get("/login", usermanager.CanBeAuthedHandler, templateHandler)
|
|
|
iris.Get("/logout", usermanager.AuthHandler, usermanager.LogoutHandler)
|
|
|
iris.Get("/register", templateHandler)
|
|
|
iris.Get("/", usermanager.AuthHandler, templateHandler)
|
|
|
@@ -67,39 +67,8 @@ func main() {
|
|
|
iris.Listen(":8080")
|
|
|
}
|
|
|
|
|
|
-func loginHandler(ctx *iris.Context) { // TODO outsource?
|
|
|
- username := ctx.FormValueString("username") // POST values from login form
|
|
|
- password := ctx.FormValueString("password")
|
|
|
-
|
|
|
- user := usermanager.User{} // new user
|
|
|
- tokenString, err := user.Login(username, password) // try to login
|
|
|
- ctx.SetCookieKV("token", tokenString)
|
|
|
- ctx.Set("token", tokenString) // set tokenstring as ctx-param as cookie can't be read in next context(s)
|
|
|
-
|
|
|
- if err != nil {
|
|
|
- errorhelpers.HandleError(err, ctx)
|
|
|
- } else {
|
|
|
- templatehelpers.UpdatePageParam(ctx, "notification", errorhelpers.SUCCESS_LOGIN) // TODO this for TODO down ?
|
|
|
- ctx.Next()
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func accountUpdateHandler(ctx *iris.Context) {
|
|
|
- username := ctx.FormValueString("username") // POST values
|
|
|
- password := ctx.FormValueString("password")
|
|
|
- userID := ctx.GetString("userID")
|
|
|
-
|
|
|
- err := usermanager.UserUpdateProcessor(username, password, userID)
|
|
|
- if err != nil { // TODO handle err nil stuff somewhere
|
|
|
- errorhelpers.HandleError(err, ctx)
|
|
|
- } else {
|
|
|
- err = errors.New(errorhelpers.SUCCESS_UPDATE)
|
|
|
- errorhelpers.HandleError(err, ctx)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
func adminPostHandler(ctx *iris.Context) {
|
|
|
- _, err := usermanager.GenerateTokens(5) // generate tokens and store in db, we don't need them now, TODO error handling?
|
|
|
+ _, err := usermanager.GenerateTokens(5) // generate tokens and store in db, we don't need them now
|
|
|
if err != nil {
|
|
|
errorhelpers.HandleError(err, ctx)
|
|
|
} else {
|
|
|
@@ -113,10 +82,15 @@ func templateHandler(ctx *iris.Context) {
|
|
|
|
|
|
switch params["reqDir"] {
|
|
|
case "admin":
|
|
|
- tokens := usermanager.GetTokensAsString(false)
|
|
|
+ tokens, err := usermanager.GetTokensAsString(false)
|
|
|
+ errorhelpers.HandleError(err, ctx)
|
|
|
params["tokens"] = tokens
|
|
|
ctx.Set("params", params)
|
|
|
+ case "login":
|
|
|
+ if params["username"] != "" { // redirect logged in users to home
|
|
|
+ params["reqDir"] = "home"
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- ctx.MustRender(params["reqDir"] + "_box.html", params);
|
|
|
+ ctx.MustRender(params["reqDir"] + "_box.html", params)
|
|
|
}
|