UserController.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <?php
  2. namespace Modules\User\Http\Controllers;
  3. use Catch\Base\CatchController as Controller;
  4. use Catch\Support\Module\ModuleRepository;
  5. use Illuminate\Contracts\Auth\Authenticatable;
  6. use Illuminate\Contracts\Pagination\LengthAwarePaginator;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\DB;
  9. use Modules\User\Models\LogLogin;
  10. use Modules\User\Models\LogOperate;
  11. use Modules\User\Models\User;
  12. use Psr\Container\ContainerExceptionInterface;
  13. use Psr\Container\NotFoundExceptionInterface;
  14. class UserController extends Controller
  15. {
  16. public function __construct(
  17. protected readonly User $user
  18. ) {
  19. }
  20. /**
  21. * get list
  22. *
  23. * @return mixed
  24. */
  25. public function index()
  26. {
  27. return $this->user->getList();
  28. }
  29. /**
  30. * store
  31. *
  32. * @param Request $request
  33. * @return false|mixed
  34. */
  35. public function store(Request $request)
  36. {
  37. $key = $this->user->storeBy($request->all());
  38. if($key) {
  39. $user = $this->user->firstBy($key);
  40. if ($user->roles->pluck('identify')->contains('cp') &&
  41. $request->input('cp_name') ) {
  42. DB::table('user_belong_to_cp')
  43. ->updateOrInsert([
  44. 'user_id' => $user->id,
  45. ],[
  46. 'cp_name' => $request->input('cp_name'),
  47. 'is_enabled' => 1
  48. ]);
  49. }
  50. }
  51. return $key;
  52. }
  53. /**
  54. * show
  55. *
  56. * @param $id
  57. * @return mixed
  58. */
  59. public function show($id)
  60. {
  61. $user = $this->user->firstBy($id)->makeHidden('password');
  62. if (app(ModuleRepository::class)->enabled('permissions')) {
  63. $user->setRelations([
  64. 'roles' => $user->roles->pluck('id'),
  65. 'jobs' => $user->jobs->pluck('id'),
  66. 'role_identifies' => $user->roles->pluck('identify'),
  67. ]);
  68. if($user->role_identifies->contains('cp')) {
  69. $user->cp_name = DB::table('user_belong_to_cp')
  70. ->where(['is_enabled' => 1, 'user_id' => $user->id])
  71. ->value('cp_name');
  72. } else {
  73. $user->cp_name = null;
  74. }
  75. }
  76. return $user;
  77. }
  78. /**
  79. * update
  80. *
  81. * @param $id
  82. * @param Request $request
  83. * @return mixed
  84. */
  85. public function update($id, Request $request)
  86. {
  87. $res = $this->user->updateBy($id, $request->all());
  88. $user = $this->user->firstBy($id);
  89. if ($user->roles->pluck('identify')->contains('cp') &&
  90. $request->input('cp_name') ) {
  91. DB::table('user_belong_to_cp')
  92. ->updateOrInsert([
  93. 'user_id' => $user->id,
  94. ],[
  95. 'cp_name' => $request->input('cp_name'),
  96. 'is_enabled' => 1
  97. ]);
  98. }
  99. return $res;
  100. }
  101. /**
  102. * destroy
  103. *
  104. * @param $id
  105. * @return bool|null
  106. */
  107. public function destroy($id)
  108. {
  109. if ($this->user->deleteBy($id)) {
  110. // 撤销用户的所有令牌
  111. $this->user->tokens()->delete();
  112. }
  113. return true;
  114. }
  115. /**
  116. * enable
  117. *
  118. * @param $id
  119. * @return bool
  120. */
  121. public function enable($id)
  122. {
  123. return $this->user->toggleBy($id);
  124. }
  125. /**
  126. * online user
  127. *
  128. * @return Authenticatable
  129. */
  130. public function online(Request $request)
  131. {
  132. /* @var User $user */
  133. $user = $this->getLoginUser()->withPermissions();
  134. $showApp = $request->get('app');
  135. $user->showPermissions($showApp);
  136. if ($request->isMethod('post')) {
  137. return $user->updateBy($user->id, $request->all());
  138. }
  139. unset($user->password);
  140. return $user;
  141. }
  142. /**
  143. * login log
  144. * @param LogLogin $logLogin
  145. * @return LengthAwarePaginator
  146. * @throws ContainerExceptionInterface
  147. * @throws NotFoundExceptionInterface
  148. */
  149. public function loginLog(LogLogin $logLogin)
  150. {
  151. $user = $this->getLoginUser();
  152. return $logLogin->getUserLogBy($user->isSuperAdmin() ? null : $user->email);
  153. }
  154. public function operateLog(LogOperate $logOperate, Request $request)
  155. {
  156. $scope = $request->get('scope', 'self');
  157. return $logOperate->setBeforeGetList(function ($builder) use ($scope){
  158. if ($scope == 'self') {
  159. return $builder->where('creator_id', $this->getLoginUserId());
  160. }
  161. return $builder;
  162. })->getList();
  163. }
  164. }