set cookie on login

This commit is contained in:
leah 2022-01-29 15:21:16 +00:00
parent 725ef46e45
commit d80ee751fe
3 changed files with 15 additions and 8 deletions

1
go.mod
View File

@ -10,6 +10,7 @@ require (
require github.com/mattn/go-sqlite3 v1.14.11 // indirect
require (
github.com/google/uuid v1.3.0
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.4 // indirect
gorm.io/driver/sqlite v1.2.6

2
go.sum
View File

@ -1,6 +1,8 @@
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.2/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=

20
main.go
View File

@ -10,7 +10,9 @@ import (
"regexp"
"strings"
"text/template"
"time"
"github.com/google/uuid"
"gopkg.in/yaml.v3"
)
@ -144,8 +146,8 @@ func handler(w http.ResponseWriter, r *http.Request) {
var tmpl string
validpath := regexp.MustCompile(`^/(signup|login|hello)$`)
m := validpath.FindStringSubmatch(path)
anonPath := regexp.MustCompile(`^/(signup|login|hello)$`)
m := anonPath.FindStringSubmatch(path)
if m != nil {
userid, err := r.Cookie("user-id")
@ -181,12 +183,14 @@ func handler(w http.ResponseWriter, r *http.Request) {
func loginHandler(w http.ResponseWriter, r *http.Request) {
userid, err := r.Cookie("user-id")
fmt.Print(userid, err)
// if err != nil {
// useridbody := uuid.New()
// expiration := time.Now().Add(365 * 24 * time.Hour)
// cookie := http.Cookie{Name: "user-id", Value: useridbody.String(), Expires: expiration}
// http.SetCookie(w, &cookie)
// }
if errors.As(err, &http.ErrNoCookie) {
useridbody := uuid.New()
expiration := time.Now().Add(365 * 24 * time.Hour)
cookie := http.Cookie{Name: "user-id", Value: useridbody.String(), Expires: expiration}
http.SetCookie(w, &cookie)
// todo: store in db
}
switch strings.TrimRight(r.URL.Path, "/") {
case "/login":