Added auth
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package web
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type LoginPageData struct {
|
||||
PageDataBase
|
||||
|
||||
ErrorMessage string
|
||||
}
|
||||
|
||||
func (ws *WebServer) LoginHandler(w http.ResponseWriter, r *http.Request) {
|
||||
loginData := LoginPageData{}
|
||||
|
||||
if r.Method == http.MethodPost {
|
||||
if err := r.ParseForm(); err != nil {
|
||||
loginData.ErrorMessage = "Failed to parse form data"
|
||||
} else {
|
||||
password := r.FormValue("password")
|
||||
if password != ws.adminPassword || ws.adminPassword == "" {
|
||||
loginData.ErrorMessage = "Invalid password"
|
||||
} else {
|
||||
sessionID := generateSessionID()
|
||||
if sessionID == "" {
|
||||
loginData.ErrorMessage = "Failed to generate session ID"
|
||||
}
|
||||
|
||||
ws.sessions[sessionID] = "admin"
|
||||
http.SetCookie(w, &http.Cookie{
|
||||
Name: "session_id",
|
||||
Value: sessionID,
|
||||
Path: "/",
|
||||
HttpOnly: true,
|
||||
})
|
||||
http.Redirect(w, r, "/", http.StatusSeeOther)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ws.renderTemplate(w, r, "templates/login.html", &loginData)
|
||||
}
|
||||
Reference in New Issue
Block a user