From 4d5e43a03977cd3256af097a073b06d2e654dbc5 Mon Sep 17 00:00:00 2001 From: Otto Hollmann Date: Mon, 11 Apr 2022 18:01:41 +0200 Subject: [PATCH] Auto relogin when session expired. --- user.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/user.go b/user.go index 8e36115..6cbd456 100644 --- a/user.go +++ b/user.go @@ -419,6 +419,18 @@ func (user *User) monitorSession(ce *CommandEvent) { fmt.Println("monitorSession: ", x) if x > 0 { user.SetSession(user.Conn.LoginInfo) + } else if ce.User.Conn.LoginInfo != nil { + user.log.Debugln("Session expired for user " + ce.User.Conn.LoginInfo.Username + " trying to relogin.") + err := user.Login(ce, ce.User.Conn.LoginInfo.Username, ce.User.Conn.LoginInfo.Password) + if err == nil { + user.log.Debugln("User " + ce.User.Conn.LoginInfo.Username + " successfully reconnected.") + syncAll(user, false) + } else { + user.log.Debugln("Unable to relogin user %s", ce.User.Conn.LoginInfo.Username) + ce.Reply("Session expired and relogin failed.") + close(user.Conn.Refresh) + leavePortals(ce) + } } else { ce.Reply("Session expired\nStore your password into database with command `save-password` to resolve this issue.") close(user.Conn.Refresh)