From 15b361094a64fe024db6d3eaf9539143cee73ce4 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Thu, 28 Sep 2017 09:04:52 -0400 Subject: PLT-7633 (E20) Add session idle timeout config setting (#7524) * Add session idle timeout config setting * Modify config setting name to SessionIdleTimeoutInMinutes * Small re-org of if statement * Merge with latest master --- app/session.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'app/session.go') diff --git a/app/session.go b/app/session.go index f0245acba..0e7701135 100644 --- a/app/session.go +++ b/app/session.go @@ -71,6 +71,18 @@ func (a *App) GetSession(token string) (*model.Session, *model.AppError) { return nil, model.NewAppError("GetSession", "api.context.invalid_token.error", map[string]interface{}{"Token": token}, "", http.StatusUnauthorized) } + if *utils.Cfg.ServiceSettings.SessionIdleTimeoutInMinutes > 0 && + utils.IsLicensed() && *utils.License().Features.Compliance && + session != nil && !session.IsOAuth && !session.IsMobileApp() && + session.Props[model.SESSION_PROP_TYPE] != model.SESSION_TYPE_USER_ACCESS_TOKEN { + + timeout := int64(*utils.Cfg.ServiceSettings.SessionIdleTimeoutInMinutes) * 1000 * 60 + if model.GetMillis()-session.LastActivityAt > timeout { + a.RevokeSessionById(session.Id) + return nil, model.NewAppError("GetSession", "api.context.invalid_token.error", map[string]interface{}{"Token": token}, "idle timeout", http.StatusUnauthorized) + } + } + return session, nil } -- cgit v1.2.3-1-g7c22