CREATE TABLE IF NOT EXISTS playlist_entries (id INTEGER PRIMARY KEY AUTOINCREMENT, playlist_id INTEGER, position INTEGER, filename TEXT, delay_seconds INTEGER, is_relative INTEGER, CONSTRAINT fk_playlists FOREIGN KEY (playlist_id) REFERENCES playlists(id) ON DELETE CASCADE);
CREATE TABLE IF NOT EXISTS radios (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, token TEXT);
CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE, password_hash TEXT, is_admin INTEGER);
+
+ DELETE FROM sessions WHERE expiry < CURRENT_TIMESTAMP;
`
_, err = db.sqldb.Exec(sqlStmt)
if err != nil {
d.sqldb.Exec("DELETE FROM sessions WHERE username = ? AND token != ?", username, token)
}
+func (d *Database) ClearSession(username string, token string) {
+ d.sqldb.Exec("DELETE FROM sessions WHERE username = ? AND token = ?", username, token)
+}
+
func (d *Database) SetUserIsAdmin(username string, isAdmin bool) {
d.sqldb.Exec("UPDATE users SET is_admin = ? WHERE username = ?", isAdmin, username)
}
}
func logOutPage(w http.ResponseWriter, r *http.Request, user User) {
+ cookie, err := r.Cookie("broadcast_session")
+ if err == nil {
+ db.ClearSession(user.Username, cookie.Value)
+ }
clearSessionCookie(w)
renderHeader(w, "", user)
tmpl := template.Must(template.ParseFS(content, "templates/logout.html"))