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.
|
// A new ExpiresAt is only written if enough time has elapsed since last update.
|
||||||
// Returns true only if the session was extended.
|
// Returns true only if the session was extended.
|
||||||
func (a *App) ExtendSessionExpiryIfNeeded(session *model.Session) bool {
|
func (a *App) ExtendSessionExpiryIfNeeded(session *model.Session) bool {
|
||||||
|
if !*a.Srv().Config().ServiceSettings.ExtendSessionLengthWithActivity {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
if session == nil || session.IsExpired() {
|
if session == nil || session.IsExpired() {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -320,15 +320,22 @@ func TestApp_ExtendExpiryIfNeeded(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
var tests = []struct {
|
var tests = []struct {
|
||||||
|
enabled bool
|
||||||
name string
|
name string
|
||||||
session *model.Session
|
session *model.Session
|
||||||
}{
|
}{
|
||||||
{name: "mobile", session: &model.Session{UserId: model.NewId(), DeviceId: model.NewId(), Token: model.NewId()}},
|
{enabled: true, 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()}},
|
{enabled: true, 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: "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 {
|
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)
|
session, err := th.App.CreateSession(test.session)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
@@ -337,6 +344,12 @@ func TestApp_ExtendExpiryIfNeeded(t *testing.T) {
|
|||||||
|
|
||||||
ok := th.App.ExtendSessionExpiryIfNeeded(session)
|
ok := th.App.ExtendSessionExpiryIfNeeded(session)
|
||||||
|
|
||||||
|
if !test.enabled {
|
||||||
|
require.False(t, ok)
|
||||||
|
require.Equal(t, expires, session.ExpiresAt)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
require.True(t, ok)
|
require.True(t, ok)
|
||||||
require.Greater(t, session.ExpiresAt, expires)
|
require.Greater(t, session.ExpiresAt, expires)
|
||||||
require.False(t, session.IsExpired())
|
require.False(t, session.IsExpired())
|
||||||
@@ -353,7 +366,6 @@ func TestApp_ExtendExpiryIfNeeded(t *testing.T) {
|
|||||||
require.Equal(t, session.ExpiresAt, storedSession.ExpiresAt)
|
require.Equal(t, session.ExpiresAt, storedSession.ExpiresAt)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user