aboutsummaryrefslogtreecommitdiff
path: root/handlers.go
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2019-12-09 18:35:51 +0100
committerSimon Ser <contact@emersion.fr>2019-12-09 18:35:51 +0100
commit7702925497a8230f50d2317c9ad41a73de0683ae (patch)
tree617955544543a71baf5c17134a422c0e8fd16bbf /handlers.go
parentefd401bfbf62b2216fe92b4d8be8c07e77b78482 (diff)
downloadalps-7702925497a8230f50d2317c9ad41a73de0683ae.tar.gz
alps-7702925497a8230f50d2317c9ad41a73de0683ae.zip
Make SessionManager create the IMAP client
This will allow SessionManager to re-connect when the IMAP server logs the user out.
Diffstat (limited to 'handlers.go')
-rw-r--r--handlers.go15
1 files changed, 4 insertions, 11 deletions
diff --git a/handlers.go b/handlers.go
index 8dc3fbf..869e1c1 100644
--- a/handlers.go
+++ b/handlers.go
@@ -81,18 +81,11 @@ func handleLogin(ectx echo.Context) error {
username := ctx.FormValue("username")
password := ctx.FormValue("password")
if username != "" && password != "" {
- conn, err := ctx.server.connectIMAP()
- if err != nil {
- return err
- }
-
- if err := conn.Login(username, password); err != nil {
- conn.Logout()
- return ctx.Render(http.StatusOK, "login.html", nil)
- }
-
- token, err := ctx.server.sessions.Put(conn, username, password)
+ token, err := ctx.server.sessions.Put(username, password)
if err != nil {
+ if _, ok := err.(AuthError); ok {
+ return ctx.Render(http.StatusOK, "login.html", nil)
+ }
return fmt.Errorf("failed to put connection in pool: %v", err)
}
ctx.setToken(token)