29 lines
622 B
Go
29 lines
622 B
Go
package middleware
|
|
|
|
import (
|
|
"github.com/gofiber/fiber/v3"
|
|
"github.com/gofiber/fiber/v3/middleware/session"
|
|
"lmika.dev/lmika/weiro/models"
|
|
"lmika.dev/lmika/weiro/services/auth"
|
|
)
|
|
|
|
func AuthUser(auth *auth.Service) func(c fiber.Ctx) error {
|
|
return func(c fiber.Ctx) error {
|
|
sess := session.FromContext(c)
|
|
userID, _ := sess.Get("user_id").(int64)
|
|
if userID == 0 {
|
|
return c.Redirect().To("/login")
|
|
}
|
|
|
|
user, err := auth.GetUser(c.Context(), userID)
|
|
if err != nil {
|
|
return c.Redirect().To("/login")
|
|
}
|
|
|
|
c.Locals("user", user)
|
|
c.SetContext(models.WithUser(c.Context(), user))
|
|
|
|
return c.Next()
|
|
}
|
|
}
|