/
login-page.go
41 lines (36 loc) · 909 Bytes
/
login-page.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main
import (
"net/http"
)
func loginPage(page *page, req *http.Request) {
page.SetField("redirect", "/")
page.SetField("success", false)
switch req.Method {
case "POST":
page.SetField("redirect", req.FormValue("redirect"))
if req.FormValue("password") != page.main.conf.Password() {
page.AddMessage("Feil passord.")
} else {
err := page.main.auth.NewSession()
if err != nil {
page.Fatalf("Failed to create new session: %s", err.Error())
}
http.SetCookie(page, &http.Cookie{
Name: "session-id",
Value: page.main.auth.SessionID(),
HttpOnly: true,
})
page.AddMessage("Innloggin vellykket.")
page.SetField("success", true)
}
case "GET":
referrer := req.URL.Query().Get("redirect")
if referrer == "" {
referrer = req.Referer()
}
if referrer != "" {
page.SetField("redirect", referrer)
}
}
page.ExecuteTemplate("login")
}