fix integration, test more stuff

This commit is contained in:
41666 2025-03-26 23:10:30 -07:00
parent c50bfc1a7f
commit 7b8cdcfd7b
11 changed files with 147 additions and 51 deletions

View file

@ -21,6 +21,16 @@ type AuthMiddleware struct {
superuserIDs []string
}
func New(discordClient discord.IDiscordClient, supportIDs []string, superuserIDs []string) func(fiber.Ctx) error {
am := AuthMiddleware{
Client: discordClient,
supportIDs: supportIDs,
superuserIDs: superuserIDs,
}
return am.Handle
}
func (am *AuthMiddleware) Handle(c fiber.Ctx) error {
sc := session.FromContext(c)
sess := am.Init(sc)
@ -52,16 +62,6 @@ func (am *AuthMiddleware) Commit(sc *session.Middleware, sess *Session) {
sc.Set(SessionKey, sess.AsJSON())
}
func SessionFrom(c fiber.Ctx) (s *Session) {
sess := session.FromContext(c)
sessionJSON := sess.Get(SessionKey).([]byte)
s, err := SessionFromJSON(sessionJSON)
if err != nil {
log.Panicln("session failed to parse", err)
}
return s
}
func (am *AuthMiddleware) isSupport(userID string) bool {
return slices.Contains(am.supportIDs, userID)
}

View file

@ -4,10 +4,15 @@ import (
"log"
"time"
"git.sapphic.engineer/roleypoly/v4/discord"
"git.sapphic.engineer/roleypoly/v4/types"
"github.com/goccy/go-json"
"github.com/gofiber/fiber/v3"
"github.com/gofiber/fiber/v3/middleware/session"
)
var (
SessionKey uint8
DefaultSession *Session = &Session{Permissions: PermAnonymous}
)
type Session struct {
@ -32,16 +37,12 @@ func SessionFromJSON(input []byte) (*Session, error) {
return &s, err
}
var SessionKey uint8
func New(discordClient discord.IDiscordClient, supportIDs []string, superuserIDs []string) func(fiber.Ctx) error {
am := AuthMiddleware{
Client: discordClient,
supportIDs: supportIDs,
superuserIDs: superuserIDs,
func SessionFrom(c fiber.Ctx) (s *Session) {
sess := session.FromContext(c)
sessionJSON := sess.Get(SessionKey).([]byte)
s, err := SessionFromJSON(sessionJSON)
if err != nil {
log.Panicln("session failed to parse", err)
}
return am.Handle
return s
}
var DefaultSession *Session = &Session{Permissions: PermAnonymous}

View file

@ -9,6 +9,7 @@ import (
"git.sapphic.engineer/roleypoly/v4/authmiddleware"
"git.sapphic.engineer/roleypoly/v4/discord"
"git.sapphic.engineer/roleypoly/v4/discord/clientmock"
"git.sapphic.engineer/roleypoly/v4/roleypoly"
"git.sapphic.engineer/roleypoly/v4/types"
"github.com/goccy/go-json"
"github.com/gofiber/fiber/v3"
@ -102,7 +103,7 @@ func ok(c fiber.Ctx) error {
}
func getApp(dc discord.IDiscordClient) *fiber.App {
app := fiber.New(fiber.Config{})
app := roleypoly.CreateFiberApp()
sessionMiddleware, sessionStore := session.NewWithStore()
sessionStore.RegisterType(authmiddleware.Session{})