|
|
@@ -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")
|
|
|
+ }
|
|
|
+}
|