SystemModelHasRolesController.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace App\Http\Controllers\Admins;
  3. use App\Modes\SystemUser;
  4. use App\Modes\User;
  5. use Illuminate\Http\Request;
  6. use App\Http\Controllers\Controller;
  7. use Illuminate\Support\Facades\Auth;
  8. use Spatie\Permission\Models\Role;
  9. class SystemModelHasRolesController extends Controller
  10. {
  11. /**
  12. * 给管理员分配角色
  13. * @author fatty
  14. * @date 2019/1/7
  15. * @param $id
  16. * @param $roles
  17. * @description
  18. */
  19. public function create(Request $request)
  20. {
  21. if($request->post('roleid')==1){
  22. return showJsonErr('抱歉,该用户不能授予超级管理员权限');
  23. }
  24. $systemUser = User::find($request->post('suid'));
  25. // 判断拥有管理权限的用户才能授予角色
  26. /*if (!in_array($systemUser->isSuper, [2, 3])) {
  27. return showJsonErr('抱歉,该用户不能授予管理权限.');
  28. }*/
  29. foreach ($systemUser->roles as $role) {
  30. $systemUser->removeRole($role);
  31. }
  32. $role = Role::findById($request->post('roleid'), config('permission.guard'));
  33. return showJson(101, 1001, $systemUser->assignRole($role));
  34. }
  35. /**
  36. * 管理员拥有的权限
  37. * @author fatty
  38. * @date 2019/1/8
  39. * @param $id
  40. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  41. * @throws \Exception
  42. * @description
  43. */
  44. public function show($id)
  45. {
  46. $systemUser = User::find($id);
  47. return showJson(101, 1001, [
  48. 'role' => $systemUser->roles,
  49. 'permission' => $systemUser->getPermissionsViaRoles()
  50. ]);
  51. }
  52. /**
  53. * 角色可以从管理员中删除
  54. * @author fatty
  55. * @date 2019/1/8
  56. * @param $uid
  57. * @description
  58. */
  59. public function removeRole(Request $request)
  60. {
  61. $user = User::find($request->post('suid'));
  62. if ($user->is_super == 1) {
  63. return showJsonErr('抱歉,您没有权限操作');
  64. }
  65. $role = Role::findById($request->post('roleid'), config('permission.guard'));
  66. $user->removeRole($role);
  67. return showJsonSucc('移除角色成功', $user->roles());
  68. }
  69. }