adding auth types for grandfathering

This commit is contained in:
Dario Ghunney Ware
2025-11-25 21:01:56 +00:00
parent 5dc2080cde
commit 8f48d3e812
2 changed files with 23 additions and 5 deletions
@@ -46,4 +46,21 @@ public interface UserRepository extends JpaRepository<User, Long> {
long countByOauthGrandfatheredTrue();
List<User> findAllBySsoProviderIsNotNull();
/**
* Finds all SSO users - those with sso_provider set OR authenticationType is sso/oauth2/saml2.
* This catches V1 users who were created via SSO but never signed in (sso_provider is null).
*/
@Query(
"SELECT u FROM User u WHERE u.ssoProvider IS NOT NULL "
+ "OR LOWER(u.authenticationType) IN ('sso', 'oauth2', 'saml2')")
List<User> findAllSsoUsers();
/**
* Counts all SSO users - those with sso_provider set OR authenticationType is sso/oauth2/saml2.
*/
@Query(
"SELECT COUNT(u) FROM User u WHERE u.ssoProvider IS NOT NULL "
+ "OR LOWER(u.authenticationType) IN ('sso', 'oauth2', 'saml2')")
long countSsoUsers();
}
@@ -736,12 +736,13 @@ public class UserService implements UserServiceInterface {
}
/**
* Counts the number of OAuth/SAML users (users with SSO provider set).
* Counts the number of OAuth/SAML users. Includes users with sso_provider set OR
* authenticationType is sso/oauth2/saml2 (catches V1 users who never signed in).
*
* @return Count of OAuth users
*/
public long countOAuthUsers() {
return userRepository.countBySsoProviderIsNotNull();
return userRepository.countSsoUsers();
}
/**
@@ -761,10 +762,10 @@ public class UserService implements UserServiceInterface {
*/
@Transactional
public int grandfatherAllOAuthUsers() {
List<User> oauthUsers = userRepository.findAllBySsoProviderIsNotNull();
List<User> ssoUsers = userRepository.findAllSsoUsers();
int updated = 0;
for (User user : oauthUsers) {
for (User user : ssoUsers) {
if (!user.isOauthGrandfathered()) {
user.setOauthGrandfathered(true);
updated++;
@@ -772,7 +773,7 @@ public class UserService implements UserServiceInterface {
}
if (updated > 0) {
userRepository.saveAll(oauthUsers);
userRepository.saveAll(ssoUsers);
}
return updated;