diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-09-28 09:04:52 -0400 |
---|---|---|
committer | George Goldberg <george@gberg.me> | 2017-09-28 14:04:52 +0100 |
commit | 15b361094a64fe024db6d3eaf9539143cee73ce4 (patch) | |
tree | 9ff071eec6aa408b81484fb9e73340ed7ef3dbe3 /app/session.go | |
parent | 8d662105d3049a5cd67a7bf42ab70d479d4348e2 (diff) | |
download | chat-15b361094a64fe024db6d3eaf9539143cee73ce4.tar.gz chat-15b361094a64fe024db6d3eaf9539143cee73ce4.tar.bz2 chat-15b361094a64fe024db6d3eaf9539143cee73ce4.zip |
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
Diffstat (limited to 'app/session.go')
-rw-r--r-- | app/session.go | 12 |
1 files changed, 12 insertions, 0 deletions
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 } |