UserController.php 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\User\ChangePasswordRequest;
  5. use App\Http\Requests\User\StoreUserRequest;
  6. use App\Http\Requests\User\UpdateUserRequest;
  7. use App\Models\Role;
  8. use App\Models\User;
  9. use Illuminate\Support\Facades\Hash;
  10. class UserController extends Controller
  11. {
  12. public function __construct()
  13. {
  14. $this->authorizeResource(User::class);
  15. }
  16. /**
  17. * Display a listing of the resource.
  18. *
  19. * @return \Inertia\Response
  20. */
  21. public function index()
  22. {
  23. return inertia("Users/Index", [
  24. "initialSearch" => request("search"),
  25. "users" => User::filter(request()->only("search"))
  26. ->latest()
  27. ->paginate(10)
  28. ->withQueryString()
  29. ->through(
  30. fn($user) => [
  31. "id" => $user->id,
  32. "name" => $user->name,
  33. "username" => $user->username,
  34. "role" => $user->role->name,
  35. "role_id" => $user->role_id,
  36. "status" => $user->status,
  37. ]
  38. ),
  39. ]);
  40. }
  41. /**
  42. * Show the form for creating a new resource.
  43. *
  44. * @return \Inertia\Response
  45. */
  46. public function create()
  47. {
  48. return inertia("Users/Create", [
  49. "roles" => Role::whereNotIn("id", [1])
  50. ->get()
  51. ->transform(
  52. fn($role) => [
  53. "label" => $role->name,
  54. "value" => $role->id,
  55. ]
  56. ),
  57. ]);
  58. }
  59. /**
  60. * Store a newly created resource in storage.
  61. *
  62. * @param \Illuminate\Http\Request $request
  63. * @return \Illuminate\Http\Response
  64. */
  65. public function store(StoreUserRequest $request)
  66. {
  67. User::create($request->validated());
  68. return back()->with("success", __("messages.success.store.user"));
  69. }
  70. /**
  71. * Display the specified resource.
  72. *
  73. * @param User $user
  74. * @return \Inertia\Response
  75. */
  76. public function show(User $user)
  77. {
  78. return inertia("Users/Show", [
  79. "user" => $user,
  80. "roles" => Role::whereNotIn("id", [1])
  81. ->get()
  82. ->transform(
  83. fn($role) => [
  84. "label" => $role->name,
  85. "value" => $role->id,
  86. ]
  87. ),
  88. ]);
  89. }
  90. /**
  91. * Show the form for editing the specified resource.
  92. *
  93. * @param User $user
  94. * @return \Inertia\Response
  95. */
  96. public function edit(User $user)
  97. {
  98. return inertia("Users/Edit", [
  99. "user" => [
  100. "id" => $user->id,
  101. "name" => $user->name,
  102. "username" => $user->username,
  103. "role_id" => $user->role_id,
  104. "status" => $user->getRawOriginal("status"),
  105. ],
  106. "roles" => Role::whereNotIn("id", [1])
  107. ->get()
  108. ->transform(
  109. fn($role) => [
  110. "label" => $role->name,
  111. "value" => $role->id,
  112. ]
  113. ),
  114. ]);
  115. }
  116. /**
  117. * Update the specified resource in storage.
  118. *
  119. * @param \Illuminate\Http\Request $request
  120. * @param User $user
  121. * @return \Illuminate\Http\Response
  122. */
  123. public function update(UpdateUserRequest $request, User $user)
  124. {
  125. $user->update($request->validated());
  126. return back()->with("success", __("messages.success.update.user"));
  127. }
  128. /**
  129. * Remove the specified resource from storage.
  130. *
  131. * @param User $user
  132. * @return \Illuminate\Http\Response
  133. */
  134. public function destroy(User $user)
  135. {
  136. $user->delete();
  137. return to_route("users.index")->with(
  138. "success",
  139. __("messages.success.destroy.user")
  140. );
  141. }
  142. /**
  143. * Block user
  144. *
  145. * @param User $user
  146. * @return \Illuminate\Http\Response
  147. */
  148. public function block(User $user)
  149. {
  150. $user->status = !$user->getRawOriginal("status");
  151. $user->update();
  152. if ($user->getRawOriginal("status")) {
  153. $msg = __("messages.user.active_user");
  154. } else {
  155. $msg = __("messages.user.no_active_user");
  156. }
  157. return back()->with("success", $msg);
  158. }
  159. /**
  160. * Change Password
  161. *
  162. * @param \Illuminate\Http\Request $request
  163. * @return \Illuminate\Http\Response
  164. */
  165. public function changePassword(ChangePasswordRequest $request)
  166. {
  167. if (!Hash::check($request->old_password, $request->user()->password)) {
  168. return back()->with(
  169. "error",
  170. __("messages.error.store.change_password")
  171. );
  172. }
  173. $request
  174. ->user()
  175. ->update(["password" => bcrypt($request->new_password)]);
  176. return back()->with(
  177. "success",
  178. __("messages.success.update.change_password")
  179. );
  180. }
  181. public function resetPassword(User $user)
  182. {
  183. $user->update(["password" => bcrypt($user->username)]);
  184. return back()->with(
  185. "success",
  186. __("messages.success.store.reset_password")
  187. );
  188. }
  189. }