diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index dd150f210..6aa51c6d7 100755 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -460,7 +460,13 @@ class UsersController extends AbstractController */ public function search() { - $builder = User::select(User::$basicField); + $user = User::auth(); + // + $columns = User::$basicField; + if ($user->isAdmin()) { + $columns[] = 'identity'; + } + $builder = User::select($columns); // $keys = Request::input('keys'); $sorts = Request::input('sorts'); @@ -513,12 +519,25 @@ class UsersController extends AbstractController $list = $builder->orderBy('userid')->take(Base::getPaginate(100, 10, 'take'))->get(); } // - if ($state === 1) { - $list->transform(function (User $userInfo) { - $userInfo->online = $userInfo->getOnlineStatus(); - return $userInfo; + $list->transform(function (User $userInfo) use ($state) { + $tags = []; + $dep = $userInfo->getDepartmentName(); + $dep = array_filter(explode(",", $dep), function($item) { + return preg_match("/\(M\)$/", $item); }); - } + if ($dep) { + $tags[] = preg_replace("/\(M\)$/", "", $dep[0]) . " " . Base::Lang("负责人"); + } + if ($userInfo->isTemp()) { + $tags[] = Base::Lang("临时"); + } + $userInfo->tags = $tags; + // + if ($state === 1) { + $userInfo->online = $userInfo->getOnlineStatus(); + } + return $userInfo; + }); return Base::retSuccess('success', $list); } @@ -1365,6 +1384,12 @@ class UsersController extends AbstractController if (mb_strlen($name) < 2 || mb_strlen($name) > 20) { return Base::retError('部门名称长度限制2-20个字'); } + if (preg_match('/[\Q~!@#$%^&*()+-_=.:?<>,\E]/', $name)) { + return Base::retError('部门名称不能包含特殊符号'); + } + if (str_contains($name, '(M)')) { + return Base::retError('部门名称不能包含:(M)'); + } // if ($id > 0) { $userDepartment = UserDepartment::find($id); diff --git a/app/Models/User.php b/app/Models/User.php index 017fac5fc..e6f901d5c 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -175,6 +175,15 @@ class User extends AbstractModel return in_array('temp', $this->identity); } + /** + * 返回是否管理员 + * @return bool + */ + public function isAdmin() + { + return in_array('admin', $this->identity); + } + /** * 判断是否管理员 */ diff --git a/resources/assets/js/pages/manage/messenger.vue b/resources/assets/js/pages/manage/messenger.vue index e14a7e996..8829e546a 100644 --- a/resources/assets/js/pages/manage/messenger.vue +++ b/resources/assets/js/pages/manage/messenger.vue @@ -103,7 +103,10 @@