UserController.php 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  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" => $user,
  100. "roles" => Role::whereNotIn("id", [1])
  101. ->get()
  102. ->transform(
  103. fn($role) => [
  104. "label" => $role->name,
  105. "value" => $role->id,
  106. ]
  107. ),
  108. ]);
  109. }
  110. /**
  111. * Update the specified resource in storage.
  112. *
  113. * @param \Illuminate\Http\Request $request
  114. * @param User $user
  115. * @return \Illuminate\Http\Response
  116. */
  117. public function update(UpdateUserRequest $request, User $user)
  118. {
  119. $user->update($request->validated());
  120. return back()->with("success", __("messages.success.update.user"));
  121. }
  122. /**
  123. * Remove the specified resource from storage.
  124. *
  125. * @param User $user
  126. * @return \Illuminate\Http\Response
  127. */
  128. public function destroy(User $user)
  129. {
  130. $user->delete();
  131. return to_route("users.index")->with(
  132. "success",
  133. __("messages.success.destroy.user")
  134. );
  135. }
  136. /**
  137. * Block user
  138. *
  139. * @param User $user
  140. * @return \Illuminate\Http\Response
  141. */
  142. public function block(User $user)
  143. {
  144. $user->status = !$user->getRawOriginal("status");
  145. $user->update();
  146. if ($user->getRawOriginal("status")) {
  147. $msg = __("messages.user.active_user");
  148. } else {
  149. $msg = __("messages.user.no_active_user");
  150. }
  151. return back()->with("success", $msg);
  152. }
  153. /**
  154. * Change Password
  155. *
  156. * @param \Illuminate\Http\Request $request
  157. * @return \Illuminate\Http\Response
  158. */
  159. public function changePassword(ChangePasswordRequest $request)
  160. {
  161. if (!Hash::check($request->old_password, $request->user()->password)) {
  162. return back()->with(
  163. "error",
  164. __("messages.error.store.change_password")
  165. );
  166. }
  167. $request
  168. ->user()
  169. ->update(["password" => bcrypt($request->new_password)]);
  170. return back()->with(
  171. "success",
  172. __("messages.success.update.change_password")
  173. );
  174. }
  175. public function resetPassword(User $user)
  176. {
  177. $user->update(["password" => bcrypt("12345678")]);
  178. return back()->with(
  179. "success",
  180. __("messages.success.store.reset_password")
  181. );
  182. }
  183. }