cake-order-tracker/internal/auth/token.go

40 lines
842 B
Go

package auth
import (
"crypto/rand"
"encoding/base64"
"log"
"net/http"
"time"
"github.com/Bronku/iroon/internal/models"
)
func (a *Authenticator) newSession(user string) (http.Cookie, error) {
key := generateKey()
var session models.Token
var cookie http.Cookie
session.User = user
session.Expiration = time.Now().Add(time.Hour * 24)
a.sessions[key] = session
err := a.s.AddSession(key, user, session.Expiration)
if err != nil {
return cookie, err
}
cookie.Name = "token"
cookie.Value = key
cookie.HttpOnly = true
cookie.SameSite = http.SameSiteStrictMode
cookie.Path = "/"
//cookie.Secure = true
return cookie, nil
}
func generateKey() string {
key := [32]byte{}
if _, err := rand.Read(key[:]); err != nil {
log.Fatal("can't generate a vaild key", err)
}
return base64.StdEncoding.EncodeToString(key[:])
}