fix crud users

This commit is contained in:
arifal
2025-02-19 11:23:15 +07:00
parent 006c008542
commit e8da7193ef
6 changed files with 63 additions and 17 deletions

View File

@@ -43,15 +43,15 @@ class UsersController extends Controller
DB::beginTransaction();
try{
$user = User::create([
'name' => $validate_data->name,
'email' => $validate_data->email,
'password' => Hash::make($validate_data->password),
'firstname' => $validate_data->firstname,
'lastname' => $validate_data->lastname,
'position' => $validate_data->position
'name' => $validate_data['name'],
'email' => $validate_data['email'],
'password' => Hash::make($validate_data['password']),
'firstname' => $validate_data['firstname'],
'lastname' => $validate_data['lastname'],
'position' => $validate_data['position'],
]);
$user->roles()->attach($request->role_id);
$user->roles()->attach((int) $validate_data['role_id']);
DB::commit();
return response()->json(['message' => 'Successfully created'],201);
@@ -60,4 +60,27 @@ class UsersController extends Controller
return response()->json(['message' => $e->getMessage()],500);
};
}
public function update(UsersRequest $request, $id){
try{
$validate_data = $request->validated();
$user = User::findOrFail($id);
DB::beginTransaction();
$user->update([
'name' => $validate_data['name'],
'email' => $validate_data['email'],
'firstname' => $validate_data['firstname'],
'lastname' => $validate_data['lastname'],
'position' => $validate_data['position']
]);
$user->roles()->sync($request->role_id);
DB::commit();
return response()->json(['message' => 'Successfully updated'], 200);
}catch(\Exception $e){
DB::rollBack();
return response()->json(['message' => $e->getMessage()],500);
}
}
}

View File

@@ -22,7 +22,7 @@ class UsersRequest extends FormRequest
*/
public function rules(): array
{
$userId = $this->route('user'); // Get user ID from route (used in update)
$userId = $this->route('users'); // Get user ID from route (used in update)
return [
'name' => ['required', 'string', 'max:255'],
@@ -31,7 +31,7 @@ class UsersRequest extends FormRequest
'string',
'email',
'max:255',
Rule::unique('users')->ignore($userId), // Ignore the user's own email when updating
Rule::unique('users')->ignore($userId)
],
'password' => [$this->isMethod('post') ? 'required' : 'nullable', 'confirmed', 'max:255'],
'firstname' => ['required', 'string', 'max:255'],

View File

@@ -19,15 +19,24 @@ document.addEventListener("DOMContentLoaded", function (e) {
submitButton.disabled = true;
spinner.classList.remove("d-none");
let jsonData = {};
formData.forEach((value, key) => {
jsonData[key] = value;
});
console.log(jsonData);
try {
let response = await fetch(form.action, {
method: "POST",
headers: {
"X-CSRF-TOKEN": document
.querySelector('meta[name="csrf-token"]')
.getAttribute("content"),
"Content-Type": "application/json",
Accept: "application/json",
Authorization: `Bearer ${document
.querySelector('meta[name="api-token"]')
.getAttribute("content")}`,
},
body: formData,
body: JSON.stringify(jsonData),
});
if (response.ok) {

View File

@@ -8,8 +8,13 @@
<div class="row d-flex justify-content-center">
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<div class="d-flex justify-content-end">
<a href="{{ route('users.index') }}" class="btn btn-sm btn-secondary me-2">Back</a>
</div>
</div>
<div class="card-body">
<form id="formCreateUsers" action="{{route('users.store')}}" method="POST">
<form id="formCreateUsers" action="{{route('api.users.store')}}" method="POST">
@csrf
<div class="mb-3">
<label class="form-label" for="name">Name</label>

View File

@@ -8,6 +8,11 @@
<div class="row d-flex justify-content-center">
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<div class="d-flex justify-content-end">
<a href="{{ route('users.index') }}" class="btn btn-sm btn-secondary me-2">Back</a>
</div>
</div>
<div class="card-body">
<form id="formUpdateUsers" action="{{ route('users.update', $user->id)}}" method="post">
@csrf

View File

@@ -21,8 +21,12 @@ use Illuminate\Support\Facades\Route;
Route::post('/login', [UsersController::class, 'login'])->name('api.user.login');
Route::group(['middleware' => 'auth:sanctum'], function (){
// users
Route::get('/users', [UsersController::class, 'index'])->name('users');
Route::post('/logout', [UsersController::class, 'logout'])->name('api.user.logout');
Route::controller(UsersController::class)->group(function(){
Route::get('/users', 'index')->name('api.users');
Route::post('/users', 'store')->name('api.users.store');
Route::put('/users/{id}', 'update')->name('api.users.update');
Route::post('/logout','logout')->name('api.users.logout');
});
// global settings
Route::apiResource('global-settings', GlobalSettingsController::class);