1
0
mirror of https://github.com/coalaura/whiskr.git synced 2025-12-02 20:22:52 +00:00

auto-generate user ids

This commit is contained in:
Laura
2025-09-11 23:33:54 +02:00
parent 1c4ff26378
commit 5998f61823

56
env.go
View File

@@ -3,7 +3,7 @@ package main
import (
"bytes"
"crypto/rand"
"encoding/base64"
"encoding/hex"
"errors"
"io"
"os"
@@ -25,6 +25,7 @@ type EnvSettings struct {
}
type EnvUser struct {
ID string `json:"id"`
Username string `json:"username"`
Password string `json:"password"`
}
@@ -64,6 +65,8 @@ func init() {
}
func (e *Environment) Init() error {
var store bool
// print if debug is enabled
if e.Debug {
log.Warnln("Debug mode enabled")
@@ -78,23 +81,16 @@ func (e *Environment) Init() error {
// check if server secret is set
if e.Tokens.Secret == "" {
log.Warnln("Missing tokens.secret, generating new...")
log.Warnln("Missing tokens.secret, generating new")
key := make([]byte, 32)
_, err := io.ReadFull(rand.Reader, key)
secret, err := CreateSecret(32)
if err != nil {
return err
}
e.Tokens.Secret = base64.StdEncoding.EncodeToString(key)
e.Tokens.Secret = secret
err = e.Store()
if err != nil {
return err
}
log.Println("Stored new tokens.secret")
store = true
}
// check if openrouter token is set
@@ -120,10 +116,33 @@ func (e *Environment) Init() error {
// create user lookup map
e.Authentication.lookup = make(map[string]*EnvUser)
for _, user := range e.Authentication.Users {
for i, user := range e.Authentication.Users {
if user.ID == "" {
log.Warnf("User %q has no id, generating new\n", user.Username)
id, err := CreateSecret(16)
if err != nil {
return err
}
user.ID = id
e.Authentication.Users[i] = user
store = true
}
e.Authentication.lookup[user.Username] = user
}
if store {
if err := e.Store(); err != nil {
return err
}
log.Println("Updated config.yml")
}
return nil
}
@@ -160,3 +179,14 @@ func (e *Environment) Store() error {
return os.WriteFile("config.yml", body, 0644)
}
func CreateSecret(length int) (string, error) {
key := make([]byte, length)
_, err := io.ReadFull(rand.Reader, key)
if err != nil {
return "", err
}
return hex.EncodeToString(key), nil
}