|
|
@@ -13,14 +13,14 @@ import (
|
|
|
"strconv"
|
|
|
)
|
|
|
|
|
|
-type pageUserParams struct{
|
|
|
+type pageUserParams struct { // TODO outsource
|
|
|
HasError string
|
|
|
Error string
|
|
|
ReqDir string
|
|
|
Username string
|
|
|
Email string
|
|
|
Admin string
|
|
|
- } // {Error: ""}
|
|
|
+ }
|
|
|
|
|
|
func main() {
|
|
|
|
|
|
@@ -39,6 +39,7 @@ func main() {
|
|
|
//iris.Config.Render.Template.Gzip = true
|
|
|
|
|
|
/** HELPER FUNCTION EXAMPLE **/
|
|
|
+
|
|
|
/*config := html.DefaultConfig()
|
|
|
config.Layout = "layouts/main.html"
|
|
|
config.Helpers["boldme"] = func(input string) raymond.SafeString {
|
|
|
@@ -47,19 +48,19 @@ func main() {
|
|
|
|
|
|
/** ROUTING **/
|
|
|
|
|
|
- iris.UseTemplate(html.New(html.Config{
|
|
|
+ iris.UseTemplate(html.New(html.Config{ // main layout for all pages (like a wrapper for boxes we register downwards)
|
|
|
Layout: "layouts/main.html",
|
|
|
}))
|
|
|
|
|
|
- iris.Static("/js", "./static/js", 1)
|
|
|
+ iris.Static("/js", "./static/js", 1) // make js files in static/js available via /js
|
|
|
iris.Static("/css", "./static/css", 1)
|
|
|
iris.Static("/img", "./static/img", 1)
|
|
|
iris.Static("/static", "./static/static", 1)
|
|
|
|
|
|
- iris.Post("/login", loginHandler) // login form handler // TODO: outsource ?
|
|
|
- iris.Post("/register", registerHandler, usermanager.LogoutHandler) // TODO outsource ?
|
|
|
- iris.Post("/account", usermanager.AuthHandler, accountUpdateHandler, usermanager.LogoutHandler)
|
|
|
- iris.Post("/admin", usermanager.AuthHandler, usermanager.AdminHandler, adminPostHandler)
|
|
|
+ iris.Post("/login", loginHandler) // login form handler
|
|
|
+ iris.Post("/register", registerHandler, usermanager.LogoutHandler) // handles registration, logs user out
|
|
|
+ iris.Post("/account", usermanager.AuthHandler, 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("/logout", usermanager.AuthHandler, usermanager.LogoutHandler)
|
|
|
@@ -82,15 +83,14 @@ func loginHandler(ctx *iris.Context) {
|
|
|
tokenString, err := user.Login(username, password) // try to login
|
|
|
|
|
|
if err != nil {
|
|
|
- ctx.Render("login_box.html", usermanager.PageParams{"1", err.Error(), "login", "0"})
|
|
|
+ templatehelpers.ShowError(err.Error(), ctx, "login")
|
|
|
} else {
|
|
|
ctx.SetCookieKV("token", tokenString)
|
|
|
- ctx.Redirect("/")
|
|
|
- // TODO: error-alternative success (main.html)
|
|
|
+ templatehelpers.ShowNotification("Login successfull", ctx, "home")
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func registerHandler(ctx *iris.Context) {
|
|
|
+func registerHandler(ctx *iris.Context) { // TODO outsource
|
|
|
token := ctx.FormValueString("token") // POST values from login form
|
|
|
username := ctx.FormValueString("username")
|
|
|
password := ctx.FormValueString("password")
|
|
|
@@ -112,23 +112,10 @@ func registerHandler(ctx *iris.Context) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- tokens := usermanager.GetTokens(false) // get all unused tokens, // TODO when v outsourced, use GetToken()
|
|
|
- unusedToken := false // TODO: outsource this (GetToken())
|
|
|
- for i, _ := range tokens {
|
|
|
- if token == tokens[i] {
|
|
|
- unusedToken = true
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- tokens = usermanager.GetTokens(true) // get all used tokens, // TODO when v outsourced, use GetToken()
|
|
|
- usedToken := false // TODO: outsource this (GetToken())
|
|
|
- for i, _ := range tokens {
|
|
|
- if token == tokens[i] {
|
|
|
- usedToken = true
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
+ unusedTokens := usermanager.GetTokens(false) // get all unused tokens
|
|
|
+ usedTokens := usermanager.GetTokens(true) // get all used tokens
|
|
|
+ unusedToken := usermanager.IsTokenUsed(unusedTokens, token)
|
|
|
+ usedToken := usermanager.IsTokenUsed(usedTokens, token)
|
|
|
|
|
|
if !unusedToken && !usedToken { // token doesnt exist
|
|
|
templatehelpers.ShowError(usermanager.ERR_INVALID_TOKEN, ctx, "register")
|
|
|
@@ -162,17 +149,21 @@ func registerHandler(ctx *iris.Context) {
|
|
|
templatehelpers.ShowError(err.Error(), ctx, "login")
|
|
|
} else {
|
|
|
ctx.SetCookieKV("token", tokenString)
|
|
|
- ctx.Redirect("/")
|
|
|
- // TODO: error-alternative success (main.html)
|
|
|
+ templatehelpers.ShowNotification("registration successfull", ctx, "home")
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
- // TODO maybe check whether to login or logout
|
|
|
-
|
|
|
if err := usermanager.UserUpdateProcessor(username, password, tokenUserIDStr); err != nil {
|
|
|
templatehelpers.ShowError(err.Error(), ctx, "register")
|
|
|
return
|
|
|
+ } else {
|
|
|
+ tokenString, err := user.Login(username, password) // try to login with new data
|
|
|
+ if err != nil {
|
|
|
+ templatehelpers.ShowError(err.Error(), ctx, "login")
|
|
|
+ }
|
|
|
+ ctx.SetCookieKV("token", tokenString)
|
|
|
+ templatehelpers.ShowNotification("reset successfull", ctx, "home")
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -187,15 +178,12 @@ func accountUpdateHandler(ctx *iris.Context) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ templatehelpers.ShowNotification("updated successfull", ctx, "account")
|
|
|
}
|
|
|
|
|
|
func adminPostHandler(ctx *iris.Context) {
|
|
|
_ = usermanager.GenerateTokens(5) // generate tokens and store in db, we don't need them now
|
|
|
-
|
|
|
- ctx.Redirect("/admin") // just redirect so that we see old+new tokens
|
|
|
-
|
|
|
- // TODO success notifications
|
|
|
-
|
|
|
+ templatehelpers.ShowNotification("tokens generated", ctx, "admin")
|
|
|
}
|
|
|
|
|
|
func templateHandler(ctx *iris.Context) {
|