Browse Source

完善列出角色下的用户

tangs 5 years ago
parent
commit
33888bb39a

+ 5 - 2
app/Http/Controllers/PermissionController.php

@@ -3,6 +3,7 @@
 namespace App\Http\Controllers;
 
 use App\Models;
+use foo\bar;
 use Illuminate\Http\Request;
 use Mockery\Exception;
 use Illuminate\Support\Facades\Log;
@@ -22,9 +23,11 @@ class PermissionController extends Controller
     {
         // 这里的uid从中间件那里获得
 //        $currentUid = $request->input("currentUid");
-        $uid = $request->input("uid"); // 被修改权限用户的id
+        $ownerId = $request->input("ownerId");
+        $ownerType = $request->input("ownerType");
         $barIds = $request->input("barIds");
 
+
         $currentUid = 1;
         // 判断当前用户是否有权分配权限
         $userRole = new Models\UserRole();
@@ -36,7 +39,7 @@ class PermissionController extends Controller
 
         // 有权分配
         $userActionBar = new Models\UserActionBar();
-        $userActionBar->AddUserActionBar($uid, $barIds, "");
+        $userActionBar->AddUserActionBar($ownerType, $ownerId, $barIds);
         return "success";
     }
 

+ 36 - 0
app/Http/Controllers/RoleController.php

@@ -92,4 +92,40 @@ class RoleController extends Controller
         $result = $role->ListRole($params);
         return $result;
     }
+
+    public function LoadRole(Request $request)
+    {
+        $uid = (int)$request->input("currentUid");
+        if ($uid < 1) {
+            $this->fail(EMPTY_USER_ID, $this->error[EMPTY_USER_ID]);
+        }
+
+    }
+
+    /**
+     * 列出角色下的用户
+     *
+     * @param Request $request
+     * @return array|\Illuminate\Http\JsonResponse
+     */
+    public function LoadRoleUsers(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            "keyword" => "max: 255",
+            "page" => "integer|min:1",
+            "pageCount" => "integer|min:1"
+        ]);
+        if ($validator->fails()) {
+            return $this->fail(REQUEST_PARAM_ERROR, $this->error[REQUEST_PARAM_ERROR], $validator->errors());
+        }
+
+        $keyword = $request->input("keyword");
+        $page = $request->input("page");
+        $pageCount = $request->input("pageCount");
+
+        $role = new Models\Role();
+        $data = $role->LoadRoleUsers($keyword, $page, $pageCount);
+
+        return $data;
+    }
 }

+ 8 - 0
app/Models/Order.php

@@ -0,0 +1,8 @@
+<?php
+
+use Illuminate\Database\Eloquent\Model;
+
+class Order extends Model
+{
+
+}

+ 0 - 89
app/Models/Permission.php

@@ -1,89 +0,0 @@
-<?php
-
-namespace App\Models;
-
-use Illuminate\Database\Eloquent\Model;
-use Illuminate\Support\Facades\DB;
-use Illuminate\Support\Facades\Log;
-
-const SUPER_ADMIN = 1; // 超级管理员,拥有所有权限
-const SYSTEM_ADMIN = 2; // 系统管理员,交付产品时可提供的最高管理员账号
-const GUEST_USER = 128; //普通用户
-
-class Permission extends Model
-{
-    protected $table = "permission";
-    public $timestamps = false;
-
-    // 此时应该初始化需要的管理员账号
-    function __construct(array $attributes = [])
-    {
-        parent::__construct($attributes);
-    }
-
-    /**
-     * @param string $uid
-     * @param int $rights
-     * @return string
-     */
-    public function IsAccess(string $uid, int $rights)
-    {
-//        $this->where("uid",$uid)
-//            ->where("is_del", false)
-//            ->where("status", "normal")
-//            ->where("role", "&");
-        $data = DB::select("select uid from permission where uid = ? and is_del = false and status = normal and role & ? > 0;", [$uid, $rights]);
-        if (!$data) {
-            return "permission denied";
-        }
-        return $data->uid;
-    }
-
-    /**
-     * @param string $adminUid
-     * @param string $uid
-     * @param string $rights
-     * @return string
-     */
-    public function ModifyRole(string $adminUid, string $uid, string $rights)
-    {
-        // Verify that the current user has permission to modify permissions
-        $rows = DB::select("select uid, role from permission where uid = ? and is_del = false and status = ? and role & ? > 0;", [$adminUid, "normal", SUPER_ADMIN | SYSTEM_ADMIN]);
-        if (!$rows) {
-            log::debug("ModifyRole with adminUid: " . $adminUid . ", uid: " . $uid . ", rights: " . $rights . " but permission denied");
-            return "permission denied";
-        }
-
-        $data = null;
-        foreach ($rows as $d){
-            $data = $d;
-            break;
-        }
-
-        if (!$data) {
-            log::debug("ModifyRole with adminUid: " . $adminUid . ", uid: " . $uid . ", rights: " . $rights . " but permission denied");
-            return "permission denied";
-        }
-
-        if ($data->uid < 1) {
-            log::debug("ModifyRole with adminUid: " . $adminUid . ", uid: " . $uid . ", rights: " . $rights . " but invalid admin uid: " . $adminUid);
-            return "invalid admin uid: " . $adminUid;
-        }
-
-        if ($data->role >= $rights) {
-            log::debug("ModifyRole with adminUid: " . $adminUid . ", admin role: ". $data->uid . ", uid: " . $uid . ", rights: " . $rights . " but have no permission to grant higher rights");
-            return "have no permission to grant higher rights";
-        }
-
-        // modify the user's rights
-        $result = $this->where("uid", $uid)
-            ->where("is_del", false)
-            ->where("status", "normal")
-            ->update(["role" => $rights]);
-        if (!$result) {
-            return "grant rights failed";
-        }
-        return "success";
-    }
-}
-

+ 54 - 0
app/Models/Role.php

@@ -3,6 +3,7 @@
 namespace App\Models;
 
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Support\Facades\Log;
 
 /**
  * 该类调用时应该在http控制层限制管理员才能调用
@@ -122,4 +123,57 @@ class Role extends Model
         return $data;
     }
 
+    public function LoadRole($uid)
+    {
+        $roles = $this->where("user_id", $uid)->where("is_del", false)->get();
+        if (count($roles) == 0) {
+            return ["code" => 0];
+        }
+        $roleIds = [];
+        foreach ($roles as $role) {
+            array_push($roleIds, $role["role_id"]);
+        }
+        return [];
+    }
+
+    /**
+     * 列出角色下的用户,如果列出指定角色下的用户,可以keyword指定为角色名即可.
+     *
+     * @param $keyword 根据role的名称来列出,支持模糊搜索
+     * @param $page 暂时没用
+     * @param $pageCount 暂时没用
+     * @return array
+     */
+    public function LoadRoleUsers($keyword, $page, $pageCount)
+    {
+//        print $keyword;
+//        print $page;
+//        print $pageCount;
+
+        // load all roles
+        $roleQuery = $this->select("id", "name", "description");
+        if ($keyword != "") {
+            $roleQuery = $roleQuery->where("name", "like", "%" . $keyword . "%")->where("is_del", false);
+        }
+        $roles = $roleQuery->get();
+
+        if (count($roles) < 1) {
+            return [];
+        }
+
+        // load users by role ids.
+        $rids = [];
+        foreach ($roles as $role) {
+            array_push($rids, $role["id"]);
+        }
+
+        // load users with roles.
+        $roleUsers = new UserRole();
+        $users = $roleUsers->LoadUsersWithRoles($rids);
+
+        // return result
+        $users["roles"] = $roles;
+        return $users;
+    }
+
 }

+ 17 - 0
app/Models/User.php

@@ -104,5 +104,22 @@ class User extends Model
             ->paginate($pageCount, ["*"], "page", $page);
         return $data;
     }
+
+    public function ListUserByIds($ids)
+    {
+        $users = $this->select("id", "username", "nickname", "icon")
+            ->whereIn("id", $ids)->where("is_del", false)->get();
+        return $users;
+    }
+
+    public function ListUserByIds_KV($ids)
+    {
+        $users = $this->ListUserByIds($ids);
+        $data = [];
+        foreach ($users as $user) {
+            $data[$user["id"]] = $user;
+        }
+        return $data;
+    }
 }
 

+ 19 - 0
app/Models/UserRole.php

@@ -46,4 +46,23 @@ class UserRole extends Model
 
         return $role;
     }
+
+    public function LoadUsersWithRoles($rids)
+    {
+        $user_roles = $this->select("id", "user_id", "role_id", "status")
+            ->whereIn("role_id", $rids)->where("is_del", false)
+            ->get();
+        $uids = [];
+        foreach ($user_roles as $ur) {
+            array_push($uids, $ur["user_id"]);
+        }
+        if (count($uids) == 0) {
+            return ["user_role" => [], "userInfo" => null];
+        }
+
+        // load user info
+        $u = new User();
+        $users = $u->ListUserByIds_KV($uids);
+        return ["user_role" => $user_roles, "userInfo" => $users];
+    }
 }

+ 15 - 9
app/test/array.php

@@ -1,15 +1,21 @@
 <?php
 
+$arr = array("a"=>"b");
+echo $arr;
 
-class T {
-    public function A(array $a){
-        echo ($a["halo"]);
-    }
-}
+print $arr;
+//class T {
+//    public function A(array $a){
+//        echo ($a["halo"]);
+//    }
+//}
 
-$arr = ["halo" => "abc"];
+//$arr = ["halo" => "abc"];
+
+//$t = new T();
+//$t->A($arr);
+
+//echo (json_encode($arr));
+//echo($arr);
 
-$t = new T();
-$t->A($arr);
 
-echo (json_encode($arr));

BIN
database/sql/sql一览图.png


+ 3 - 0
routes/web.php

@@ -29,6 +29,9 @@ Route::get("modifyRole", "RoleController@ModifyRole");
 Route::get("deleteRole", "RoleController@DeleteRole");
 Route::get("listRole", "RoleController@ListRole");
 
+// user role
+Route::get("loadRoleUsers", "RoleController@LoadRoleUsers");
+
 // user action bar
 Route::get("addUserActionBar", "UserActionBarController@AddUserActionBar");
 Route::get("removeUserActionBar", "UserActionBarController@RemoveUserActionBar");