67 lines
1.2 KiB
Go
67 lines
1.2 KiB
Go
package db
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/alexedwards/argon2id"
|
|
)
|
|
|
|
var DB map[string]interface{}
|
|
|
|
type GetService struct{}
|
|
var Get = GetService{}
|
|
|
|
func (g GetService) User(id string) (map[string]interface{}, error) {
|
|
raw, ok := DB[id]
|
|
if !ok {
|
|
return nil, errors.New("user not found")
|
|
}
|
|
|
|
userData, ok := raw.(map[string]interface{})
|
|
log.Println(userData)
|
|
if !ok {
|
|
return nil, errors.New("user data is not in expected format")
|
|
}
|
|
|
|
return userData, nil
|
|
}
|
|
|
|
func InitDB() error {
|
|
file, err := os.Open("../db/users.json")
|
|
if err != nil {
|
|
fmt.Println("Error opening file:", err)
|
|
return errors.New("Failed to read db")
|
|
}
|
|
defer file.Close()
|
|
|
|
var data interface{}
|
|
|
|
err = json.NewDecoder(file).Decode(&data)
|
|
if err != nil {
|
|
fmt.Println("Error decoding JSON:", err)
|
|
return errors.New("Failed to decode db")
|
|
}
|
|
|
|
result, ok := data.(map[string]interface{})
|
|
if !ok {
|
|
fmt.Println("Data is not a JSON object (map)")
|
|
return errors.New("Db is in the wrong format")
|
|
}
|
|
|
|
DB = result
|
|
|
|
// Use default recommended parameters
|
|
hash, err := argon2id.CreateHash("hunter2", argon2id.DefaultParams)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Println("Argon2 Hash:")
|
|
fmt.Println(hash)
|
|
|
|
return nil
|
|
} |