в карточку редактирования и создания новостей добавил проверку на города

This commit is contained in:
developer 2026-05-08 15:27:53 +08:00
parent f2caef5185
commit fb85879ab6
3 changed files with 17 additions and 4 deletions

View File

@ -21,7 +21,6 @@ public function index()
{ {
$posts = Post::orderBy('id', 'desc'); $posts = Post::orderBy('id', 'desc');
if (!auth()->user()->isAdmin() && auth()->user()->isCityManager()) { if (!auth()->user()->isAdmin() && auth()->user()->isCityManager()) {
} }
$posts = $posts->get(); $posts = $posts->get();
return view('admin::posts.index', [ return view('admin::posts.index', [
@ -54,7 +53,8 @@ public function store(Request $request)
if ($request->has('cities')) { if ($request->has('cities')) {
$availableCities = GetAvailableCities()->pluck('id')->toArray(); $availableCities = GetAvailableCities()->pluck('id')->toArray();
foreach ($request->cities as $cityId) { foreach ($request->cities as $cityId) {
if (!in_array($cityId, $availableCities)) { $city = City::find($cityId);
if (auth()->user()->cannot('manage', $city)) {
return back(); return back();
} }
} }
@ -105,6 +105,18 @@ public function update(Request $request, Post $post)
$reuqest['image'] = $post->image; $reuqest['image'] = $post->image;
} }
if ($request->has('cities')) {
$availableCities = GetAvailableCities()->pluck('id')->toArray();
foreach ($request->cities as $cityId) {
$city = City::find($cityId);
if (auth()->user()->cannot('manage', $city)) {
return back();
}
}
} else {
return back();
}
$post = $post->update( $post = $post->update(
$request->only(['name', 'short_text', 'text', 'category', 'image', 'post-trixFields']) $request->only(['name', 'short_text', 'text', 'category', 'image', 'post-trixFields'])
); );

View File

@ -21,7 +21,7 @@ public function before(User $user, string $ability): bool|null
/** /**
* Determine whether the user can CRUD content (posts, agents, documents) * Determine whether the user can CRUD content (posts, agents, documents)
*/ */
public function manageContent(User $user, City $city): bool public function manage(User $user, City $city): bool
{ {
if (!$cityManagersOfUser = CityManager::where('user_id', $user->id)->get()) { if (!$cityManagersOfUser = CityManager::where('user_id', $user->id)->get()) {
return false; return false;

View File

@ -27,9 +27,10 @@ class="modal-dialog modal-dialog-scrollable modal-lg modal-fullscreen-lg-down"
<div class="mb-2 p-2 border rounded"> <div class="mb-2 p-2 border rounded">
@if($availableCities = GetAvailableCities()) @if($availableCities = GetAvailableCities())
<div> <div>
@php($citiesOfPostIds = ($post->id) ? $post->cities()->pluck('city_id')->toArray() : [])
@foreach($availableCities as $key=>$city) @foreach($availableCities as $key=>$city)
<div class="form-check form-check-inline"> <div class="form-check form-check-inline">
<input name="cities[{{ $key }}]" class="form-check-input" type="checkbox" value="{{ $city->id }}" id="city_{{ $city->id }}"> <input @checked(in_array($city->id, $citiesOfPostIds)) name="cities[{{ $key }}]" class="form-check-input" type="checkbox" value="{{ $city->id }}" id="city_{{ $city->id }}">
<label class="form-check-label" for="city_{{ $city->id }}"> <label class="form-check-label" for="city_{{ $city->id }}">
{{ $city->name }} {{ $city->name }}
</label> </label>