DaanHoogland commented on code in PR #13953:
URL: https://github.com/apache/cloudstack/pull/13953#discussion_r4325748312


##########
plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/saml/SAML2AuthManagerImpl.java:
##########
@@ -446,26 +455,52 @@ public boolean isUserAuthorized(Long userId, String 
entityId) {
     @Override
     public boolean authorizeUser(Long userId, String entityId, boolean enable) 
{
         UserVO user = _userDao.getUser(userId);
-        if (user != null) {
-            if (enable) {
-                user.setExternalEntity(entityId);
-                user.setSource(User.Source.SAML2);
-            } else {
-                boolean enableLoginAfterSAMLDisable =  
SAML2AuthManager.EnableLoginAfterSAMLDisable.value();
-                if (user.getSource().equals(User.Source.SAML2)) {
-                    if(enableLoginAfterSAMLDisable) {
-                        user.setSource(User.Source.UNKNOWN);
-                    } else {
-                        user.setSource(User.Source.SAML2DISABLED);
-                    }
-                } else {
-                    return false;
-                }
+        if (user == null) {
+            return false;
+        }
+        if (enable) {
+            enableSAMLForUser(user, entityId);
+        } else if (!disableSAMLForUser(user)) {
+            return false;
+        }
+        _userDao.update(user.getId(), user);
+        return true;
+    }
+
+    private void enableSAMLForUser(UserVO user, String entityId) {
+        if (user.getSource() != null && 
!User.Source.SAML2.equals(user.getSource()) && 
!User.Source.SAML2DISABLED.equals(user.getSource())) {
+            userDetailsDao.addDetail(user.getId(), PRE_SAML_SOURCE_DETAIL_KEY, 
user.getSource().toString(), false);
+        }
+        user.setExternalEntity(entityId);
+        user.setSource(User.Source.SAML2);
+    }
+
+    private boolean disableSAMLForUser(UserVO user) {
+        if (!user.getSource().equals(User.Source.SAML2)) {
+            return false;
+        }

Review Comment:
   ```suggestion
       private boolean disableSAMLForUser(UserVO user) {
           if (!User.Source.SAML2.equals(user.getSource())) {
               return false;
           }
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to