|
|
@@ -62,27 +62,7 @@ func main() {
|
|
|
iris.Get("/", usermanager.AuthHandler, templateHandler)
|
|
|
iris.Get("/account", usermanager.AuthHandler, templateHandler)
|
|
|
iris.Get("/help", usermanager.AuthHandler, templateHandler)
|
|
|
-
|
|
|
- iris.Get("/admin", usermanager.AuthHandler, usermanager.AdminHandler, func(ctx *iris.Context) { // TODO integrate in outsource (templateHandler)
|
|
|
- userID := ctx.GetString("userID")
|
|
|
- user, err := usermanager.GetUser(userID)
|
|
|
-
|
|
|
- tokens, err := databaseutils.DBUtil.GetRows("*", "tokens", "used", "0") // get unused tokens
|
|
|
- if err != nil {
|
|
|
- fmt.Println(err.Error()) // TODO: nicer
|
|
|
- }
|
|
|
-
|
|
|
- message := "" // string for textarea output in /admin
|
|
|
-
|
|
|
- for i, _ := range tokens {
|
|
|
- message += tokens[i][1] + "\n"
|
|
|
- }
|
|
|
-
|
|
|
- params := usermanager.PageUserParamsMessage{"0", "", "admin", user.Username, "", user.Admin, message}
|
|
|
- if err := ctx.Render("admin_box.html", params); err != nil {
|
|
|
- println(err.Error())
|
|
|
- }
|
|
|
- })
|
|
|
+ iris.Get("/admin", usermanager.AuthHandler, usermanager.AdminHandler, templateHandler)
|
|
|
|
|
|
/** OTHER **/
|
|
|
|
|
|
@@ -114,7 +94,7 @@ func accountUpdateHandler(ctx *iris.Context) { // TODO tidy up?
|
|
|
user := (*usermanager.Users)[usersArrayID] // user must be logged in to do this -> get from users list
|
|
|
|
|
|
if username != "" && usermanager.SearchUserByUsername(username) != -1 && username != user.Username { // username can't be changed as there already exists a user with that name or it's the old name
|
|
|
- ctx.Render("account_box.html", usermanager.PageUserParams{"1", errors.New("Username already taken").Error(), "account", user.Username, user.Mail, user.Admin})
|
|
|
+ ctx.Render("account_box.html", usermanager.PageUserParams{"1", errors.New("Username already taken").Error(), "account", user.Username, user.Mail, user.Admin, []string{"ayy", "lmao"}})
|
|
|
return
|
|
|
}
|
|
|
|
|
|
@@ -132,19 +112,19 @@ func accountUpdateHandler(ctx *iris.Context) { // TODO tidy up?
|
|
|
needQuery = true
|
|
|
hashedPassword, err = func (hashedPassword []byte, err error) (string, error) { // hash password, we use an anonymous function to convert it to string
|
|
|
if err != nil { // should never happen
|
|
|
- ctx.Render("account_box.html", usermanager.PageUserParams{"1", err.Error(), "account", user.Username, user.Mail, user.Admin})
|
|
|
+ ctx.Render("account_box.html", usermanager.PageUserParams{"1", err.Error(), "account", user.Username, user.Mail, user.Admin, []string{"ayy", "lmao"}})
|
|
|
return "", err
|
|
|
}
|
|
|
return string(hashedPassword), nil
|
|
|
}(bcrypt.GenerateFromPassword([]byte(password), 15)) // this is the actual hashing call
|
|
|
if err != nil { // should never happen
|
|
|
- ctx.Render("account_box.html", usermanager.PageUserParams{"1", err.Error(), "account", user.Username, user.Mail, user.Admin})
|
|
|
+ ctx.Render("account_box.html", usermanager.PageUserParams{"1", err.Error(), "account", user.Username, user.Mail, user.Admin, []string{"ayy", "lmao"}})
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if !needQuery { // we don't need to update anything
|
|
|
- ctx.Render("account_box.html", usermanager.PageUserParams{"1", errors.New("nothing to update").Error(), "account", user.Username, user.Mail, user.Admin})
|
|
|
+ ctx.Render("account_box.html", usermanager.PageUserParams{"1", errors.New("nothing to update").Error(), "account", user.Username, user.Mail, user.Admin, []string{"ayy", "lmao"}})
|
|
|
return
|
|
|
}
|
|
|
|
|
|
@@ -153,31 +133,21 @@ func accountUpdateHandler(ctx *iris.Context) { // TODO tidy up?
|
|
|
|
|
|
err = (*usermanager.Users)[usermanager.SearchUser(userID)].Update() // try to update in db
|
|
|
if err != nil { // failed to update
|
|
|
- ctx.Render("account_box.html", usermanager.PageUserParams{"1", err.Error(), "account", user.Username, user.Mail, user.Admin})
|
|
|
+ ctx.Render("account_box.html", usermanager.PageUserParams{"1", err.Error(), "account", user.Username, user.Mail, user.Admin, []string{"ayy", "lmao"}})
|
|
|
return
|
|
|
}
|
|
|
|
|
|
// TODO success notifications
|
|
|
|
|
|
if err != nil {
|
|
|
- ctx.Render("account_box.html", usermanager.PageUserParams{"1", err.Error(), "account", user.Username, user.Mail, user.Admin}) // TODO dynamic
|
|
|
+ ctx.Render("account_box.html", usermanager.PageUserParams{"1", err.Error(), "account", user.Username, user.Mail, user.Admin, []string{"ayy", "lmao"}}) // TODO dynamic
|
|
|
} else {
|
|
|
- ctx.Render("account_box.html", usermanager.PageUserParams{"0", "", "account", user.Username, user.Mail, user.Admin}) // TODO dynamic
|
|
|
+ ctx.Render("account_box.html", usermanager.PageUserParams{"0", "", "account", user.Username, user.Mail, user.Admin, []string{"ayy", "lmao"}}) // TODO dynamic
|
|
|
}
|
|
|
}
|
|
|
|
|
|
func adminPostHandler(ctx *iris.Context) {
|
|
|
- err := errors.New(""); err = nil
|
|
|
- userID := ctx.GetString("userID")
|
|
|
- usersArrayID := usermanager.SearchUser(userID)
|
|
|
-
|
|
|
- err = usermanager.GenerateTokens(5) // tokens
|
|
|
-
|
|
|
- if err != nil {
|
|
|
- ctx.Render("admin_box.html", usermanager.PageUserParams{"1", err.Error(), "admin", user.Username, user.Mail, user.Admin}) // TODO dynamic
|
|
|
- fmt.Println(err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
+ _ = 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
|
|
|
|
|
|
@@ -186,32 +156,52 @@ func adminPostHandler(ctx *iris.Context) {
|
|
|
}
|
|
|
|
|
|
func templateHandler(ctx *iris.Context) {
|
|
|
+ var params usermanager.PageUserParams
|
|
|
+ userID := ctx.GetString("userID")
|
|
|
+ user, err := usermanager.GetUser(userID)
|
|
|
+
|
|
|
+ if err != nil { // user is apparently not logged in -> login
|
|
|
+ ctx.MustRender("login_box.html", pageUserParams{"1", err.Error(), "login", "", "", "0"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
template := ""
|
|
|
switch ctx.RequestPath(false) {
|
|
|
+ default:
|
|
|
+ template = "home"
|
|
|
+ params = usermanager.PageUserParams{"0", "", template, user.Username, "", user.Admin, []string{}}
|
|
|
case "/":
|
|
|
template = "home"
|
|
|
+ params = usermanager.PageUserParams{"0", "", template, user.Username, "", user.Admin, []string{}}
|
|
|
case "/account":
|
|
|
template = "account"
|
|
|
+ params = usermanager.PageUserParams{"0", "", template, user.Username, "", user.Admin, []string{}}
|
|
|
case "/help":
|
|
|
template = "help"
|
|
|
+ params = usermanager.PageUserParams{"0", "", template, user.Username, "", user.Admin, []string{}}
|
|
|
case "/admin":
|
|
|
template = "admin"
|
|
|
+ tokens, err := databaseutils.DBUtil.GetRows("*", "tokens", "used", "0") // get unused tokens // TODO: outsource in function GetTokens()
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error()) // TODO: nicer / outsource
|
|
|
+ }
|
|
|
+
|
|
|
+ message := "" // string for textarea output in /admin
|
|
|
+ for i, _ := range tokens { // TODO outsource
|
|
|
+ message += tokens[i][1] + "\n"
|
|
|
+ } // TODO outsource function until here
|
|
|
+
|
|
|
+ params = usermanager.PageUserParams{"0", "", template, user.Username, "", user.Admin, []string{message}}
|
|
|
case "/login":
|
|
|
template = "login"
|
|
|
+ params = usermanager.PageUserParams{"0", "", template, "", "", "0", []string{"ayy", "lmao"}}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
// fmt.Println(ctx.RequestPath(false))
|
|
|
|
|
|
// fmt.Println(template)
|
|
|
|
|
|
- userID := ctx.GetString("userID")
|
|
|
- user, err := usermanager.GetUser(userID)
|
|
|
- if err != nil { // user is apparently not logged in -> login
|
|
|
- ctx.MustRender("login_box.html", pageUserParams{"1", err.Error(), template, "", "", "0"})
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- params := usermanager.PageUserParams{"0", "", template, user.Username, "", user.Admin}
|
|
|
ctx.MustRender(template + "_box.html", params);
|
|
|
|
|
|
}
|