usermanager.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package usermanager
  2. import (
  3. "errors"
  4. "time"
  5. "strconv"
  6. "git.mmnx.de/Moe/databaseutils"
  7. "github.com/dgrijalva/jwt-go"
  8. "fmt"
  9. )
  10. var (
  11. Users *[5]User
  12. )
  13. type User struct {
  14. ID int
  15. Username string
  16. Password string
  17. Mail string
  18. }
  19. func (user *User) Login(username string, password string) (string, error) {
  20. hmacSampleSecret := []byte("ayyLMAO")
  21. row := databaseutils.DBUtil.GetRow("*", "users", "username", username)
  22. fmt.Println("%v", row)
  23. if len(row) < 1 { // TODO this doesnt work
  24. return "", errors.New("User not found")
  25. }
  26. if password == row[2] {
  27. token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
  28. "username": username,
  29. "userid": row[0],
  30. "nbf": time.Now().Unix(),
  31. "token": "nigger", // TODO db based tokens
  32. })
  33. tokenString, _ := token.SignedString(hmacSampleSecret)
  34. user.ID, _ = strconv.Atoi(row[0])
  35. user.Username = row[1]
  36. user.Mail = row[3]
  37. return tokenString, nil
  38. } else {
  39. return "", errors.New("Password Mismatch")
  40. }
  41. }