From ef979cf541bec0c601ec11e733571d3d8ff2927d Mon Sep 17 00:00:00 2001 From: corebreaker Date: Tue, 1 Aug 2017 08:34:18 +0300 Subject: [PATCH] Little change of session API + Update examples Former-commit-id: e8c58b186acf1c8932af6e886dae7035f4d581c1 --- _examples/sessions/database/main.go | 5 +++++ _examples/sessions/securecookie/main.go | 8 +++++++- _examples/sessions/standalone/main.go | 5 +++++ sessions/sessions.go | 15 ++++++++++----- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/_examples/sessions/database/main.go b/_examples/sessions/database/main.go index 831d89e8..c2a82682 100644 --- a/_examples/sessions/database/main.go +++ b/_examples/sessions/database/main.go @@ -65,5 +65,10 @@ func main() { sess.Destroy(ctx) }) + app.Get("/update", func(ctx context.Context) { + // updates expire date with a new date + sess.ShiftExpiraton(ctx) + }) + app.Run(iris.Addr(":8080")) } diff --git a/_examples/sessions/securecookie/main.go b/_examples/sessions/securecookie/main.go index 76197798..f068ec57 100644 --- a/_examples/sessions/securecookie/main.go +++ b/_examples/sessions/securecookie/main.go @@ -62,10 +62,16 @@ func newApp() *iris.Application { mySessions.Start(ctx).Clear() }) + app.Get("/update", func(ctx context.Context) { + // updates expire date with a new date + mySessions.ShiftExpiraton(ctx) + }) + app.Get("/destroy", func(ctx context.Context) { //destroy, removes the entire session data and cookie mySessions.Destroy(ctx) - }) // Note about destroy: + }) + // Note about destroy: // // You can destroy a session outside of a handler too, using the: // mySessions.DestroyByID diff --git a/_examples/sessions/standalone/main.go b/_examples/sessions/standalone/main.go index b26ebf73..12d61e1f 100644 --- a/_examples/sessions/standalone/main.go +++ b/_examples/sessions/standalone/main.go @@ -69,6 +69,11 @@ func main() { sess.Start(ctx).Clear() }) + app.Get("/update", func(ctx context.Context) { + // updates expire date + sess.ShiftExpiraton(ctx) + }) + app.Get("/destroy", func(ctx context.Context) { //destroy, removes the entire session data and cookie diff --git a/sessions/sessions.go b/sessions/sessions.go index cf48605c..43054b7b 100644 --- a/sessions/sessions.go +++ b/sessions/sessions.go @@ -119,14 +119,19 @@ func (s *Sessions) Start(ctx context.Context) *Session { } // ShiftExpiraton move the expire date of a session to a new date by using session default timeout configuration -func (s *Sessions) ShiftExpiraton(ctx context.Context, sid string) { - s.UpdateExpiraton(ctx, sid, s.config.Expires) +func (s *Sessions) ShiftExpiraton(ctx context.Context) { + s.UpdateExpiraton(ctx, s.config.Expires) } // UpdateExpiraton change expire date of a session to a new date by using timeout value passed by `expires` parameter -func (s *Sessions) UpdateExpiraton(ctx context.Context, sid string, expires time.Duration) { - if s.provider.UpdateExpiraton(sid, expires) { - s.updateCookie(sid, ctx, expires) +func (s *Sessions) UpdateExpiraton(ctx context.Context, expires time.Duration) { + cookieValue := GetCookie(ctx, s.config.Cookie) + + if cookieValue != "" { + sid := s.decodeCookieValue(cookieValue) + if s.provider.UpdateExpiraton(sid, expires) { + s.updateCookie(sid, ctx, expires) + } } }