package helpers import ( "crypto/rand" "encoding/hex" "log" "path/filepath" "runtime" "golang.org/x/crypto/bcrypt" ) //CheckError checks for errors and logs them and stops the program func CheckError(err error) bool { if err != nil { log.Fatal(err) return false } return true } func GetRootDir() string { _, b, _, _ := runtime.Caller(0) dir := filepath.Dir(b) return filepath.Dir(filepath.Dir(dir)) } func GetAssets() string { return GetRootDir() } func HashPassword(password string) (string, error) { hash, err := bcrypt.GenerateFromPassword([]byte(password), 14) return string(hash), err } func CheckPasswordHash(password, hash string) error { err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) return err } func RandHex() string { bytes := make([]byte, 12) rand.Read(bytes) return hex.EncodeToString(bytes) } func Bytes(n int) ([]byte, error) { b := make([]byte, n) _, err := rand.Read(b) if err != nil { return nil, err } return b, nil }