Skip to content

Commit 870dc04

Browse files
feat: login page
1 parent 0fa524f commit 870dc04

File tree

8 files changed

+59
-19
lines changed

8 files changed

+59
-19
lines changed

web/controllers/auth.go

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package controllers
2+
3+
import (
4+
"github.com/ItsNotGoodName/smtpbridge/internal/core"
5+
"github.com/gofiber/fiber/v2"
6+
)
7+
8+
func AuthLogin(c *fiber.Ctx, cc *core.Context) error {
9+
// Request
10+
11+
// Execute
12+
13+
// Response
14+
return c.Render("login", fiber.Map{})
15+
}

web/controllers/controllers.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func Index(retentionPolicy models.RetentionPolicy) func(c *fiber.Ctx, cc *core.C
3737
}
3838
}
3939

40-
func IndexPStorageTable(c *fiber.Ctx, cc *core.Context) error {
40+
func IndexStorageTable(c *fiber.Ctx, cc *core.Context) error {
4141
// Execute
4242
storage, err := procs.StorageGet(cc)
4343
if err != nil {
@@ -50,7 +50,7 @@ func IndexPStorageTable(c *fiber.Ctx, cc *core.Context) error {
5050
}, "storage-table")
5151
}
5252

53-
func IndexPRecentEnvelopesTable(c *fiber.Ctx, cc *core.Context) error {
53+
func IndexRecentEnvelopesTable(c *fiber.Ctx, cc *core.Context) error {
5454
// Execute
5555
messages, err := procs.EnvelopeMessageList(cc, pagination.NewPage(1, 5), envelope.MessageFilter{})
5656
if err != nil {

web/controllers/rules.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func Rules(c *fiber.Ctx, cc *core.Context) error {
2020
})
2121
}
2222

23-
func RulePEnableForm(c *fiber.Ctx, cc *core.Context, id int64) error {
23+
func RuleEnable(c *fiber.Ctx, cc *core.Context, id int64) error {
2424
// Request
2525
enable := c.FormValue("enable") == "on"
2626

web/http/routes.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,13 @@ import (
1010

1111
func routes(http *fiber.App, app core.App, retentionPolicy models.RetentionPolicy) {
1212
http.Get("/", middleware.App(app, controllers.Index(retentionPolicy)))
13-
http.Route("/p", func(http fiber.Router) {
14-
http.Get("/storage-table", middleware.App(app, controllers.IndexPStorageTable))
15-
http.Get("/recent-envelopes-table", middleware.App(app, controllers.IndexPRecentEnvelopesTable))
13+
http.Route("/index", func(http fiber.Router) {
14+
http.Get("/storage-table", middleware.App(app, controllers.IndexStorageTable))
15+
http.Get("/recent-envelopes-table", middleware.App(app, controllers.IndexRecentEnvelopesTable))
1616
})
1717

18+
http.Get("/login", middleware.App(app, controllers.AuthLogin))
19+
1820
http.Route("/envelopes", func(http fiber.Router) {
1921
http.Get("/", middleware.App(app, controllers.Envelopes))
2022
http.Delete("/", middleware.App(app, controllers.EnvelopesDelete))
@@ -41,7 +43,7 @@ func routes(http *fiber.App, app core.App, retentionPolicy models.RetentionPolic
4143
http.Route("/rules", func(http fiber.Router) {
4244
http.Get("/", middleware.App(app, controllers.Rules))
4345
http.Route("/:id", func(http fiber.Router) {
44-
http.Post("/enable", middleware.AppID(app, controllers.RulePEnableForm))
46+
http.Post("/enable", middleware.AppID(app, controllers.RuleEnable))
4547
})
4648
})
4749

web/views/index.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<h2>Recent Envelopes</h2>
66
<figure>
77
{{block "recent-envelopes-table" .}}
8-
<table hx-trigger="every 5s, deletedEnvelopes from:body, trimmed from:body" hx-get="/p/recent-envelopes-table"
8+
<table hx-trigger="every 5s, deletedEnvelopes from:body, trimmed from:body" hx-get="/index/recent-envelopes-table"
99
hx-swap="outerHTML">
1010
<tbody>
1111
{{range $val := .Messages}}
@@ -31,7 +31,7 @@ <h2>Storage</h2>
3131
<figure>
3232
{{block "storage-table" .}}
3333
<table hx-trigger="every 5s, vacuumed from:body, trimmed from:body, deletedEnvelopes from:body"
34-
hx-get="/p/storage-table" hx-swap="outerHTML">
34+
hx-get="/index/storage-table" hx-swap="outerHTML">
3535
<tbody>
3636
<tr>
3737
<th scope="row"><strong>Envelope Count</strong></th>

web/views/layouts/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
{{headTags}}
1818
</head>
1919

20-
<body hx-ext="loading-states">
20+
<body hx-ext="loading-states" hx-boost="true">
2121
{{ embed }}
2222
</body>
2323

web/views/login.html

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<main class="container">
2+
<div class="flex">
3+
<div class="flex mx-auto">
4+
<h1>SMTPBridge</h1>
5+
</div>
6+
</div>
7+
8+
<article>
9+
<h2>Login</h2>
10+
<form method="post">
11+
<label for="username">
12+
Username
13+
<input type="text" id="username" name="username" placeholder="Username" />
14+
</label>
15+
16+
<label for="password">
17+
Password
18+
<input type="text" id="password" name="password" placeholder="Password" />
19+
</label>
20+
21+
<button type="submit">Log in</button>
22+
</form>
23+
</article>
24+
</main>
25+
26+
{{template "partials/footer" .}}

web/views/rules.html

+6-9
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,12 @@ <h2>Showing {{len .AggregateRules}} rules.</h2>
1313
<div class="flex flex-justify-between">
1414
<div>{{$val.Rule.Name}}</div>
1515
<div>
16-
17-
<div>
18-
{{block "rule-enable-form" $val.Rule}}
19-
<form hx-post="/rules/{{.ID}}/enable" hx-trigger="change from:find input" hx-swap="outerHTML swap:100ms"
20-
class="pico-form-reset">
21-
<input name="enable" {{if .Enable}}checked{{end}} type="checkbox" role="switch" />
22-
</form>
23-
{{end}}
24-
</div>
16+
{{block "rule-enable-form" $val.Rule}}
17+
<form hx-post="/rules/{{.ID}}/enable" hx-trigger="change from:find input" hx-swap="outerHTML swap:100ms"
18+
class="pico-form-reset">
19+
<input name="enable" {{if .Enable}}checked{{end}} data-loading-disable type="checkbox" role="switch" />
20+
</form>
21+
{{end}}
2522
</div>
2623
</div>
2724
</summary>

0 commit comments

Comments
 (0)