diff options
| author | Bobby <[email protected]> | 2025-12-22 13:46:50 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2025-12-22 13:46:50 +0530 |
| commit | 32ee8047eba06c9f1c7575b66fc0f9195657ac04 (patch) | |
| tree | ed781e7b05aeba0b5db78e69918edd6a0928c9e1 /controllers/auth.go | |
| parent | f17d9142781eb1a659ea53311d9225b244ad209c (diff) | |
| download | lain-32ee8047eba06c9f1c7575b66fc0f9195657ac04.tar.xz lain-32ee8047eba06c9f1c7575b66fc0f9195657ac04.zip | |
auth engine, basic login working
Diffstat (limited to 'controllers/auth.go')
| -rw-r--r-- | controllers/auth.go | 53 |
1 files changed, 53 insertions, 0 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") +} |
