MM-35332 honour config setting when extending session expiry (#17581)
Honour `ServiceSettings.ExtendSessionLengthWithActivity` config setting when extending session expiry on activity.
Этот коммит содержится в:
@@ -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 (
|
||||
|
||||
Ссылка в новой задаче
Block a user