Goit

Simple and lightweight Git web server
git clone https://git.omkov.net/Goit
git clone git@git.omkov.net:Goit
Log | Tree | Refs | README | Download

AuthorJakob Wakeling <jake@omkov.net>
Date2025-01-18 22:41:09
Commit09af50073069a0bda6836ff09d867e96e453416f
Parent6412f37785022dec163b53dc749742764030fd69

Extend session expiry time to 6 days

Diffstat

M src/goit/auth.go | 9 +++++++--
M src/user/login.go | 2 +-

2 files changed, 8 insertions, 3 deletions

diff --git a/src/goit/auth.go b/src/goit/auth.go
index ceece02..43515cc 100644
--- a/src/goit/auth.go
+++ b/src/goit/auth.go
@@ -26,6 +26,11 @@ type Session struct {
 var Sessions = map[int64][]Session{}
 var SessionsMutex = sync.RWMutex{}
 
+var (
+	SessionDuration = 6 * 24 * time.Hour /* Sessions expire after 6 days. */
+	SessionRenewal  = 1 * 24 * time.Hour /* Sessions renew at most once a day. */
+)
+
 /* Generate a new user session. */
 func NewSession(uid int64, ip string, expiry time.Time) (Session, error) {
 	var b = make([]byte, 24)
@@ -181,10 +186,10 @@ func Auth(w http.ResponseWriter, r *http.Request, renew bool) (bool, *User, erro
 	}
 
 	/* Renew the session if appropriate */
-	if renew && time.Until(s.Expiry) < 24*time.Hour {
+	if renew && time.Until(s.Expiry) < SessionRenewal {
 		ip := Ip(r)
 
-		s1, err := NewSession(uid, ip, time.Now().Add(2*24*time.Hour))
+		s1, err := NewSession(uid, ip, time.Now().Add(SessionDuration))
 		if err != nil {
 			log.Println("[auth/renew]", err.Error())
 		} else {
diff --git a/src/user/login.go b/src/user/login.go
index ba727f3..9c29436 100644
--- a/src/user/login.go
+++ b/src/user/login.go
@@ -63,7 +63,7 @@ func HandleLogin(w http.ResponseWriter, r *http.Request) {
 			goto execute
 		}
 
-		sess, err := goit.NewSession(user.Id, ip, time.Now().Add(2*24*time.Hour))
+		sess, err := goit.NewSession(user.Id, ip, time.Now().Add(goit.SessionDuration))
 		if err != nil {
 			log.Println("[/user/login]", err.Error())
 			goit.HttpError(w, http.StatusInternalServerError)