Change summary
login.go | 18 +++++++++++++++++-
root.go | 18 +++++++++++++++---
2 files changed, 32 insertions(+), 4 deletions(-)
Detailed changes
@@ -1,6 +1,22 @@
package main
-import "net/http"
+import (
+ "io"
+ "net/http"
+ "time"
+)
func (m model) login(writer http.ResponseWriter, request *http.Request) {
+ if request.URL.Query().Get("access_token") == m.AccessToken {
+ expiration := time.Now().Add(365 * 24 * time.Hour)
+ cookie := http.Cookie{Name: "access_token", Value: m.AccessToken, Expires: expiration}
+ http.SetCookie(writer, &cookie)
+ http.Redirect(writer, request, "/", 301)
+ } else {
+ login, err := templates.ReadFile("templates/login.html")
+ if err != nil {
+ http.Error(writer, "500 Internal Server Error: "+err.Error(), 500)
+ }
+ io.WriteString(writer, string(login))
+ }
}
@@ -7,9 +7,21 @@ import (
)
func (m model) root(writer http.ResponseWriter, request *http.Request) {
- home, err := templates.ReadFile("templates/home_unauthenticated.html")
+ cookie, err := request.Cookie("access_token")
if err != nil {
- log.Fatalln(err)
+ home, err := templates.ReadFile("templates/home_unauthenticated.html")
+ if err != nil {
+ log.Fatalln(err)
+ }
+ io.WriteString(writer, string(home))
+ return
+ }
+
+ if cookie.Value == m.AccessToken {
+ dash, err := templates.ReadFile("templates/home_authenticated.html")
+ if err != nil {
+ log.Fatalln(err)
+ }
+ io.WriteString(writer, string(dash))
}
- io.WriteString(writer, string(home))
}