AdminUserController.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use Cache, DB;
  4. use Illuminate\Http\Request;
  5. use App\ModLog;
  6. use App\User;
  7. use App\Mail\AdminMessage;
  8. use Illuminate\Support\Facades\Mail;
  9. use App\Services\ModLogService;
  10. trait AdminUserController
  11. {
  12. public function users(Request $request)
  13. {
  14. $col = $request->query('col') ?? 'id';
  15. $dir = $request->query('dir') ?? 'desc';
  16. $users = User::select('id', 'username', 'status')
  17. ->withCount('statuses')
  18. ->orderBy($col, $dir)
  19. ->simplePaginate(10);
  20. return view('admin.users.home', compact('users'));
  21. }
  22. public function userShow(Request $request, $id)
  23. {
  24. $user = User::findOrFail($id);
  25. $profile = $user->profile;
  26. return view('admin.users.show', compact('user', 'profile'));
  27. }
  28. public function userEdit(Request $request, $id)
  29. {
  30. $user = User::findOrFail($id);
  31. $profile = $user->profile;
  32. return view('admin.users.edit', compact('user', 'profile'));
  33. }
  34. public function userEditSubmit(Request $request, $id)
  35. {
  36. $user = User::findOrFail($id);
  37. $profile = $user->profile;
  38. $changed = false;
  39. if($request->filled('name') && $request->input('name') != $user->name) {
  40. $user->name = $profile->name = $request->input('name');
  41. $changed = true;
  42. }
  43. if($request->filled('username') && $request->input('username') != $user->username) {
  44. $user->username = $profile->username = $request->input('username');
  45. $changed = true;
  46. }
  47. if($request->filled('email') && $request->input('email') != $user->email) {
  48. if(filter_var($request->input('email'), FILTER_VALIDATE_EMAIL) == false) {
  49. abort(500, 'Invalid email address');
  50. }
  51. $user->email = $request->input('email');
  52. $changed = true;
  53. }
  54. if($request->input('bio') != $profile->bio) {
  55. $profile->bio = $request->input('bio');
  56. $changed = true;
  57. }
  58. if($request->input('website') != $profile->website) {
  59. $profile->website = $request->input('website');
  60. $changed = true;
  61. }
  62. if($changed == true) {
  63. $profile->save();
  64. $user->save();
  65. }
  66. return redirect('/i/admin/users/show/' . $user->id);
  67. }
  68. public function userActivity(Request $request, $id)
  69. {
  70. $user = User::findOrFail($id);
  71. $profile = $user->profile;
  72. $logs = $user->accountLog()->orderByDesc('created_at')->paginate(10);
  73. return view('admin.users.activity', compact('user', 'profile', 'logs'));
  74. }
  75. public function userMessage(Request $request, $id)
  76. {
  77. $user = User::findOrFail($id);
  78. $profile = $user->profile;
  79. return view('admin.users.message', compact('user', 'profile'));
  80. }
  81. public function userMessageSend(Request $request, $id)
  82. {
  83. $this->validate($request, [
  84. 'message' => 'required|string|min:5|max:500'
  85. ]);
  86. $user = User::findOrFail($id);
  87. $profile = $user->profile;
  88. $message = $request->input('message');
  89. Mail::to($user->email)->send(new AdminMessage($message));
  90. ModLogService::boot()
  91. ->objectUid($user->id)
  92. ->objectId($user->id)
  93. ->objectType('App\User::class')
  94. ->user($request->user())
  95. ->action('admin.user.mail')
  96. ->metadata([
  97. 'message' => $message
  98. ])
  99. ->accessLevel('admin')
  100. ->save();
  101. return redirect('/i/admin/users/show/' . $user->id);
  102. }
  103. public function userModTools(Request $request, $id)
  104. {
  105. $user = User::findOrFail($id);
  106. $profile = $user->profile;
  107. return view('admin.users.modtools', compact('user', 'profile'));
  108. }
  109. public function userModLogs(Request $request, $id)
  110. {
  111. $user = User::findOrFail($id);
  112. $profile = $user->profile;
  113. $logs = ModLog::whereObjectUid($user->id)
  114. ->orderByDesc('created_at')
  115. ->simplePaginate(10);
  116. return view('admin.users.modlogs', compact('user', 'profile', 'logs'));
  117. }
  118. public function userModLogsMessage(Request $request, $id)
  119. {
  120. $this->validate($request, [
  121. 'message' => 'required|string|min:5|max:500'
  122. ]);
  123. $user = User::findOrFail($id);
  124. $profile = $user->profile;
  125. $msg = $request->input('message');
  126. ModLogService::boot()
  127. ->objectUid($user->id)
  128. ->objectId($user->id)
  129. ->objectType('App\User::class')
  130. ->user($request->user())
  131. ->message($msg)
  132. ->accessLevel('admin')
  133. ->save();
  134. return redirect('/i/admin/users/modlogs/' . $user->id);
  135. }
  136. public function userDelete(Request $request, $id)
  137. {
  138. $user = User::findOrFail($id);
  139. $profile = $user->profile;
  140. return view('admin.users.delete', compact('user', 'profile'));
  141. }
  142. }