浏览代码

[Web] fix bug on mailbox login

FreddleSpl0it 2 年之前
父节点
当前提交
4dc3222f03
共有 3 个文件被更改,包括 11 次插入20 次删除
  1. 4 14
      data/web/inc/functions.auth.inc.php
  2. 6 5
      data/web/inc/functions.inc.php
  3. 1 1
      data/web/inc/functions.mailbox.inc.php

+ 4 - 14
data/web/inc/functions.auth.inc.php

@@ -333,26 +333,16 @@ function keycloak_mbox_login_rest($user, $pass, $iam_settings, $is_internal = fa
     return 'user';
   }
 
-  // try to create mbox on successfull login
-  $mbox_template = null;
-  // check if matching attribute mapping exists
-  foreach ($iam_settings['mappers'] as $index => $mapper){
-    if (in_array($mapper, $iam_settings['mappers'])) {
-      $mbox_template = $iam_settings['templates'][$index];
-      break;
-    }
-  }
-  if (!$mbox_template){
-    // no matching template found
-    return false;
-  }
+  // check if matching attribute exist
+  $mapper_key = array_search($user_template, $iam_settings['mappers']);
+  if ($mapper_key === false) return false;
 
   // create mailbox
   $create_res = mailbox('add', 'mailbox_from_template', array(
     'domain' => explode('@', $user)[1],
     'local_part' => explode('@', $user)[0],
     'authsource' => 'keycloak',
-    'template' => $mbox_template
+    'template' => $iam_settings['mappers'][$mapper_key]
   ));
   if (!$create_res) return false;
 

+ 6 - 5
data/web/inc/functions.inc.php

@@ -2316,7 +2316,7 @@ function identity_provider($_action, $_data = null, $_extra = null) {
         );
         return true;
       }
-    
+
       // get mapped template, if not set return false
       // also return false if no mappers were defined
       $provider = identity_provider('get');
@@ -2330,9 +2330,10 @@ function identity_provider($_action, $_data = null, $_extra = null) {
         );
         return false;
       }
-    
+
       // check if matching attribute exist
-      if (array_search($user_template, $provider['mappers']) === false) {
+      $mapper_key = array_search($user_template, $provider['mappers']);
+      if ($mapper_key === false) {
         clear_session();  
         $_SESSION['return'][] =  array(
           'type' => 'danger',
@@ -2341,13 +2342,13 @@ function identity_provider($_action, $_data = null, $_extra = null) {
         );
         return false;
       }
-    
+
       // create mailbox
       $create_res = mailbox('add', 'mailbox_from_template', array(
         'domain' => explode('@', $info['email'])[1],
         'local_part' => explode('@', $info['email'])[0],
         'authsource' => identity_provider('get')['authsource'],
-        'template' => $user_template
+        'template' => $provider['templates'][$mapper_key]
       ));
       if (!$create_res){
         clear_session();  

+ 1 - 1
data/web/inc/functions.mailbox.inc.php

@@ -1361,7 +1361,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
               break;
             }
           }
-        
+
           return mailbox('add', 'mailbox', $mailbox_attributes, array('iam_create_login' => true));
         break;
         case 'resource':