summaryrefslogtreecommitdiffstats
path: root/app/session.go
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-09-28 09:04:52 -0400
committerGeorge Goldberg <george@gberg.me>2017-09-28 14:04:52 +0100
commit15b361094a64fe024db6d3eaf9539143cee73ce4 (patch)
tree9ff071eec6aa408b81484fb9e73340ed7ef3dbe3 /app/session.go
parent8d662105d3049a5cd67a7bf42ab70d479d4348e2 (diff)
downloadchat-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.go12
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
}