1
0

user.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package user
  2. import (
  3. "github.com/0xJacky/Nginx-UI/model"
  4. "github.com/0xJacky/Nginx-UI/settings"
  5. "github.com/dgrijalva/jwt-go"
  6. "time"
  7. )
  8. type JWTClaims struct {
  9. Name string `json:"name"`
  10. jwt.StandardClaims
  11. }
  12. func GetUser(name string) (user model.Auth, err error) {
  13. db := model.UseDB()
  14. err = db.Where("name", name).First(&user).Error
  15. if err != nil {
  16. return
  17. }
  18. return
  19. }
  20. func DeleteToken(token string) error {
  21. db := model.UseDB()
  22. return db.Where("token", token).Delete(&model.AuthToken{}).Error
  23. }
  24. func CheckToken(token string) int64 {
  25. db := model.UseDB()
  26. return db.Where("token", token).Find(&model.AuthToken{}).RowsAffected
  27. }
  28. func GenerateJWT(name string) (string, error) {
  29. claims := JWTClaims{
  30. Name: name,
  31. StandardClaims: jwt.StandardClaims{
  32. ExpiresAt: time.Now().Add(24 * time.Hour).Unix(),
  33. },
  34. }
  35. unsignedToken := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
  36. signedToken, err := unsignedToken.SignedString([]byte(settings.ServerSettings.JwtSecret))
  37. if err != nil {
  38. return "", err
  39. }
  40. db := model.UseDB()
  41. err = db.Create(&model.AuthToken{
  42. Token: signedToken,
  43. }).Error
  44. if err != nil {
  45. return "", err
  46. }
  47. return signedToken, err
  48. }