Add default customer id
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
package m
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package m
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package m
|
package model
|
||||||
|
|
||||||
import "errors"
|
import "errors"
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package m
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
@@ -13,8 +13,8 @@ type NKodeHandler struct {
|
|||||||
|
|
||||||
func (h *NKodeHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
func (h *NKodeHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
switch r.URL.Path {
|
switch r.URL.Path {
|
||||||
case api.CreateNewCustomer:
|
//case api.CreateNewCustomer:
|
||||||
h.CreateNewCustomerHandler(w, r)
|
// h.CreateNewCustomerHandler(w, r)
|
||||||
case api.GenerateSignupInterface:
|
case api.GenerateSignupInterface:
|
||||||
h.GenerateSignupInterfaceHandler(w, r)
|
h.GenerateSignupInterfaceHandler(w, r)
|
||||||
case api.SetNKode:
|
case api.SetNKode:
|
||||||
@@ -46,7 +46,7 @@ func (h *NKodeHandler) CreateNewCustomerHandler(w http.ResponseWriter, r *http.R
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
customerId, err := h.Api.CreateNewCustomer(customerPost.NKodePolicy)
|
customerId, err := h.Api.CreateNewCustomer(customerPost.NKodePolicy, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
internalServerErrorHandler(w)
|
internalServerErrorHandler(w)
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -84,7 +84,17 @@ func (h *NKodeHandler) GenerateSignupInterfaceHandler(w http.ResponseWriter, r *
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
resp, err := h.Api.GenerateSignupInterface(signupPost.CustomerId, KeypadDefault)
|
kp := KeypadDimension{
|
||||||
|
AttrsPerKey: signupPost.AttrsPerKey,
|
||||||
|
NumbOfKeys: signupPost.NumbOfKeys,
|
||||||
|
}
|
||||||
|
err = kp.IsValidKeypadDimension()
|
||||||
|
if err != nil {
|
||||||
|
keypadSizeOutOfRange(w)
|
||||||
|
log.Fatal(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, err := h.Api.GenerateSignupInterface(signupPost.CustomerId, kp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
internalServerErrorHandler(w)
|
internalServerErrorHandler(w)
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -270,3 +280,8 @@ func methodNotAllowed(w http.ResponseWriter) {
|
|||||||
w.WriteHeader(http.StatusMethodNotAllowed)
|
w.WriteHeader(http.StatusMethodNotAllowed)
|
||||||
w.Write([]byte("405 method not allowed"))
|
w.Write([]byte("405 method not allowed"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func keypadSizeOutOfRange(w http.ResponseWriter) {
|
||||||
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
|
w.Write([]byte("invalid keypad dimensions"))
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package m
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package m
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package m
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
@@ -13,7 +13,9 @@ type NewCustomerPost struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type GenerateSignupInterfacePost struct {
|
type GenerateSignupInterfacePost struct {
|
||||||
CustomerId CustomerId `json:"customer_id"`
|
CustomerId CustomerId `json:"customer_id"`
|
||||||
|
AttrsPerKey int `json:"attrs_per_key"`
|
||||||
|
NumbOfKeys int `json:"numb_of_keys"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type SetNKodePost struct {
|
type SetNKodePost struct {
|
||||||
@@ -66,7 +68,7 @@ type Username string
|
|||||||
type IdxInterface []int
|
type IdxInterface []int
|
||||||
|
|
||||||
type NKodeAPIInterface interface {
|
type NKodeAPIInterface interface {
|
||||||
CreateNewCustomer(NKodePolicy) (*CustomerId, error)
|
CreateNewCustomer(NKodePolicy, *CustomerId) (*CustomerId, error)
|
||||||
GenerateSignupInterface(CustomerId, KeypadDimension) (*GenerateSignupInterfaceResp, error)
|
GenerateSignupInterface(CustomerId, KeypadDimension) (*GenerateSignupInterfaceResp, error)
|
||||||
SetNKode(Username, CustomerId, SessionId, KeySelection) (IdxInterface, error)
|
SetNKode(Username, CustomerId, SessionId, KeySelection) (IdxInterface, error)
|
||||||
ConfirmNKode(CustomerId, SessionId, KeySelection) error
|
ConfirmNKode(CustomerId, SessionId, KeySelection) error
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package m
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"go-nkode/util"
|
"go-nkode/util"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package m
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package m
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package m
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|||||||
@@ -14,24 +14,24 @@ func TestCustomer(t *testing.T) {
|
|||||||
|
|
||||||
func testNewCustomerAttributes(t *testing.T) {
|
func testNewCustomerAttributes(t *testing.T) {
|
||||||
// keypad := m.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 5}
|
// keypad := m.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 5}
|
||||||
_, nil := m.NewCustomerAttributes()
|
_, nil := model.NewCustomerAttributes()
|
||||||
assert.NoError(t, nil)
|
assert.NoError(t, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func testCustomerValidKeyEntry(t *testing.T) {
|
func testCustomerValidKeyEntry(t *testing.T) {
|
||||||
kp := m.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 9}
|
kp := model.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 9}
|
||||||
nkodePolicy := m.NewDefaultNKodePolicy()
|
nkodePolicy := model.NewDefaultNKodePolicy()
|
||||||
customer, err := m.NewCustomer(nkodePolicy)
|
customer, err := model.NewCustomer(nkodePolicy)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
newUserInterface, err := m.NewUserInterface(&kp)
|
newUserInterface, err := model.NewUserInterface(&kp)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
username := m.Username("testing123")
|
username := model.Username("testing123")
|
||||||
passcodeIdx := []int{0, 1, 2, 3}
|
passcodeIdx := []int{0, 1, 2, 3}
|
||||||
user, err := NewUser(*customer, username, passcodeIdx, *newUserInterface, kp)
|
user, err := NewUser(*customer, username, passcodeIdx, *newUserInterface, kp)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
userLoginInterface, err := user.GetLoginInterface()
|
userLoginInterface, err := user.GetLoginInterface()
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
selectedKeys, err := m.SelectKeyByAttrIdx(userLoginInterface, passcodeIdx, kp)
|
selectedKeys, err := model.SelectKeyByAttrIdx(userLoginInterface, passcodeIdx, kp)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
validatedPasscode, err := ValidKeyEntry(*user, *customer, selectedKeys)
|
validatedPasscode, err := ValidKeyEntry(*user, *customer, selectedKeys)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
@@ -42,13 +42,13 @@ func testCustomerValidKeyEntry(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func testCustomerIsValidNKode(t *testing.T) {
|
func testCustomerIsValidNKode(t *testing.T) {
|
||||||
kp := m.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 7}
|
kp := model.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 7}
|
||||||
nkodePolicy := m.NewDefaultNKodePolicy()
|
nkodePolicy := model.NewDefaultNKodePolicy()
|
||||||
customer, err := m.NewCustomer(nkodePolicy)
|
customer, err := model.NewCustomer(nkodePolicy)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
newUserInterface, err := m.NewUserInterface(&kp)
|
newUserInterface, err := model.NewUserInterface(&kp)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
username := m.Username("testing123")
|
username := model.Username("testing123")
|
||||||
passcodeIdx := []int{0, 1, 2, 3}
|
passcodeIdx := []int{0, 1, 2, 3}
|
||||||
user, err := NewUser(*customer, username, passcodeIdx, *newUserInterface, kp)
|
user, err := NewUser(*customer, username, passcodeIdx, *newUserInterface, kp)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type DbAccessor interface {
|
type DbAccessor interface {
|
||||||
GetCustomer(m.CustomerId) (*m.Customer, error)
|
GetCustomer(model.CustomerId) (*model.Customer, error)
|
||||||
GetUser(m.Username, m.CustomerId) (*m.User, error)
|
GetUser(model.Username, model.CustomerId) (*model.User, error)
|
||||||
WriteNewCustomer(m.Customer) error
|
WriteNewCustomer(model.Customer) error
|
||||||
WriteNewUser(m.User) error
|
WriteNewUser(model.User) error
|
||||||
UpdateUserInterface(m.UserId, m.UserInterface) error
|
UpdateUserInterface(model.UserId, model.UserInterface) error
|
||||||
Renew(m.CustomerId) error
|
Renew(model.CustomerId) error
|
||||||
RefreshUser(m.User, []int, m.CustomerAttributes) error
|
RefreshUser(model.User, []int, model.CustomerAttributes) error
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,8 +18,11 @@ func NewNKodeAPI(db DbAccessor) NKodeAPI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NKodeAPI) CreateNewCustomer(nkodePolicy m.NKodePolicy) (*m.CustomerId, error) {
|
func (n *NKodeAPI) CreateNewCustomer(nkodePolicy m.NKodePolicy, id *m.CustomerId) (*m.CustomerId, error) {
|
||||||
newCustomer, err := m.NewCustomer(nkodePolicy)
|
newCustomer, err := m.NewCustomer(nkodePolicy)
|
||||||
|
if id != nil {
|
||||||
|
newCustomer.Id = *id
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ func testNKodeAPI(t *testing.T, db DbAccessor) {
|
|||||||
nkodePolicy := m.NewDefaultNKodePolicy()
|
nkodePolicy := m.NewDefaultNKodePolicy()
|
||||||
keypadSize := m.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 8}
|
keypadSize := m.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 8}
|
||||||
nkodeApi := NewNKodeAPI(db)
|
nkodeApi := NewNKodeAPI(db)
|
||||||
customerId, err := nkodeApi.CreateNewCustomer(nkodePolicy)
|
customerId, err := nkodeApi.CreateNewCustomer(nkodePolicy, nil)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
signupResponse, err := nkodeApi.GenerateSignupInterface(*customerId, keypadSize)
|
signupResponse, err := nkodeApi.GenerateSignupInterface(*customerId, keypadSize)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|||||||
21
main.go
21
main.go
@@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/google/uuid"
|
||||||
"go-nkode/core/api"
|
"go-nkode/core/api"
|
||||||
"go-nkode/core/model"
|
"go-nkode/core/model"
|
||||||
"go-nkode/core/nkode"
|
"go-nkode/core/nkode"
|
||||||
@@ -16,9 +17,10 @@ func main() {
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
nkodeApi := nkode.NewNKodeAPI(db)
|
nkodeApi := nkode.NewNKodeAPI(db)
|
||||||
handler := m.NKodeHandler{Api: &nkodeApi}
|
AddDefaultCustomer(nkodeApi)
|
||||||
|
handler := model.NKodeHandler{Api: &nkodeApi}
|
||||||
mux := http.NewServeMux()
|
mux := http.NewServeMux()
|
||||||
mux.Handle(api.CreateNewCustomer, &handler)
|
//mux.Handle(api.CreateNewCustomer, &handler)
|
||||||
mux.Handle(api.GenerateSignupInterface, &handler)
|
mux.Handle(api.GenerateSignupInterface, &handler)
|
||||||
mux.Handle(api.SetNKode, &handler)
|
mux.Handle(api.SetNKode, &handler)
|
||||||
mux.Handle(api.ConfirmNKode, &handler)
|
mux.Handle(api.ConfirmNKode, &handler)
|
||||||
@@ -28,3 +30,18 @@ func main() {
|
|||||||
fmt.Println("Running on localhost:8080...")
|
fmt.Println("Running on localhost:8080...")
|
||||||
log.Fatal(http.ListenAndServe("localhost:8080", mux))
|
log.Fatal(http.ListenAndServe("localhost:8080", mux))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func AddDefaultCustomer(api nkode.NKodeAPI) {
|
||||||
|
newId, err := uuid.Parse("ed9ed6e0-082c-4b57-8d8c-f00ed6493457")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
customerId := model.CustomerId(newId)
|
||||||
|
nkode_policy := model.NewDefaultNKodePolicy()
|
||||||
|
_, err = api.CreateNewCustomer(nkode_policy, &customerId)
|
||||||
|
if err != nil {
|
||||||
|
log.Print(err)
|
||||||
|
} else {
|
||||||
|
log.Print("created new customer: ", newId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user