UserTypeIndividual UserType = iota // Historic reason to make it starts at 0.
// UserTypeOrganization defines an organization
- UserTypeOrganization
+ UserTypeOrganization // 1
// UserTypeUserReserved reserves a (non-existing) user, i.e. to prevent a spam user from re-registering after being deleted, or to reserve the name until the user is actually created later on
- UserTypeUserReserved
+ UserTypeUserReserved // 2
// UserTypeOrganizationReserved reserves a (non-existing) organization, to be used in combination with UserTypeUserReserved
- UserTypeOrganizationReserved
+ UserTypeOrganizationReserved // 3
// UserTypeBot defines a bot user
- UserTypeBot
+ UserTypeBot // 4
// UserTypeRemoteUser defines a remote user for federated users
- UserTypeRemoteUser
+ UserTypeRemoteUser // 5
)
const (
// GetInactiveUsers gets all inactive users
func GetInactiveUsers(ctx context.Context, olderThan time.Duration) ([]*User, error) {
- var cond builder.Cond = builder.Eq{"is_active": false}
+ cond := builder.And(
+ builder.Eq{"is_active": false},
+ builder.Or( // only plain user
+ builder.Eq{"`type`": UserTypeIndividual},
+ builder.Eq{"`type`": UserTypeUserReserved},
+ ),
+ )
if olderThan > 0 {
cond = cond.And(builder.Lt{"created_unix": time.Now().Add(-olderThan).Unix()})
assert.True(t, user_model.IsFeatureDisabledWithLoginType(user, f))
}
}
+
+func TestGetInactiveUsers(t *testing.T) {
+ assert.NoError(t, unittest.PrepareTestDatabase())
+
+ // all inactive users
+ // user1's createdunix is 1730468968
+ users, err := user_model.GetInactiveUsers(db.DefaultContext, 0)
+ assert.NoError(t, err)
+ assert.Len(t, users, 1)
+ interval := time.Now().Unix() - 1730468968 + 3600*24
+ users, err = user_model.GetInactiveUsers(db.DefaultContext, time.Duration(interval*int64(time.Second)))
+ assert.NoError(t, err)
+ assert.Len(t, users, 0)
+}