35 lines
693 B
Go
35 lines
693 B
Go
|
package utils
|
||
|
|
||
|
import (
|
||
|
"strconv"
|
||
|
"time"
|
||
|
|
||
|
"github.com/dgrijalva/jwt-go"
|
||
|
"golang.org/x/crypto/bcrypt"
|
||
|
)
|
||
|
|
||
|
func Encrypt(s string) (string, error) {
|
||
|
b, err := bcrypt.GenerateFromPassword([]byte(s), bcrypt.DefaultCost)
|
||
|
if err != nil {
|
||
|
return "", err
|
||
|
}
|
||
|
|
||
|
return string(b), nil
|
||
|
}
|
||
|
|
||
|
func CheckHash(hash, password string) bool {
|
||
|
return bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) == nil
|
||
|
}
|
||
|
|
||
|
func GenerateToken(userID int, secret string) (string, error) {
|
||
|
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
|
||
|
"userID": strconv.Itoa(userID),
|
||
|
})
|
||
|
|
||
|
return token.SignedString([]byte(secret))
|
||
|
}
|
||
|
|
||
|
func Millis(t time.Time) int {
|
||
|
return int(t.UnixNano() / 1000000)
|
||
|
}
|