Files
passport/middleware/admin.go
2024-11-11 00:18:02 -06:00

45 lines
936 B
Go

package middleware
import (
"database/sql"
"time"
"github.com/gofiber/fiber/v3"
)
type Session struct {
SessionID string `json:"session_id"`
ExpiresAt string `json:"expires_at"`
}
func AdminMiddleware(db *sql.DB) func(c fiber.Ctx) error {
return func(c fiber.Ctx) error {
sessionToken := c.Cookies("SessionToken")
if sessionToken == "" {
return c.Redirect().To("/admin/login")
}
// Check if session exists
var session Session
err := db.QueryRow(`
SELECT session_id, expires_at
FROM sessions
WHERE session_id = ?
`, sessionToken).Scan(&session.SessionID, &session.ExpiresAt)
if err != nil {
return c.Redirect().To("/admin/login")
}
sessionExpiry, err := time.Parse("2006-01-02 15:04:05-07:00", session.ExpiresAt)
if err != nil {
return c.Redirect().To("/admin/login")
}
if sessionExpiry.Before(time.Now()) {
return c.Redirect().To("/admin/login")
}
return c.Next()
}
}