DEVELOPMENT ENVIRONMENT

~liljamo/emerwen-web

ref: cb21a041ada3070c6dca5418e703cfd6af0ae3b8 emerwen-web/internal/middlewares/requiresession.go -rw-r--r-- 616 bytes
cb21a041Jonni Liljamo feat: initial 4 days ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
 * Copyright (C) 2024 Jonni Liljamo <jonni@liljamo.com>
 *
 * This file is licensed under GPL-3.0-or-later, see NOTICE and LICENSE for
 * more information.
 */

package middlewares

import (
	"net/http"

	"github.com/alexedwards/scs/v2"
	"github.com/gin-gonic/gin"
)

// RequireSession returns a gin middleware for requiring a session to be present.
func RequireSession(sm *scs.SessionManager) gin.HandlerFunc {
	return func(c *gin.Context) {
		claims := sm.Get(c.Request.Context(), "claims")
		if claims != nil {
			c.Next()
		} else {
			c.Redirect(http.StatusTemporaryRedirect, "/login")
			c.Abort()
		}
	}
}