validate([ 'current_password' => ['required'], 'password' => ['required', 'confirmed', Password::min(8)->mixedCase()->numbers()], ]); $user = $request->user(); if (! Hash::check($validated['current_password'], $user->password)) { throw ValidationException::withMessages([ 'current_password' => ['Het huidige wachtwoord is onjuist.'], ]); } $user->update([ 'password' => Hash::make($validated['password']), ]); // Revoke all OTHER tokens (keep current session) $currentToken = $user->currentAccessToken(); if ($currentToken instanceof \Laravel\Sanctum\PersonalAccessToken) { $user->tokens()->where('id', '!=', $currentToken->id)->delete(); } else { // TransientToken (test) or no token — revoke all $user->tokens()->delete(); } activity() ->causedBy($user) ->performedOn($user) ->log('user.password_changed'); return $this->success(message: 'Je wachtwoord is succesvol gewijzigd.'); } }