+9
-3
appview/db/db.go
+9
-3
appview/db/db.go
···
3
3
import (
4
4
"context"
5
5
"database/sql"
6
+
"encoding/hex"
6
7
"fmt"
7
8
"log"
8
9
···
116
117
117
118
res := tx.QueryRow(`select secret from registrations where domain = ?`, domain)
118
119
119
-
var storedSecret string
120
-
err = res.Scan(&storedSecret)
120
+
var hexSecret string
121
+
err = res.Scan(&hexSecret)
122
+
if err != nil {
123
+
return err
124
+
}
125
+
126
+
decoded, err := hex.DecodeString(hexSecret)
121
127
if err != nil {
122
128
return err
123
129
}
124
130
125
-
err = bcrypt.CompareHashAndPassword([]byte(storedSecret), []byte(secret))
131
+
err = bcrypt.CompareHashAndPassword(decoded, []byte(secret))
126
132
if err != nil {
127
133
return err
128
134
}
+7
appview/state/state.go
+7
appview/state/state.go
···
108
108
domain := req.Domain
109
109
secret := req.Secret
110
110
111
+
err := s.Db.Register(domain, secret)
112
+
if err != nil {
113
+
log.Println("failed to register domain", err)
114
+
return
115
+
}
116
+
111
117
log.Printf("Registered domain: %s with secret: %s", domain, secret)
112
118
}
113
119
}
···
116
122
r := chi.NewRouter()
117
123
118
124
r.Post("/login", s.Login)
125
+
r.Post("/node/register", s.Register)
119
126
r.Group(func(r chi.Router) {
120
127
r.Use(AuthMiddleware(s))
121
128
r.Post("/node/generate-key", s.GenerateRegistrationKey)