Implement bcrypt

This commit is contained in:
Jan Bader 2016-12-20 15:15:33 +01:00
parent cf03726643
commit b9d428d386
4 changed files with 29 additions and 5 deletions

15
bcrypt/verifier.go Normal file
View File

@ -0,0 +1,15 @@
package bcrypt
import (
"golang.org/x/crypto/bcrypt"
)
// Verifier verifys passwords using Bcrypt
type Verifier struct {
cost int
}
// Verify verifys a Password
func (bv *Verifier) Verify(password string, hashOnDb string) error {
return bcrypt.CompareHashAndPassword([]byte(hashOnDb), []byte(password))
}

View File

@ -1,6 +1,7 @@
package main
import (
"git.javil.eu/jacob1123/budgeteer/bcrypt"
"git.javil.eu/jacob1123/budgeteer/config"
"git.javil.eu/jacob1123/budgeteer/http"
"git.javil.eu/jacob1123/budgeteer/jwt"
@ -13,13 +14,15 @@ func main() {
panic("Could not load Config from config.json")
}
bv := &bcrypt.Verifier{}
db := postgres.Connect(cfg.DatabaseHost, cfg.DatabaseUser, cfg.DatabasePassword, cfg.DatabaseName)
us := &postgres.UserService{DB: db}
tv := &jwt.TokenVerifier{}
h := &http.Handler{
UserService: us,
TokenVerifier: tv,
UserService: us,
TokenVerifier: tv,
CredentialsVerifier: bv,
}
h.Serve()
}

View File

@ -11,8 +11,9 @@ import (
// Handler handles incoming requests
type Handler struct {
UserService budgeteer.UserService
TokenVerifier budgeteer.TokenVerifier
UserService budgeteer.UserService
TokenVerifier budgeteer.TokenVerifier
CredentialsVerifier budgeteer.CredentialVerifier
}
const (
@ -113,7 +114,7 @@ func (h *Handler) loginPost(c *gin.Context) {
return
}
if password != user.Password {
if err = h.CredentialsVerifier.Verify(password, user.Password); err != nil {
c.AbortWithStatus(http.StatusUnauthorized)
return
}

View File

@ -16,3 +16,8 @@ type UserService interface {
CreateUser(u *User) error
//DeleteUser(id int) error
}
// CredentialVerifier verifies the provided credentials
type CredentialVerifier interface {
Verify(password string, hashOnDb string) error
}