Exclude deactivated users from recently active team list

Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
This commit is contained in:
Cursor Agent
2026-02-24 22:09:52 +00:00
parent 5d86fac378
commit bb50b445f3
3 changed files with 42 additions and 0 deletions
@@ -539,6 +539,20 @@ func TestRestrictedViewMembers(t *testing.T) {
}
})
}
t.Run("deactivated users are excluded", func(t *testing.T) {
deactivatedUser, appErr := th.App.UpdateActive(th.Context, user2, false)
require.Nil(t, appErr)
t.Cleanup(func() {
_, reactivatedErr := th.App.UpdateActive(th.Context, deactivatedUser, true)
require.Nil(t, reactivatedErr)
})
results, appErr := th.App.GetRecentlyActiveUsersForTeamPage(th.Context, team1.Id, 0, 1, false, nil)
require.Nil(t, appErr)
require.Len(t, results, 1)
assert.NotEqual(t, user2.Id, results[0].Id)
})
})
t.Run("GetUsers", func(t *testing.T) {
@@ -1075,6 +1075,7 @@ func (us SqlUserStore) GetRecentlyActiveUsersForTeam(teamId string, offset, limi
Column("s.LastActivityAt").
Join("TeamMembers tm ON (tm.UserId = Users.Id AND tm.TeamId = ?)", teamId).
Join("Status s ON (s.UserId = Users.Id)").
Where("Users.DeleteAt = 0").
OrderBy("s.LastActivityAt DESC").
OrderBy("Users.Username ASC").
Offset(uint64(offset)).Limit(uint64(limit))
@@ -2673,7 +2673,17 @@ func testUserStoreGetRecentlyActiveUsersForTeam(t *testing.T, rctx request.CTX,
u3.IsBot = true
defer func() { require.NoError(t, ss.Bot().PermanentDelete(u3.Id)) }()
u4, err := ss.User().Save(rctx, &model.User{
Email: MakeEmail(),
Username: "u4" + model.NewId(),
})
require.NoError(t, err)
defer func() { require.NoError(t, ss.User().PermanentDelete(rctx, u4.Id)) }()
_, nErr = ss.Team().SaveMember(rctx, &model.TeamMember{TeamId: teamID, UserId: u4.Id}, -1)
require.NoError(t, nErr)
millis := model.GetMillis()
u4.LastActivityAt = millis + 1
u3.LastActivityAt = millis
u2.LastActivityAt = millis - 1
u1.LastActivityAt = millis - 1
@@ -2681,6 +2691,11 @@ func testUserStoreGetRecentlyActiveUsersForTeam(t *testing.T, rctx request.CTX,
require.NoError(t, ss.Status().SaveOrUpdate(&model.Status{UserId: u1.Id, Status: model.StatusOnline, Manual: false, LastActivityAt: u1.LastActivityAt, ActiveChannel: ""}))
require.NoError(t, ss.Status().SaveOrUpdate(&model.Status{UserId: u2.Id, Status: model.StatusOnline, Manual: false, LastActivityAt: u2.LastActivityAt, ActiveChannel: ""}))
require.NoError(t, ss.Status().SaveOrUpdate(&model.Status{UserId: u3.Id, Status: model.StatusOnline, Manual: false, LastActivityAt: u3.LastActivityAt, ActiveChannel: ""}))
require.NoError(t, ss.Status().SaveOrUpdate(&model.Status{UserId: u4.Id, Status: model.StatusOnline, Manual: false, LastActivityAt: u4.LastActivityAt, ActiveChannel: ""}))
u4.DeleteAt = model.GetMillis()
_, err = ss.User().Update(rctx, u4, true)
require.NoError(t, err)
t.Run("get team 1, offset 0, limit 100", func(t *testing.T) {
users, err := ss.User().GetRecentlyActiveUsersForTeam(teamID, 0, 100, nil)
@@ -2707,6 +2722,18 @@ func testUserStoreGetRecentlyActiveUsersForTeam(t *testing.T, rctx request.CTX,
sanitized(u2),
}, users)
})
t.Run("deactivated users are excluded", func(t *testing.T) {
users, err := ss.User().GetRecentlyActiveUsersForTeam(teamID, 0, 100, nil)
require.NoError(t, err)
ids := []string{}
for _, user := range users {
ids = append(ids, user.Id)
}
assert.NotContains(t, ids, u4.Id)
})
}
func testUserStoreGetNewUsersForTeam(t *testing.T, rctx request.CTX, ss store.Store) {