Persistent sessions are working now

This commit is contained in:
Eduard Urbach 2017-06-08 23:26:58 +02:00
parent 5a6fcac34c
commit 36137f208f
2 changed files with 19 additions and 2 deletions

View File

@ -51,7 +51,9 @@ func EnableGoogleLogin(app *aero.Application) {
// Auth Callback
app.Get("/auth/google/callback", func(ctx *aero.Context) string {
if ctx.Session().ID() != ctx.Query("state") {
session := ctx.Session()
if session.ID() != ctx.Query("state") {
return ctx.Error(http.StatusUnauthorized, "Authorization not allowed for this session", errors.New("Google login failed: Incorrect state"))
}
@ -88,7 +90,7 @@ func EnableGoogleLogin(app *aero.Application) {
return ctx.Error(http.StatusForbidden, "Email not registered", err)
}
ctx.Session().Set("userId", user.ID)
session.Set("userId", user.ID)
return ctx.Redirect("/")
})

15
main.go
View File

@ -2,6 +2,7 @@ package main
import (
"github.com/aerogo/aero"
"github.com/animenotifier/arn"
"github.com/animenotifier/notify.moe/components"
"github.com/animenotifier/notify.moe/pages/airing"
"github.com/animenotifier/notify.moe/pages/anime"
@ -35,6 +36,20 @@ func main() {
// HTTPS
app.Security.Load("security/fullchain.pem", "security/privkey.pem")
// Session store
app.Sessions.Store = arn.NewAerospikeStore("Session")
// Session middleware
app.Use(func(ctx *aero.Context, next func()) {
// Handle the request first
next()
// Update session if it has been modified
if ctx.HasSession() && ctx.Session().Modified() {
app.Sessions.Store.Set(ctx.Session().ID(), ctx.Session())
}
})
// Layout
app.Layout = func(ctx *aero.Context, content string) string {
return components.Layout(content)