From a5cec40d65b11910108a2a205035a7274d2f64eb Mon Sep 17 00:00:00 2001 From: Amolith Date: Mon, 24 Jan 2022 05:22:59 -0500 Subject: [PATCH] Add authentication --- login.go | 18 +++++++++++++++++- root.go | 18 +++++++++++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/login.go b/login.go index 9022a13d6ffc375eb34314469e026792a0e1e410..38c13c7f166990851ed96996d6064efec6fcd914 100644 --- a/login.go +++ b/login.go @@ -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)) + } } diff --git a/root.go b/root.go index 025b6ea08cd49cb0f056e86d09235e01fa650347..2eab5a16d57267a8dab5e0cd597d04a61f06b16e 100644 --- a/root.go +++ b/root.go @@ -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)) }