Moritz Schmidt 9 роки тому
батько
коміт
ec3d1b93c6
1 змінених файлів з 38 додано та 9 видалено
  1. 38 9
      usermanager.go

+ 38 - 9
usermanager.go

@@ -1,23 +1,52 @@
 package usermanager
 
 import (
-  "fmt"
+  "errors"
+  "time"
+  "strconv"
   "git.mmnx.de/Moe/databaseutils"
+  "github.com/dgrijalva/jwt-go"
+  "fmt"
+)
+
+var (
+  Users *[5]User
 )
 
 type User struct {
-  DB *databaseutils.DBUtils
   ID int
   Username string
   Password string
   Mail string
 }
 
-func (user *User) Login(username string, password string) {
-  x := user.DB.GetRow("*", "users", "username", username)
-  fmt.Println("%#v", x)
-}
 
-/*func (user *User) Init(db *databaseutils.DBUtils) {
-  user.db = db;
-}*/
+func (user *User) Login(username string, password string) (string, error) {
+  hmacSampleSecret := []byte("ayyLMAO")
+  row := databaseutils.DBUtil.GetRow("*", "users", "username", username)
+
+  fmt.Println("%v", row)
+
+  if len(row) < 1 { // TODO this doesnt work
+    return "", errors.New("User not found")
+  }
+
+  if password == row[2] {
+    token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
+      "username": username,
+      "userid": row[0],
+      "nbf": time.Now().Unix(),
+      "token": "nigger", // TODO db based tokens
+    })
+
+    tokenString, _ := token.SignedString(hmacSampleSecret)
+
+    user.ID, _ = strconv.Atoi(row[0])
+    user.Username = row[1]
+    user.Mail = row[3]
+
+    return tokenString, nil
+  } else {
+    return "", errors.New("Password Mismatch")
+  }
+}