mirror of
https://github.com/kaaninchen/Laterna.git
synced 2026-09-17 19:12:48 +00:00
authentification groundworks
This commit is contained in:
@@ -8,6 +8,59 @@ import (
|
||||
"github.com/siestaw/laterna/server/cmd/utils"
|
||||
)
|
||||
|
||||
func CreateController(target int) (string, int, error) {
|
||||
token, _ := utils.GenerateToken()
|
||||
hash, _ := utils.HashToken(token)
|
||||
|
||||
var maxID int
|
||||
stmt := DB.QueryRow("SELECT COALESCE(MAX(id), 0) FROM controllers")
|
||||
stmt.Scan(&maxID)
|
||||
id := maxID + 1
|
||||
|
||||
_, err := DB.Exec("INSERT INTO controllers VALUES (?, ?, '#FFFFFF', CURRENT_TIMESTAMP)", id, hash)
|
||||
if err != nil {
|
||||
logger.DBLogger.Printf("Failed to create a new controller: %v", err)
|
||||
return "", id, err
|
||||
}
|
||||
|
||||
_, err = DB.Exec("INSERT INTO permissions VALUES (?, ?) ", id, target)
|
||||
if err != nil {
|
||||
logger.DBLogger.Printf("Failed to set permissions for %d: %v", id, err)
|
||||
return token, id, err
|
||||
}
|
||||
return token, id, nil
|
||||
}
|
||||
|
||||
func CreateAdmin() string {
|
||||
token, _ := utils.GenerateToken()
|
||||
hash, _ := utils.HashToken(token)
|
||||
|
||||
_, err := DB.Exec("INSERT INTO controllers (id, token_hash) VALUES (0, ?)", hash)
|
||||
if err != nil {
|
||||
logger.DBLogger.Fatalf("Error creating admin user: %s", err)
|
||||
}
|
||||
|
||||
return token
|
||||
}
|
||||
|
||||
func ResetAdmin() {
|
||||
_, err := DB.Exec("DELETE FROM controllers WHERE id = 0")
|
||||
if err != nil {
|
||||
logger.DBLogger.Printf("An error occured while resetting the admin account: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
func ControllerExists(id int) bool {
|
||||
row := DB.QueryRow("SELECT COUNT(1) FROM controllers WHERE id = ?", id)
|
||||
|
||||
var count int
|
||||
err := row.Scan(&count)
|
||||
if err != nil {
|
||||
logger.DBLogger.Printf("ControllerExists: %v", err)
|
||||
}
|
||||
return count > 0
|
||||
}
|
||||
|
||||
func ViewColor(id int) (*models.LampState, error) {
|
||||
row := DB.QueryRow("SELECT * FROM lamp_state WHERE id = ?", id)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user