Create lists model & controllers

This commit is contained in:
William Bouzourène 2024-12-30 14:46:42 +01:00
parent fd49b69799
commit 0159e8d528
4 changed files with 75 additions and 4 deletions

35
controllers/lists.go Normal file
View file

@ -0,0 +1,35 @@
package controllers
import "github.com/gofiber/fiber/v2"
func Lists(c *fiber.Ctx) error {
return c.SendString("Lists")
}
func ListShow(c *fiber.Ctx) error {
return c.SendString("ListShow")
}
func ListAdd(c *fiber.Ctx) error {
return c.SendString("ListAdd")
}
func ListEdit(c *fiber.Ctx) error {
return c.SendString("ListEdit")
}
func ListDelete(c *fiber.Ctx) error {
return c.SendString("ListDelete")
}
func ListItemAdd(c *fiber.Ctx) error {
return c.SendString("ListItemAdd")
}
func ListItemEdit(c *fiber.Ctx) error {
return c.SendString("ListItemEdit")
}
func ListItemDelete(c *fiber.Ctx) error {
return c.SendString("ListItemDelete")
}

22
main.go
View file

@ -93,18 +93,38 @@ func main() {
app.Use(middlewares.TemplatesMiddleware) app.Use(middlewares.TemplatesMiddleware)
app.Use("/admin", middlewares.AuthzAdmin) app.Use("/admin", middlewares.AuthzAdmin)
// Controllers // Homepage
app.Get("/", controllers.Homepage) app.Get("/", controllers.Homepage)
// Login & logout
app.Get("/login", controllers.LoginForm) app.Get("/login", controllers.LoginForm)
app.Post("/login", controllers.LoginForm) app.Post("/login", controllers.LoginForm)
app.Get("/logout", controllers.LogoutProcess) app.Get("/logout", controllers.LogoutProcess)
// Welcome page on first login
app.Get("/welcome", controllers.WelcomePage) app.Get("/welcome", controllers.WelcomePage)
app.Post("/welcome", controllers.WelcomePage) app.Post("/welcome", controllers.WelcomePage)
// TOTP enroll & verify
app.Get("/totp/enroll", controllers.TotpEnrollPage) app.Get("/totp/enroll", controllers.TotpEnrollPage)
app.Post("/totp/enroll", controllers.TotpEnrollPage) app.Post("/totp/enroll", controllers.TotpEnrollPage)
app.Get("/totp/verify", controllers.TotpVerifyPage) app.Get("/totp/verify", controllers.TotpVerifyPage)
app.Post("/totp/verify", controllers.TotpVerifyPage) app.Post("/totp/verify", controllers.TotpVerifyPage)
// Admin: Lists
app.Get("/admin/lists", controllers.Lists)
app.Get("/admin/lists/:id<int;min(0)>", controllers.ListShow)
app.Get("/admin/lists/add", controllers.ListAdd)
app.Post("/admin/lists/add", controllers.ListAdd)
app.Get("/admin/lists/:id<int;min(0)>/edit", controllers.ListEdit)
app.Post("/admin/lists/:id<int;min(0)>/edit", controllers.ListEdit)
app.Delete("/admin/lists/:id<int;min(0)>", controllers.ListDelete)
app.Get("/admin/lists/:id<int;min(0)>/items/add", controllers.ListItemAdd)
app.Post("/admin/lists/:id<int;min(0)>/items/add", controllers.ListItemAdd)
app.Get("/admin/lists/:id<int;min(0)>/items/:id<int;min(0)>", controllers.ListItemEdit)
app.Post("/admin/lists/:id<int;min(0)>/items/:id<int;min(0)>", controllers.ListItemEdit)
app.Delete("/admin/lists/:id<int;min(0)>/items/:id<int;min(0)>", controllers.ListItemDelete)
listenAddr := fmt.Sprintf( listenAddr := fmt.Sprintf(
"%s:%d", "%s:%d",
config.App.ListenAddress, config.App.ListenAddress,

16
models/lists.go Normal file
View file

@ -0,0 +1,16 @@
package models
import "gorm.io/gorm"
type List struct {
gorm.Model
Name string
Multi bool
}
type ListItem struct {
gorm.Model
Value string
Default string
List List
}

View file

@ -53,17 +53,17 @@
</a> </a>
<ul class="dropdown-menu dropdown-menu-end"> <ul class="dropdown-menu dropdown-menu-end">
<li> <li>
<a class="dropdown-item" href="/account/manage"> <a class="dropdown-item" href="/admin/sections">
<i class="feather me-2" data-feather="home"></i>Sections <i class="feather me-2" data-feather="home"></i>Sections
</a> </a>
</li> </li>
<li> <li>
<a class="dropdown-item" href="/account/totp"> <a class="dropdown-item" href="/admin/lists">
<i class="feather me-2" data-feather="list"></i>Listes <i class="feather me-2" data-feather="list"></i>Listes
</a> </a>
</li> </li>
<li> <li>
<a class="dropdown-item" href="/logout"> <a class="dropdown-item" href="/admin/fields">
<i class="feather me-2" data-feather="database"></i>Champs supplémentaires <i class="feather me-2" data-feather="database"></i>Champs supplémentaires
</a> </a>
</li> </li>