2021-12-10 17:48:24 +00:00
|
|
|
package handler
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"errors"
|
|
|
|
|
"fmt"
|
|
|
|
|
"net/http"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func (h *Handler) showAdminView(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
protectClickJacking(w)
|
|
|
|
|
username, err := h.getUser(r)
|
|
|
|
|
if err != nil {
|
2021-12-10 17:56:41 +00:00
|
|
|
unauthorized(w, r)
|
2021-12-10 17:48:24 +00:00
|
|
|
return
|
|
|
|
|
}
|
2025-11-20 00:12:26 +00:00
|
|
|
if username != "aggie" {
|
2021-12-10 17:56:41 +00:00
|
|
|
unauthorized(w, r)
|
2021-12-10 17:48:24 +00:00
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
users, err := h.storage.InactiveUsers()
|
|
|
|
|
if err != nil {
|
|
|
|
|
serverError(w, err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
h.renderLayout(w, "admin", map[string]interface{}{
|
|
|
|
|
"inactive": users,
|
|
|
|
|
}, username)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (h *Handler) activateUser(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
protectClickJacking(w)
|
|
|
|
|
username, err := h.getUser(r)
|
|
|
|
|
if err != nil {
|
2021-12-10 17:56:41 +00:00
|
|
|
unauthorized(w, r)
|
2021-12-10 17:48:24 +00:00
|
|
|
return
|
|
|
|
|
}
|
2025-11-20 00:12:26 +00:00
|
|
|
if username != "aggie" {
|
2021-12-10 17:56:41 +00:00
|
|
|
unauthorized(w, r)
|
2021-12-10 17:48:24 +00:00
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
name := r.URL.Query().Get("name")
|
|
|
|
|
if err := h.storage.ActivateUser(name); err != nil {
|
|
|
|
|
serverError(w, err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
http.Redirect(w, r, fmt.Sprintf("/admin"), http.StatusFound)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (h *Handler) deleteUser(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
protectClickJacking(w)
|
|
|
|
|
username, err := h.getUser(r)
|
|
|
|
|
if err != nil {
|
2021-12-10 17:56:41 +00:00
|
|
|
unauthorized(w, r)
|
2021-12-10 17:48:24 +00:00
|
|
|
return
|
|
|
|
|
}
|
2025-11-20 00:12:26 +00:00
|
|
|
if username != "aggie" {
|
2021-12-10 17:56:41 +00:00
|
|
|
unauthorized(w, r)
|
2021-12-10 17:48:24 +00:00
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
name := r.URL.Query().Get("name")
|
|
|
|
|
user, err := h.storage.UserByName(name)
|
|
|
|
|
if err != nil {
|
|
|
|
|
serverError(w, err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if user.Active {
|
|
|
|
|
serverError(w, errors.New("user is active"))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if err := h.storage.DeleteUser(name); err != nil {
|
|
|
|
|
serverError(w, err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
http.Redirect(w, r, fmt.Sprintf("/admin"), http.StatusFound)
|
|
|
|
|
}
|