Heavily improved sessions

This commit is contained in:
Eduard Urbach 2017-06-17 22:19:26 +02:00
parent 340f4d1f9c
commit 15e2717ea8
5 changed files with 18 additions and 6 deletions

View File

@ -9,7 +9,10 @@ func Install(app *aero.Application) {
// Logout // Logout
app.Get("/logout", func(ctx *aero.Context) string { app.Get("/logout", func(ctx *aero.Context) string {
ctx.Session().Set("userId", nil) if ctx.HasSession() {
ctx.Session().Set("userId", nil)
}
return ctx.Redirect("/") return ctx.Redirect("/")
}) })
} }

View File

@ -50,6 +50,10 @@ func InstallGoogleAuth(app *aero.Application) {
// Auth Callback // Auth Callback
app.Get("/auth/google/callback", func(ctx *aero.Context) string { app.Get("/auth/google/callback", func(ctx *aero.Context) string {
if !ctx.HasSession() {
return ctx.Error(http.StatusUnauthorized, "Session does not exist", errors.New("Google login failed: Session does not exist"))
}
session := ctx.Session() session := ctx.Session()
if session.ID() != ctx.Query("state") { if session.ID() != ctx.Query("state") {

View File

@ -31,8 +31,9 @@ func main() {
// CSS // CSS
app.SetStyle(components.CSS()) app.SetStyle(components.CSS())
// Session store // Sessions
app.Sessions.Store = arn.NewAerospikeStore("Session") app.Sessions.Duration = 3600 * 24
app.Sessions.Store = arn.NewAerospikeStore("Session", app.Sessions.Duration)
// Layout // Layout
app.Layout = layout.Render app.Layout = layout.Render

View File

@ -6,6 +6,6 @@ component FrontPage
p p
a(href="https://github.com/animenotifier/notify.moe", target="_blank", rel="noopener") Source on GitHub a(href="https://github.com/animenotifier/notify.moe", target="_blank", rel="noopener") Source on GitHub
//- .login-buttons .login-buttons
//- a.login-button(href="/auth/google") a.login-button(href="/auth/google")
//- img.login-button-image(src="/images/login/google", alt="Google Login", title="Login with your Google account") img.login-button-image(src="/images/login/google", alt="Google Login", title="Login with your Google account")

View File

@ -7,6 +7,10 @@ import (
// GetUser ... // GetUser ...
func GetUser(ctx *aero.Context) *arn.User { func GetUser(ctx *aero.Context) *arn.User {
if !ctx.HasSession() {
return nil
}
userID := ctx.Session().GetString("userId") userID := ctx.Session().GetString("userId")
if userID == "" { if userID == "" {