summaryrefslogtreecommitdiff
path: root/controllers
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-12-22 13:46:50 +0530
committerBobby <[email protected]>2025-12-22 13:46:50 +0530
commit32ee8047eba06c9f1c7575b66fc0f9195657ac04 (patch)
treeed781e7b05aeba0b5db78e69918edd6a0928c9e1 /controllers
parentf17d9142781eb1a659ea53311d9225b244ad209c (diff)
downloadlain-32ee8047eba06c9f1c7575b66fc0f9195657ac04.tar.xz
lain-32ee8047eba06c9f1c7575b66fc0f9195657ac04.zip
auth engine, basic login working
Diffstat (limited to 'controllers')
-rw-r--r--controllers/auth.go53
-rw-r--r--controllers/login.go17
-rw-r--r--controllers/mail.go1
3 files changed, 54 insertions, 17 deletions
diff --git a/controllers/auth.go b/controllers/auth.go
new file mode 100644
index 0000000..3351058
--- /dev/null
+++ b/controllers/auth.go
@@ -0,0 +1,53 @@
+package controllers
+
+import (
+ "lain/config"
+ "lain/repository"
+ "lain/session"
+ "lain/types"
+ "lain/utils/crypto"
+ "lain/utils/meta"
+ "lain/utils/shortcuts"
+
+ "github.com/gofiber/fiber/v2"
+)
+
+func LoginPage(context *fiber.Ctx) error {
+ meta.SetPageTitle(context, "Login")
+
+ return shortcuts.Render(context, "auth/login", fiber.Map{
+ "AllowedDomains": config.Server.AllowedDomains,
+ })
+}
+
+func Login(context *fiber.Ctx) error {
+ var formData types.LoginForm
+ if err := context.BodyParser(&formData); err != nil {
+ return BadRequest(context, err)
+ }
+
+ encryptedPassword, err := crypto.Encrypt(formData.Password)
+ if err != nil {
+ return InternalServerError(context, err)
+ }
+ formData.Password = encryptedPassword
+
+ preferences, err := repository.GetPreferences(formData)
+ if err != nil {
+ return InternalServerError(context, err)
+ }
+
+ if err = session.CreateSession(context, preferences.Email); err != nil {
+ return InternalServerError(context, err)
+ }
+
+ return shortcuts.Redirect(context, "mail.inbox")
+}
+
+func Logout(context *fiber.Ctx) error {
+ if err := session.DestroySession(context); err != nil {
+ return InternalServerError(context, err)
+ }
+
+ return shortcuts.Redirect(context, "auth.login")
+}
diff --git a/controllers/login.go b/controllers/login.go
deleted file mode 100644
index 2690538..0000000
--- a/controllers/login.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package controllers
-
-import (
- "lain/config"
- "lain/utils/meta"
- "lain/utils/shortcuts"
-
- "github.com/gofiber/fiber/v2"
-)
-
-func LoginPage(context *fiber.Ctx) error {
- meta.SetPageTitle(context, "Login")
-
- return shortcuts.Render(context, "auth/login", fiber.Map{
- "AllowedDomains": config.Server.AllowedDomains,
- })
-}
diff --git a/controllers/mail.go b/controllers/mail.go
new file mode 100644
index 0000000..2d32936
--- /dev/null
+++ b/controllers/mail.go
@@ -0,0 +1 @@
+package controllers