Compare commits
1 Commits
fix/dashbo
...
fix/crud-v
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e8da7193ef |
@@ -38,20 +38,20 @@ class UsersController extends Controller
|
|||||||
return response()->json(['message' => 'logged out successfully']);
|
return response()->json(['message' => 'logged out successfully']);
|
||||||
}
|
}
|
||||||
public function store(UsersRequest $request){
|
public function store(UsersRequest $request){
|
||||||
$validate_data = $request->validated();
|
$validate_data = $request->validated();
|
||||||
|
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
try{
|
try{
|
||||||
$user = User::create([
|
$user = User::create([
|
||||||
'name' => $validate_data->name,
|
'name' => $validate_data['name'],
|
||||||
'email' => $validate_data->email,
|
'email' => $validate_data['email'],
|
||||||
'password' => Hash::make($validate_data->password),
|
'password' => Hash::make($validate_data['password']),
|
||||||
'firstname' => $validate_data->firstname,
|
'firstname' => $validate_data['firstname'],
|
||||||
'lastname' => $validate_data->lastname,
|
'lastname' => $validate_data['lastname'],
|
||||||
'position' => $validate_data->position
|
'position' => $validate_data['position'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$user->roles()->attach($request->role_id);
|
$user->roles()->attach((int) $validate_data['role_id']);
|
||||||
|
|
||||||
DB::commit();
|
DB::commit();
|
||||||
return response()->json(['message' => 'Successfully created'],201);
|
return response()->json(['message' => 'Successfully created'],201);
|
||||||
@@ -60,4 +60,27 @@ class UsersController extends Controller
|
|||||||
return response()->json(['message' => $e->getMessage()],500);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class UsersRequest extends FormRequest
|
|||||||
*/
|
*/
|
||||||
public function rules(): array
|
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 [
|
return [
|
||||||
'name' => ['required', 'string', 'max:255'],
|
'name' => ['required', 'string', 'max:255'],
|
||||||
@@ -31,7 +31,7 @@ class UsersRequest extends FormRequest
|
|||||||
'string',
|
'string',
|
||||||
'email',
|
'email',
|
||||||
'max:255',
|
'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'],
|
'password' => [$this->isMethod('post') ? 'required' : 'nullable', 'confirmed', 'max:255'],
|
||||||
'firstname' => ['required', 'string', 'max:255'],
|
'firstname' => ['required', 'string', 'max:255'],
|
||||||
|
|||||||
@@ -19,15 +19,24 @@ document.addEventListener("DOMContentLoaded", function (e) {
|
|||||||
submitButton.disabled = true;
|
submitButton.disabled = true;
|
||||||
spinner.classList.remove("d-none");
|
spinner.classList.remove("d-none");
|
||||||
|
|
||||||
|
let jsonData = {};
|
||||||
|
formData.forEach((value, key) => {
|
||||||
|
jsonData[key] = value;
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(jsonData);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let response = await fetch(form.action, {
|
let response = await fetch(form.action, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
"X-CSRF-TOKEN": document
|
"Content-Type": "application/json",
|
||||||
.querySelector('meta[name="csrf-token"]')
|
Accept: "application/json",
|
||||||
.getAttribute("content"),
|
Authorization: `Bearer ${document
|
||||||
|
.querySelector('meta[name="api-token"]')
|
||||||
|
.getAttribute("content")}`,
|
||||||
},
|
},
|
||||||
body: formData,
|
body: JSON.stringify(jsonData),
|
||||||
});
|
});
|
||||||
|
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
|
|||||||
@@ -8,8 +8,13 @@
|
|||||||
<div class="row d-flex justify-content-center">
|
<div class="row d-flex justify-content-center">
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card">
|
<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">
|
<div class="card-body">
|
||||||
<form id="formCreateUsers" action="{{route('users.store')}}" method="POST">
|
<form id="formCreateUsers" action="{{route('api.users.store')}}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label" for="name">Name</label>
|
<label class="form-label" for="name">Name</label>
|
||||||
|
|||||||
@@ -8,6 +8,11 @@
|
|||||||
<div class="row d-flex justify-content-center">
|
<div class="row d-flex justify-content-center">
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card">
|
<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">
|
<div class="card-body">
|
||||||
<form id="formUpdateUsers" action="{{ route('users.update', $user->id)}}" method="post">
|
<form id="formUpdateUsers" action="{{ route('users.update', $user->id)}}" method="post">
|
||||||
@csrf
|
@csrf
|
||||||
|
|||||||
@@ -21,8 +21,12 @@ use Illuminate\Support\Facades\Route;
|
|||||||
Route::post('/login', [UsersController::class, 'login'])->name('api.user.login');
|
Route::post('/login', [UsersController::class, 'login'])->name('api.user.login');
|
||||||
Route::group(['middleware' => 'auth:sanctum'], function (){
|
Route::group(['middleware' => 'auth:sanctum'], function (){
|
||||||
// users
|
// users
|
||||||
Route::get('/users', [UsersController::class, 'index'])->name('users');
|
Route::controller(UsersController::class)->group(function(){
|
||||||
Route::post('/logout', [UsersController::class, 'logout'])->name('api.user.logout');
|
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
|
// global settings
|
||||||
Route::apiResource('global-settings', GlobalSettingsController::class);
|
Route::apiResource('global-settings', GlobalSettingsController::class);
|
||||||
|
|||||||
Reference in New Issue
Block a user