Add HTTP Server #6
@@ -1,5 +1,9 @@
|
|||||||
package database
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"maps"
|
||||||
|
)
|
||||||
|
|
||||||
const TOKENTABLECREATE string = `
|
const TOKENTABLECREATE string = `
|
||||||
CREATE TABLE IF NOT EXISTS tokens (
|
CREATE TABLE IF NOT EXISTS tokens (
|
||||||
name varchar(32) PRIMARY KEY NOT NULL,
|
name varchar(32) PRIMARY KEY NOT NULL,
|
||||||
@@ -8,7 +12,9 @@ const TOKENTABLECREATE string = `
|
|||||||
|
|
||||||
const INSERTTOKENSQL string = "INSERT INTO tokens VALUES (?, ?);"
|
const INSERTTOKENSQL string = "INSERT INTO tokens VALUES (?, ?);"
|
||||||
const DELETETOKENSQL string = "DELETE FROM tokens WHERE name = ?;"
|
const DELETETOKENSQL string = "DELETE FROM tokens WHERE name = ?;"
|
||||||
const QUERYTOKENSQL string = "SELECT token FROM tokens;"
|
const QUERYTOKENSQL string = "SELECT * FROM tokens;"
|
||||||
|
|
||||||
|
var tokenCache map[string]string = make(map[string]string)
|
||||||
|
|
||||||
func InsertToken(name string, token string) error {
|
func InsertToken(name string, token string) error {
|
||||||
_, err := database.Exec(INSERTTOKENSQL, name, token)
|
_, err := database.Exec(INSERTTOKENSQL, name, token)
|
||||||
@@ -20,6 +26,15 @@ func DeleteToken(name string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ValidateTokenCache(token string) (bool, error) {
|
||||||
|
for v := range maps.Values(tokenCache) {
|
||||||
|
if token == v {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ValidateToken(token)
|
||||||
|
}
|
||||||
|
|
||||||
func ValidateToken(token string) (bool, error) {
|
func ValidateToken(token string) (bool, error) {
|
||||||
result, err := database.Query(QUERYTOKENSQL)
|
result, err := database.Query(QUERYTOKENSQL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -27,12 +42,14 @@ func ValidateToken(token string) (bool, error) {
|
|||||||
}
|
}
|
||||||
defer result.Close()
|
defer result.Close()
|
||||||
|
|
||||||
var foundToken string
|
var name, foundToken string
|
||||||
for result.Next() {
|
for result.Next() {
|
||||||
result.Scan(&token)
|
result.Scan(&name, &foundToken)
|
||||||
|
tokenCache[name] = foundToken
|
||||||
if token == foundToken {
|
if token == foundToken {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false, nil
|
err = result.Err()
|
||||||
|
return false, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user