initial commit
This commit is contained in:
44
middleware/admin.go
Normal file
44
middleware/admin.go
Normal file
@@ -0,0 +1,44 @@
|
||||
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()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user