type HeaderData struct {
SelectedMenu string
- Username string
+ User User
}
-func renderHeader(w http.ResponseWriter, selectedMenu string) {
+func renderHeader(w http.ResponseWriter, selectedMenu string, user User) {
tmpl := template.Must(template.ParseFS(content, "templates/header.html"))
data := HeaderData{
SelectedMenu: selectedMenu,
- Username: "username",
+ User: user,
}
err := tmpl.Execute(w, data)
if err != nil {
}
func homePage(w http.ResponseWriter, r *http.Request, user User) {
- renderHeader(w, "status")
+ renderHeader(w, "status", user)
tmpl := template.Must(template.ParseFS(content, "templates/index.html"))
data := HomeData{
LoggedIn: true,
data := LogInData{
Error: errText,
}
- renderHeader(w, "")
+ renderHeader(w, "", User{})
tmpl := template.Must(template.ParseFS(content, "templates/login.html"))
tmpl.Execute(w, data)
renderFooter(w)
return
}
if path[2] == "new" {
- editPlaylistPage(w, r, 0)
+ editPlaylistPage(w, r, 0, user)
} else if path[2] == "submit" && r.Method == "POST" {
submitPlaylist(w, r)
} else if path[2] == "delete" && r.Method == "POST" {
deletePlaylist(w, r)
} else if path[2] == "" {
- playlistsPage(w, r)
+ playlistsPage(w, r, user)
} else {
id, err := strconv.Atoi(path[2])
if err != nil {
http.NotFound(w, r)
return
}
- editPlaylistPage(w, r, id)
+ editPlaylistPage(w, r, id, user)
}
}
} else if path[2] == "delete" && r.Method == "POST" {
deleteFile(w, r)
} else if path[2] == "" {
- filesPage(w, r)
+ filesPage(w, r, user)
} else {
http.NotFound(w, r)
return
return
}
if path[2] == "new" {
- editRadioPage(w, r, 0)
+ editRadioPage(w, r, 0, user)
} else if path[2] == "submit" && r.Method == "POST" {
submitRadio(w, r)
} else if path[2] == "delete" && r.Method == "POST" {
deleteRadio(w, r)
} else if path[2] == "" {
- radiosPage(w, r)
+ radiosPage(w, r, user)
} else {
id, err := strconv.Atoi(path[2])
if err != nil {
http.NotFound(w, r)
return
}
- editRadioPage(w, r, id)
+ editRadioPage(w, r, id, user)
}
}
return
}
if path[2] == "new" {
- editUserPage(w, r, 0)
+ editUserPage(w, r, 0, user)
} else if path[2] == "submit" && r.Method == "POST" {
submitUser(w, r)
} else if path[2] == "delete" && r.Method == "POST" {
} else if path[2] == "reset-password" && r.Method == "POST" {
resetUserPassword(w, r)
} else if path[2] == "" {
- usersPage(w, r)
+ usersPage(w, r, user)
} else {
id, err := strconv.Atoi(path[2])
if err != nil {
http.NotFound(w, r)
return
}
- editUserPage(w, r, id)
+ editUserPage(w, r, id, user)
}
}
User User
}
-func editUserPage(w http.ResponseWriter, r *http.Request, id int) {
+func editUserPage(w http.ResponseWriter, r *http.Request, id int, user User) {
var data EditUserPageData
if id != 0 {
user, err := db.GetUserById(id)
}
data.User = user
}
- renderHeader(w, "users")
+ renderHeader(w, "users", user)
tmpl := template.Must(template.ParseFS(content, "templates/user.html"))
tmpl.Execute(w, data)
renderFooter(w)
data.ShowForm = false
cookie, err := r.Cookie("broadcast_session")
if err == nil {
- log.Println("clearing other sessions for username", user.Username, "token", cookie.Value)
+ log.Println("Clearing other sessions for username", user.Username, "token", cookie.Value)
db.ClearOtherSessions(user.Username, cookie.Value)
}
}
data.Message = ""
data.ShowForm = true
}
- renderHeader(w, "change-password")
+ renderHeader(w, "change-password", user)
tmpl := template.Must(template.ParseFS(content, "templates/change_password.html"))
err := tmpl.Execute(w, data)
if err != nil {
Users []User
}
-func usersPage(w http.ResponseWriter, _ *http.Request) {
- renderHeader(w, "users")
+func usersPage(w http.ResponseWriter, _ *http.Request, user User) {
+ renderHeader(w, "users", user)
data := UsersPageData{
Users: db.GetUsers(),
}
Playlists []Playlist
}
-func playlistsPage(w http.ResponseWriter, _ *http.Request) {
- renderHeader(w, "playlists")
+func playlistsPage(w http.ResponseWriter, _ *http.Request, user User) {
+ renderHeader(w, "playlists", user)
data := PlaylistsPageData{
Playlists: db.GetPlaylists(),
}
Radios []Radio
}
-func radiosPage(w http.ResponseWriter, _ *http.Request) {
- renderHeader(w, "radios")
+func radiosPage(w http.ResponseWriter, _ *http.Request, user User) {
+ renderHeader(w, "radios", user)
data := RadiosPageData{
Radios: db.GetRadios(),
}
Files []string
}
-func editPlaylistPage(w http.ResponseWriter, r *http.Request, id int) {
+func editPlaylistPage(w http.ResponseWriter, r *http.Request, id int, user User) {
var data EditPlaylistPageData
for _, f := range files.Files() {
data.Files = append(data.Files, f.Name)
data.Playlist = playlist
data.Entries = db.GetEntriesForPlaylist(id)
}
- renderHeader(w, "radios")
+ renderHeader(w, "radios", user)
tmpl := template.Must(template.ParseFS(content, "templates/playlist.html"))
tmpl.Execute(w, data)
renderFooter(w)
Radio Radio
}
-func editRadioPage(w http.ResponseWriter, r *http.Request, id int) {
+func editRadioPage(w http.ResponseWriter, r *http.Request, id int, user User) {
var data EditRadioPageData
if id == 0 {
data.Radio.Name = "New Radio"
}
data.Radio = radio
}
- renderHeader(w, "radios")
+ renderHeader(w, "radios", user)
tmpl := template.Must(template.ParseFS(content, "templates/radio.html"))
tmpl.Execute(w, data)
renderFooter(w)
Files []FileSpec
}
-func filesPage(w http.ResponseWriter, _ *http.Request) {
- renderHeader(w, "files")
+func filesPage(w http.ResponseWriter, _ *http.Request, user User) {
+ renderHeader(w, "files", user)
data := FilesPageData{
Files: files.Files(),
}
- log.Println("file page data", data)
tmpl := template.Must(template.ParseFS(content, "templates/files.html"))
err := tmpl.Execute(w, data)
if err != nil {
f, _ := os.Create(path)
defer f.Close()
io.Copy(f, file)
- log.Println("uploaded file to", path)
+ log.Println("Uploaded file to", path)
files.Refresh()
}
http.Redirect(w, r, "/files/", http.StatusFound)
}
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, "")
+ renderHeader(w, "", user)
tmpl := template.Must(template.ParseFS(content, "templates/logout.html"))
tmpl.Execute(w, nil)
renderFooter(w)