login.go

 1// SPDX-FileCopyrightText: 2022 Amolith <amolith@secluded.site>
 2//
 3// SPDX-License-Identifier: BSD-2-Clause
 4
 5package main
 6
 7import (
 8	"io"
 9	"net/http"
10	"time"
11)
12
13func (m model) login(writer http.ResponseWriter, request *http.Request) {
14	if request.URL.Query().Get("access_token") == m.AccessToken {
15		expiration := time.Now().Add(365 * 24 * time.Hour)
16		cookie := http.Cookie{Name: "access_token", Value: m.AccessToken, Expires: expiration}
17		http.SetCookie(writer, &cookie)
18		http.Redirect(writer, request, "/", 302)
19	} else {
20		login, err := templates.ReadFile("templates/login.html")
21		if err != nil {
22			http.Error(writer, "500 Internal Server Error: "+err.Error(), 500)
23		}
24		io.WriteString(writer, string(login))
25	}
26}