MM-35332 honour config setting when extending session expiry (#17581)

Honour `ServiceSettings.ExtendSessionLengthWithActivity` config setting when extending session expiry on activity.
Этот коммит содержится в:
Doug Lauder
2021-05-07 14:43:41 -04:00
коммит произвёл GitHub
родитель 77d42568f9
Коммит a668479992
2 изменённых файлов: 21 добавлений и 5 удалений

Просмотреть файл

@@ -351,6 +351,10 @@ func (a *App) UpdateLastActivityAtIfNeeded(session model.Session) {
// A new ExpiresAt is only written if enough time has elapsed since last update.
// Returns true only if the session was extended.
func (a *App) ExtendSessionExpiryIfNeeded(session *model.Session) bool {
if !*a.Srv().Config().ServiceSettings.ExtendSessionLengthWithActivity {
return false
}
if session == nil || session.IsExpired() {
return false
}

Просмотреть файл

@@ -320,15 +320,22 @@ func TestApp_ExtendExpiryIfNeeded(t *testing.T) {
})
var tests = []struct {
enabled bool
name string
session *model.Session
}{
{name: "mobile", session: &model.Session{UserId: model.NewId(), DeviceId: model.NewId(), Token: model.NewId()}},
{name: "SSO", session: &model.Session{UserId: model.NewId(), IsOAuth: true, Token: model.NewId()}},
{name: "web/LDAP", session: &model.Session{UserId: model.NewId(), Token: model.NewId()}},
{enabled: true, name: "mobile", session: &model.Session{UserId: model.NewId(), DeviceId: model.NewId(), Token: model.NewId()}},
{enabled: true, name: "SSO", session: &model.Session{UserId: model.NewId(), IsOAuth: true, Token: model.NewId()}},
{enabled: true, name: "web/LDAP", session: &model.Session{UserId: model.NewId(), Token: model.NewId()}},
{enabled: false, name: "mobile", session: &model.Session{UserId: model.NewId(), DeviceId: model.NewId(), Token: model.NewId()}},
{enabled: false, name: "SSO", session: &model.Session{UserId: model.NewId(), IsOAuth: true, Token: model.NewId()}},
{enabled: false, name: "web/LDAP", session: &model.Session{UserId: model.NewId(), Token: model.NewId()}},
}
for _, test := range tests {
t.Run(fmt.Sprintf("%s session beyond threshold should update ExpiresAt", test.name), func(t *testing.T) {
t.Run(fmt.Sprintf("%s session beyond threshold should update ExpiresAt based on feature enabled", test.name), func(t *testing.T) {
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.ExtendSessionLengthWithActivity = test.enabled })
session, err := th.App.CreateSession(test.session)
require.Nil(t, err)
@@ -337,6 +344,12 @@ func TestApp_ExtendExpiryIfNeeded(t *testing.T) {
ok := th.App.ExtendSessionExpiryIfNeeded(session)
if !test.enabled {
require.False(t, ok)
require.Equal(t, expires, session.ExpiresAt)
return
}
require.True(t, ok)
require.Greater(t, session.ExpiresAt, expires)
require.False(t, session.IsExpired())
@@ -353,7 +366,6 @@ func TestApp_ExtendExpiryIfNeeded(t *testing.T) {
require.Equal(t, session.ExpiresAt, storedSession.ExpiresAt)
})
}
}
const (