I want to create dynamic auth by adding an update profile function, but after I tried it, nothing changed.
I have tried the put and post methods, but the results are still the same. Is there a special method to create an update form from Laravel’s default auth ?
Controller :
public function update(Request $request,User $user)
{
$this->validate($request, [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users,email',
'password' => 'nullable|string|min:8|confirmed',
'current_password' => 'required_with:password|current_password',
'foto' => 'nullable|mimes:jpg,jpeg,bmp,png|max:100000',
]);
//for user
$user->user_id = $request->user()->id;
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->password = $request->input('password');
// Cek apakah password lama benar jika password baru diisi
if ($request->filled('password')) {
if (!Hash::check($request->input('current_password'), $user->password)) {
return redirect()->back()->withErrors(['current_password' => 'The provided password does not match our records.']);
}
$user->password = Hash::make($request->input('password'));
}
//for profile
$user->role = $request->input('role');
// Jika ada file foto yang diunggah, simpan
if (isset($user['foto']) && $user['foto'] instanceof IlluminateHttpUploadedFile) {
if ($user['foto']->isValid()) {
// Simpan foto dan dapatkan path relatif
$path = $user['foto']->store('foto_user', 'public');
// Simpan path relatif ke database
$user->foto = $path;
$user->save();
}
}
$user->save();
return redirect()->route('profile')->with('pesan', 'Data Berhasil Diperbarui !!!');
}
View
<div class="modal fade" id="updateProfileModal" tabindex="-1" role="dialog" aria-labelledby="updateProfileModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="updateProfileModalLabel">Update Profile</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<!-- Form untuk update profil -->
<form action="{{ route('updateprofile') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" id="name" name="name" value="{{ Auth::user()->name }}" required>
@error('name')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="email" class="form-control" id="email" name="email" value="{{ Auth::user()->email }}" required>
@error('email')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group">
<label for="role">Role</label>
<select class="form-control" id="role" name="role" required>
<option value="1" {{ Auth::user()->role == 1 ? 'selected' : '' }}>Admin Up2d</option>
<option value="2" {{ Auth::user()->role == 2 ? 'selected' : '' }}>Har</option>
<option value="3" {{ Auth::user()->role == 3 ? 'selected' : '' }}>Perencanaan</option>
<option value="4" {{ Auth::user()->role == 4 ? 'selected' : '' }}>Fasop</option>
<option value="5" {{ Auth::user()->role == 5 ? 'selected' : '' }}>Operasi</option>
<option value="6" {{ Auth::user()->role == 6 ? 'selected' : '' }}>UP3</option>
</select>
</div>
<div class="form-group">
<label for="current_password">Current Password</label>
<input type="password" class="form-control" id="current_password" name="current_password" placeholder="Enter your current password">
@error('current_password')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group">
<label for="password">New Password</label>
<input type="password" class="form-control" id="password" name="password" placeholder="Leave empty to keep current password" autocomplete="new-password">
@error('password')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group">
<label for="password_confirmation">Confirm New Password</label>
<input type="password" class="form-control" id="password_confirmation" name="password_confirmation">
@error('password_confirmation')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group">
<div class="input-group custom-file-button">
<label class="input-group-text">Profile Photo</label>
<input type="file" class="form-control @error('foto') is-invalid @enderror" name="foto">
<div class="invalid-feedback">
@error('foto')
{{ $message }}
@enderror
</div>
</div>
@if(Auth::user()->foto)
<img src="{{ Storage::url(Auth::user()->foto) }}" alt="..." class="img-circle profile_img">
@else
<img src="{{ asset('storage/default/user.png') }}" alt="..." class="img-circle profile_img">
@endif
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Update Profile</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</form>
</div>
</div>
</div>
And Route
Route::post('/profile/update', [AppHttpControllersSettingsController::class, 'update'])->name('updateprofile');
So, what do you think is wrong and missing from my code?