ソースを参照

"finished" templateHandler alpha

Moritz Schmidt 9 年 前
コミット
87ff8ec9fe
3 ファイル変更39 行追加49 行削除
  1. 37 47
      main.go
  2. 1 1
      templates/admin_box.html
  3. 1 1
      templates/help_box.html

+ 37 - 47
main.go

@@ -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);
 
 }

+ 1 - 1
templates/admin_box.html

@@ -6,7 +6,7 @@
         </div>
         <div class="form-group row">
           <div class="col-sm-12">
-            <textarea class="form-control" id="tokens" name="tokens" placeholder="noch keine vorhanden">{{ .Message }}</textarea>
+            <textarea class="form-control" id="tokens" name="tokens" placeholder="noch keine vorhanden">{{ range .Custom }}{{ . }}{{ end }}</textarea>
           </div>
         </div>
       </form>

+ 1 - 1
templates/help_box.html

@@ -1,3 +1,3 @@
 <div class="col-lg-6 offset-lg-3 col-md-8 offset-md-2 col-sm-12" style="text-align: center;">
-  W.I.P.
+  W.I.P. <!--{{ range .Custom }}<div>{{ . }}</div>{{else}}<div><strong>no rows</strong></div>{{end}}-->
 </div>