This template is driving me nuts.
I am trying to setup the todo so that when a new task is created is the user is Admin/Super Admin they can assing tasks to other users, if its a user they can create their own task and under assignee it will only display there name, for admin role they can choose the user:
In my blade file I have:
@if (auth()->user()->hasRole('admin') || auth()->user()->hasRole('super-admin'))
<label for="assigned" class="form-label">Assignee</label>
<select name="assigned" id="assigneds" class="form-control w-full mt-2 py-2">
<option value="" disabled selected>Select Assignee</option>
@foreach ($users as $user)
<option value="{{ $user->id }}">{{ $user->name }}</option>
@endforeach
</select>
@else
<input type="hidden" name="assigned" value="{{ auth()->user()->id }}">
<p>Assignee: {{ auth()->user()->name }}</p>
@endif
I added this to my userModel:
public function isAdmin(): bool
{
return $this->hasRole(['admin', 'super_admin']);
}
Now if I add this at the top of the blade it works:
@php
$user = Auth::user(); // Get the authenticated user
if ($user->hasRole('super-admin')) {
$users = App\Models\User::all(); // Retrieve all users for super-admin
} elseif ($user->hasRole('admin')) {
$users = App\Models\User::whereDoesntHave('roles', function ($query) {
$query->where('name', 'super-admin');
})->get(); // Retrieve users for admin (excluding super-admin)
} else {
$users = null; // Set users to null for regular user
}
@endphp
However if I use this in my controller:
public function create()
{
$user = Auth::user();
if ($user->hasRole('super-admin')) {
$users = User::all(); // Retrieve all users for super-admin
} elseif ($user->hasRole('admin')) {
$users = User::whereDoesntHave('roles', function ($query) {
$query->where('name', 'super-admin');
})->get(); // Retrieve users for admin (excluding super-admin)
} else {
$users = null; // Set users to null for regular user
}
return view('todo', compact('users'));
}
I get Undefined variable $users, chatGPT keeps going around