33
44import invite .audit .UserRoleAuditService ;
55import invite .model .Role ;
6+ import invite .model .Status ;
67import invite .model .User ;
78import invite .model .UserRole ;
89import invite .model .UserRoleAudit ;
910import invite .provision .ProvisioningService ;
10- import invite .provision . scim . OperationType ;
11+ import invite .repository . InvitationRepository ;
1112import invite .repository .UserRepository ;
1213import invite .repository .UserRoleAuditRepository ;
1314import invite .repository .UserRoleRepository ;
2021import org .springframework .transaction .annotation .Transactional ;
2122
2223import javax .sql .DataSource ;
23- import java .io .Serializable ;
2424import java .time .Instant ;
2525import java .time .Period ;
2626import java .util .List ;
@@ -39,6 +39,8 @@ public class ResourceCleaner extends AbstractNodeLeader {
3939 private final UserRoleAuditService userRoleAuditService ;
4040 private final int lastActivityDurationDays ;
4141 private final int purgeAuditLogDays ;
42+ private final int purgeExpiredInvitationDays ;
43+ private final InvitationRepository invitationRepository ;
4244
4345
4446 @ Autowired
@@ -48,16 +50,21 @@ public ResourceCleaner(UserRepository userRepository,
4850 DataSource dataSource ,
4951 UserRoleAuditRepository userRoleAuditRepository ,
5052 UserRoleAuditService userRoleAuditService ,
53+ InvitationRepository invitationRepository ,
5154 @ Value ("${cron.last-activity-duration-days}" ) int lastActivityDurationDays ,
52- @ Value ("${cron.purge-audit-log-days}" ) int purgeAuditLogDays ) {
55+ @ Value ("${cron.purge-audit-log-days}" ) int purgeAuditLogDays ,
56+ @ Value ("${cron.purge-expired-invitations-days}" ) int purgeExpiredInvitationDays ) {
5357 super (LOCK_NAME , dataSource );
5458 this .userRepository = userRepository ;
5559 this .userRoleRepository = userRoleRepository ;
5660 this .userRoleAuditRepository = userRoleAuditRepository ;
5761 this .userRoleAuditService = userRoleAuditService ;
5862 this .lastActivityDurationDays = lastActivityDurationDays ;
5963 this .provisioningService = provisioningService ;
60- this .purgeAuditLogDays = purgeAuditLogDays ; }
64+ this .purgeAuditLogDays = purgeAuditLogDays ;
65+ this .purgeExpiredInvitationDays = purgeExpiredInvitationDays ;
66+ this .invitationRepository = invitationRepository ;
67+ }
6168
6269 @ Scheduled (cron = "${cron.user-cleaner-expression}" )
6370 @ Transactional
@@ -73,7 +80,8 @@ public Map<String, Object> doClean() {
7380 "DeletedNonActiveUsers" , users ,
7481 "DeletedOrphanUsers" , orphans ,
7582 "DeletedExpiredUserRoles" , userRoles ,
76- "DeletedUserRoleAudits" , cleanUserRoleAudit ()
83+ "DeletedUserRoleAudits" , cleanUserRoleAudit (),
84+ "DeletedExpiredInvitations" , cleanExpiredInvitation ()
7785 );
7886 }
7987
@@ -132,4 +140,11 @@ private int cleanUserRoleAudit() {
132140 return userRoleAuditRepository .deleteByCreatedAtBefore (past );
133141 }
134142
143+ private int cleanExpiredInvitation () {
144+ if (purgeExpiredInvitationDays == 0L ) {
145+ return 0 ;
146+ }
147+ Instant past = Instant .now ().minus (Period .ofDays (purgeExpiredInvitationDays ));
148+ return invitationRepository .deleteByExpiryDateBefore (past );
149+ }
135150}
0 commit comments