package login_form import ( "git.ddd.rip/ptrcnull/modweb" "git.ddd.rip/ptrcnull/modweb/static" "github.com/gofiber/fiber/v2" ) type Module struct { Handler func(user string, pass string) *modweb.User } func (m Module) LoginURL() string { return "/login/" } func (m Module) RegisterURL() string { return "" } func (m Module) FriendlyName() string { return "Login form" } func (m Module) Name() string { return "login" } func (m *Module) Init(mm *modweb.ModuleManager) { mm.RegisterViews(static.HTTP) app := mm.Fiber() app.Get("/", func(ctx *fiber.Ctx) error { if mm.User(ctx) != nil { return ctx.Redirect("/") } return mm.Render(ctx, "partials/login-form", fiber.Map{}) }) app.Post("/", func(ctx *fiber.Ctx) error { session := mm.Session(ctx) defer session.Save() if mm.User(ctx) != nil { return ctx.Redirect("/") } var data struct { Username string Password string } err := ctx.BodyParser(&data) if err != nil { return err } user := m.Handler(data.Username, data.Password) if user != nil { user.Save(session) } return ctx.Redirect("/") }) } func (m Module) Hidden() bool { return true } func (m Module) MinAccessLevel() int64 { return -1 }