UserController.php 4.6 KB

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