Moritz Schmidt 9 ani în urmă
părinte
comite
147682e0dc
1 a modificat fișierele cu 28 adăugiri și 13 ștergeri
  1. 28 13
      usermanager.go

+ 28 - 13
usermanager.go

@@ -36,7 +36,7 @@ type PageParams struct{
   Error string
   ReqDir string
   Admin string
-  } // {Error: ""} // TODO: OUTSOURCE : is outsourced here now
+  }
 
 type PageUserParams struct{
   HasError string
@@ -45,7 +45,7 @@ type PageUserParams struct{
   Username string
   Email string
   Admin string
-  } // {Error: ""}
+  }
 
 type PageUserParamsMessage struct{
   HasError string
@@ -55,7 +55,7 @@ type PageUserParamsMessage struct{
   Email string
   Admin string
   Message string
-  } // {Error: ""}
+  }
 
 func (user *User) Login(username string, password string) (string, error) {
   hmacSampleSecret := []byte(configutils.Conf.CryptoKey) // crypto key for JWT encryption
@@ -177,41 +177,56 @@ func AuthHandler(ctx *iris.Context) {
   if isAuthed {
     ctx.Next() // successfully authed, next handler
   } else {
-    if err := ctx.Render("login.html", PageParams{"1", err.Error(), "login", "0"}); err != nil {
+    if err := ctx.Render("login_box.html", PageParams{"1", err.Error(), "login", "0"}); err != nil {
       println(err.Error())
       } // failed to auth
 
   }
 }
 
+func AdminHandler(ctx *iris.Context) {
+  userID := ctx.GetString("userID")
+  user, err := GetUser(userID)
+
+  if user.Admin != "1" { // check if user is admin
+      err = errors.New("User no Admin: " + userID)
+      fmt.Println(err.Error())
+      ctx.Redirect("/")
+      return
+    } else {
+      ctx.Next()
+    }
+}
+
 func GenerateTokens(numTokens int) []string {
   const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
     tokens := make([]string, 0)
     dbTokens := make([][]string, 0)
 
     for i := 0; i < numTokens; i++ {
-      b := make([]byte, 16) // 16 char long tokens
+      b := make([]byte, 16)
       for i := range b {
           b[i] = letterBytes[rand.Intn(len(letterBytes))]
       }
       tokens = append(tokens, string(b))
-      //dbTokens = append(dbTokens, []string{string(b), "0"})
       dbTokens = [][]string{[]string{"value", string(b)}, []string{"used", "0"}}
       err := databaseutils.DBUtil.InsertRow("tokens", dbTokens)
       if err != nil {
         fmt.Println(err.Error())
         return []string{""}
       }
-      // dbTokens[i] :=
     }
 
-    // err := databaseutils.DBUtil.InsertRow("tokens", dbTokens)
+    return tokens
+}
 
-    /*if err != nil {
-      fmt.Println(err.Error())
-      return []string{""}
-    }*/
+func GetUser(userID string) (User, error) {
+  usersArrayID := SearchUser(userID)
 
-    return tokens
+  if usersArrayID == -1 { // TODO check if unneccessary (AuthHandler) (Ddepends on where used: TODO CHECK)
+    return User{}, errors.New("User not logged in")
+  }
 
+  user := (*Users)[usersArrayID] // user must be logged in to do this -> get from users list
+  return user, nil
 }