star7th 6 anni fa
parent
commit
f2d0b4ba2b

+ 12 - 3
server/Application/Api/Controller/AdminSettingController.class.php

@@ -14,7 +14,9 @@ class AdminSettingController extends BaseController {
         
 
         if ($ldap_open) {
-
+            if (!$ldap_form['user_field']) {
+                $ldap_form['user_field'] = 'cn';
+            }
             if( !extension_loaded( 'ldap' ) ) {
                $this->sendError(10011,"你尚未安装php-ldap扩展。如果是普通PHP环境,请手动安装之。如果是使用之前官方docker镜像,则需要重新安装镜像。方法是:备份 /showdoc_data 整个目录,然后全新安装showdoc,接着用备份覆盖/showdoc_data 。然后递归赋予777可写权限。");
                return ;
@@ -34,8 +36,12 @@ class AdminSettingController extends BaseController {
 
             $result = ldap_search($ldap_conn,$ldap_form['base_dn'],"(cn=*)");
             $data = ldap_get_entries($ldap_conn, $result);
+            
             for ($i=0; $i<$data["count"]; $i++) {
-                $ldap_user = $data[$i]["cn"][0] ;
+                $ldap_user = $data[$i][$ldap_form['user_field']][0] ;
+                if (!$ldap_user) {
+                    continue ;
+                }
                 //如果该用户不在数据库里,则帮助其注册
                 if(!D("User")->isExist($ldap_user)){
                     D("User")->register($ldap_user,$ldap_user.time());
@@ -80,6 +86,9 @@ class AdminSettingController extends BaseController {
             if (!$ldap_open) {
                 return ;
             }
+            if (!$ldap_form['user_field']) {
+                $ldap_form['user_field'] = 'cn';
+            }
             $ldap_conn = ldap_connect($ldap_form['host'], $ldap_form['port']);//建立与 LDAP 服务器的连接
             if (!$ldap_conn) {
                $this->sendError(10011,"Can't connect to LDAP server");
@@ -95,7 +104,7 @@ class AdminSettingController extends BaseController {
             $result = ldap_search($ldap_conn,$ldap_form['base_dn'],"(cn=*)");
             $data = ldap_get_entries($ldap_conn, $result);
             for ($i=0; $i<$data["count"]; $i++) {
-                $ldap_user = $data[$i]["cn"][0] ;
+                $ldap_user = $data[$i][$ldap_form['user_field']][0] ;
                 $dn = $data[$i]["dn"] ;
                 if ($ldap_user == $username) {
                     //如果该用户不在数据库里,则帮助其注册

+ 4 - 1
server/Application/Api/Model/UserModel.class.php

@@ -67,6 +67,9 @@ class UserModel extends BaseModel {
             if (!$ldap_open) {
                 return false;
             }
+            if (!$ldap_form['user_field']) {
+                $ldap_form['user_field'] = 'cn';
+            }
             $ldap_conn = ldap_connect($ldap_form['host'], $ldap_form['port']);//建立与 LDAP 服务器的连接
             if (!$ldap_conn) {
                return false;
@@ -80,7 +83,7 @@ class UserModel extends BaseModel {
             $result = ldap_search($ldap_conn,$ldap_form['base_dn'],"(cn=*)");
             $data = ldap_get_entries($ldap_conn, $result);
             for ($i=0; $i<$data["count"]; $i++) {
-                $ldap_user = $data[$i]["cn"][0] ;
+                $ldap_user = $data[$i][$ldap_form['user_field']][0] ;
                 $dn = $data[$i]["dn"] ;
                 if ($ldap_user == $username) {
                     //如果该用户不在数据库里,则帮助其注册

+ 1 - 1
web/index.html

@@ -4,4 +4,4 @@
       "server": window.location.protocol +'//'+ window.location.host + window.location.pathname+ '../server/index.php?s=',
       //"lang" :'en'
       "lang" :'zh-cn'
-  }</script><link href=./static/css/app.83971470d5673ec1ddd9e9f478fdb016.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.134a0afff2ecfa81b84a.js></script><script type=text/javascript src=./static/js/vendor.ba24f6ccee070864d547.js></script><script type=text/javascript src=./static/js/app.679dabc3a4d83302649c.js></script></body></html>
+  }</script><link href=./static/css/app.05c4130cb2c27510bcae5279f93551a6.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.ab98dd6cdbc5ee21b545.js></script><script type=text/javascript src=./static/js/vendor.ba24f6ccee070864d547.js></script><script type=text/javascript src=./static/js/app.e5345c9bf79a7803523a.js></script></body></html>

File diff suppressed because it is too large
+ 0 - 0
web/static/css/app.05c4130cb2c27510bcae5279f93551a6.css


File diff suppressed because it is too large
+ 0 - 0
web/static/js/app.679dabc3a4d83302649c.js


File diff suppressed because it is too large
+ 0 - 0
web/static/js/app.e5345c9bf79a7803523a.js


+ 1 - 1
web/static/js/manifest.134a0afff2ecfa81b84a.js → web/static/js/manifest.ab98dd6cdbc5ee21b545.js

@@ -1 +1 @@
-!function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var i,u,f,s=0,l=[];s<t.length;s++)u=t[s],o[u]&&l.push(o[u][0]),o[u]=0;for(i in c)Object.prototype.hasOwnProperty.call(c,i)&&(e[i]=c[i]);for(r&&r(t,c,a);l.length;)l.shift()();if(a)for(s=0;s<a.length;s++)f=n(n.s=a[s]);return f};var t={},o={2:0};n.e=function(e){function r(){i.onerror=i.onload=null,clearTimeout(u);var n=o[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),o[e]=void 0)}var t=o[e];if(0===t)return new Promise(function(e){e()});if(t)return t[2];var c=new Promise(function(n,r){t=o[e]=[n,r]});t[2]=c;var a=document.getElementsByTagName("head")[0],i=document.createElement("script");i.type="text/javascript",i.charset="utf-8",i.async=!0,i.timeout=12e4,n.nc&&i.setAttribute("nonce",n.nc),i.src=n.p+"static/js/"+e+"."+{0:"ba24f6ccee070864d547",1:"679dabc3a4d83302649c"}[e]+".js";var u=setTimeout(r,12e4);return i.onerror=i.onload=r,a.appendChild(i),c},n.m=e,n.c=t,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="./",n.oe=function(e){throw console.error(e),e}}([]);
+!function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var i,u,f,s=0,l=[];s<t.length;s++)u=t[s],o[u]&&l.push(o[u][0]),o[u]=0;for(i in c)Object.prototype.hasOwnProperty.call(c,i)&&(e[i]=c[i]);for(r&&r(t,c,a);l.length;)l.shift()();if(a)for(s=0;s<a.length;s++)f=n(n.s=a[s]);return f};var t={},o={2:0};n.e=function(e){function r(){i.onerror=i.onload=null,clearTimeout(u);var n=o[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),o[e]=void 0)}var t=o[e];if(0===t)return new Promise(function(e){e()});if(t)return t[2];var c=new Promise(function(n,r){t=o[e]=[n,r]});t[2]=c;var a=document.getElementsByTagName("head")[0],i=document.createElement("script");i.type="text/javascript",i.charset="utf-8",i.async=!0,i.timeout=12e4,n.nc&&i.setAttribute("nonce",n.nc),i.src=n.p+"static/js/"+e+"."+{0:"ba24f6ccee070864d547",1:"e5345c9bf79a7803523a"}[e]+".js";var u=setTimeout(r,12e4);return i.onerror=i.onload=r,a.appendChild(i),c},n.m=e,n.c=t,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="./",n.oe=function(e){throw console.error(e),e}}([]);

+ 5 - 5
web_src/src/components/admin/setting/Index.vue

@@ -55,11 +55,11 @@
             </el-select>
         </el-form-item>
 
-        <!-- 
-        <el-form-item label="作为用户名的属性">
-          <el-input v-model="form.ldap_form.uid_field" class="form-el" placeholder="例如 sAMAccountName"></el-input>
+        
+        <el-form-item label="ldap user filed">
+          <el-input v-model="form.ldap_form.user_field" class="form-el" placeholder="例如 cn"></el-input>
         </el-form-item>
-        -->
+       
       </div>
 
 
@@ -97,7 +97,7 @@ export default {
           "base_dn":'',
           "bind_dn":'',
           "bind_password":'',
-          "uid_field":'sAMAccountName',
+          "user_field":'',
         }
       }
     };

+ 1 - 1
web_src/src/components/admin/user/Index.vue

@@ -45,7 +45,7 @@
         label="操作">
           <template slot-scope="scope">
             <el-button @click="click_password(scope.row)" type="text" size="small">修改密码</el-button>
-            <el-button @click="delete_user(scope.row)" type="text" size="small">删除</el-button>
+            <el-button @click="delete_user(scope.row)" v-if="scope.row.groupid != 1" type="text" size="small">删除</el-button>
           </template>
       </el-table-column>
     </el-table>

Some files were not shown because too many files changed in this diff