feat(auth): add database and auth token generation + storage
Some checks failed
build / Go-Build (push) Failing after 19s

This commit is contained in:
2026-01-17 21:40:17 +01:00
parent 093b67864c
commit 98a725caa4
9 changed files with 213 additions and 7 deletions

View File

@@ -0,0 +1,34 @@
package database
import (
"database/sql"
"log"
_ "github.com/glebarez/go-sqlite"
)
const FILENAME string = "storage.db"
var database *sql.DB
func OpenSQLite() error {
db, err := sql.Open("sqlite", FILENAME)
if err != nil {
return err
}
log.Println("Successfully connected to SQLite Database")
database = db
return nil
}
func InitDB() {
_, err := database.Exec(TOKENTABLECREATE)
if err != nil {
log.Fatal("Failed to init database:\n", err)
}
log.Println("Successfully initiated the Database!")
}
func Close() error {
return database.Close()
}

View File

@@ -0,0 +1,38 @@
package database
const TOKENTABLECREATE string = `
CREATE TABLE IF NOT EXISTS tokens (
name varchar(32) PRIMARY KEY NOT NULL,
token varchar(32) NOT NULL
);`
const INSERTTOKENSQL string = "INSERT INTO tokens VALUES (?, ?);"
const DELETETOKENSQL string = "DELETE FROM tokens WHERE name = ?;"
const QUERYTOKENSQL string = "SELECT token FROM tokens;"
func InsertToken(name string, token string) error {
_, err := database.Exec(INSERTTOKENSQL, name, token)
return err
}
func DeleteToken(name string) error {
_, err := database.Exec(DELETETOKENSQL, name)
return err
}
func ValidateToken(token string) (bool, error) {
result, err := database.Query(QUERYTOKENSQL)
if err != nil {
return false, err
}
defer result.Close()
var foundToken string
for result.Next() {
result.Scan(&token)
if token == foundToken {
return true, nil
}
}
return false, nil
}

View File

@@ -0,0 +1,34 @@
package svgtemplater
import (
"flag"
"log"
"tomatentum.net/svg-templater/pkg/auth"
)
func GenerateTokenCommand() {
name := flag.Arg(0)
if name == "" {
log.Fatal("No Token Name was provided!")
}
token, err := auth.CreateToken(name)
if err != nil {
log.Fatal("Failed to generate token:\n", err)
}
log.Println(token)
}
func DeleteTokenCommand() {
name := flag.Arg(0)
if name == "" {
log.Fatal("No Token Name was provided!")
}
err := auth.DeleteToken(name)
if err != nil {
log.Fatal("Failed to delete token:\n", err)
}
log.Println("Deleted token " + name)
}