SHA256
minor changes
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
module OwOrganizer
|
module OwOrganizer
|
||||||
|
|
||||||
go 1.25.0
|
go 1.27.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/go-sql-driver/mysql v1.10.0
|
github.com/go-sql-driver/mysql v1.10.0
|
||||||
|
|||||||
@@ -20,13 +20,9 @@ var (
|
|||||||
|
|
||||||
datastore PasskeyStore
|
datastore PasskeyStore
|
||||||
//sessions SessionStore
|
//sessions SessionStore
|
||||||
l Logger
|
l = log.Default()
|
||||||
)
|
)
|
||||||
|
|
||||||
type Logger interface {
|
|
||||||
Printf(format string, v ...interface{})
|
|
||||||
}
|
|
||||||
|
|
||||||
type PasskeyUser interface {
|
type PasskeyUser interface {
|
||||||
webauthn.User
|
webauthn.User
|
||||||
AddCredential(*webauthn.Credential)
|
AddCredential(*webauthn.Credential)
|
||||||
@@ -43,10 +39,7 @@ type PasskeyStore interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
l = log.Default()
|
|
||||||
|
|
||||||
godotenv.Load()
|
godotenv.Load()
|
||||||
|
|
||||||
proto := getEnv("PROTO", "http")
|
proto := getEnv("PROTO", "http")
|
||||||
host := getEnv("HOST", "localhost")
|
host := getEnv("HOST", "localhost")
|
||||||
port := ":" + getEnv("PORT", "8080")
|
port := ":" + getEnv("PORT", "8080")
|
||||||
@@ -60,35 +53,33 @@ func main() {
|
|||||||
|
|
||||||
l.Printf("[INFO] make webauthn config")
|
l.Printf("[INFO] make webauthn config")
|
||||||
wconfig := &webauthn.Config{
|
wconfig := &webauthn.Config{
|
||||||
RPDisplayName: "Go Webauthn", // Display Name for your site
|
RPDisplayName: "OwOrganizer", // Display Name for your site
|
||||||
RPID: host, // Generally the FQDN for your site
|
RPID: host, // Generally the FQDN for your site
|
||||||
RPOrigins: []string{origin}, // The origin URLs allowed for WebAuthn
|
RPOrigins: []string{origin}, // The origin URLs allowed for WebAuthn
|
||||||
}
|
}
|
||||||
|
|
||||||
l.Printf("[INFO] create webauthn")
|
l.Printf("[INFO] create webauthn")
|
||||||
if webAuthn, err = webauthn.New(wconfig); err != nil {
|
if webAuthn, err = webauthn.New(wconfig); err != nil {
|
||||||
fmt.Printf("[FATAL] %s", err.Error())
|
l.Panicf(err.Error())
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
db, err := sql.Open("mysql", cfg.FormatDSN())
|
db, err := sql.Open("mysql", cfg.FormatDSN())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
l.Panicf(err.Error())
|
||||||
}
|
}
|
||||||
defer db.Close()
|
defer db.Close()
|
||||||
// See "Important settings" section.
|
|
||||||
db.SetConnMaxLifetime(time.Minute * 3)
|
db.SetConnMaxLifetime(time.Minute * 3)
|
||||||
db.SetMaxOpenConns(10)
|
db.SetMaxOpenConns(10)
|
||||||
db.SetMaxIdleConns(10)
|
db.SetMaxIdleConns(10)
|
||||||
_, err = db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", dbName))
|
_, err = db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", dbName))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Failed to verify/create database: %v", err)
|
log.Panicf("Failed to verify/create database: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Switch your current connection pool to the database
|
|
||||||
_, err = db.Exec(fmt.Sprintf("USE %s", dbName))
|
_, err = db.Exec(fmt.Sprintf("USE %s", dbName))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Failed to switch database: %v", err)
|
log.Panicf("Failed to switch database: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
query := "CREATE TABLE IF NOT EXISTS users (" +
|
query := "CREATE TABLE IF NOT EXISTS users (" +
|
||||||
@@ -106,7 +97,7 @@ func main() {
|
|||||||
|
|
||||||
_, err = db.Exec(query)
|
_, err = db.Exec(query)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Failed to verify/create table: %v", err)
|
log.Panicf("Failed to verify/create table: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
l.Printf("[INFO] create datastore")
|
l.Printf("[INFO] create datastore")
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
_ "github.com/go-sql-driver/mysql"
|
_ "github.com/go-sql-driver/mysql"
|
||||||
"github.com/go-webauthn/webauthn/webauthn"
|
"github.com/go-webauthn/webauthn/webauthn"
|
||||||
)
|
)
|
||||||
@@ -15,7 +16,7 @@ type InMem struct {
|
|||||||
users map[string]PasskeyUser
|
users map[string]PasskeyUser
|
||||||
sessions map[string]webauthn.SessionData
|
sessions map[string]webauthn.SessionData
|
||||||
|
|
||||||
log Logger
|
log* log.Logger
|
||||||
db* sql.DB
|
db* sql.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,7 +31,7 @@ func (i *InMem) GenSessionID() (string, error) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewInMem(log Logger, db *sql.DB) *InMem {
|
func NewInMem(log *log.Logger, db *sql.DB) *InMem {
|
||||||
return &InMem{
|
return &InMem{
|
||||||
users: make(map[string]PasskeyUser),
|
users: make(map[string]PasskeyUser),
|
||||||
sessions: make(map[string]webauthn.SessionData),
|
sessions: make(map[string]webauthn.SessionData),
|
||||||
|
|||||||
Reference in New Issue
Block a user