Ajustes varios de permisos y visuales

This commit is contained in:
2025-01-27 08:34:28 -03:00
parent 90bbc3ac7b
commit 509f59ea45
17 changed files with 1606 additions and 1455 deletions

View File

@@ -58,7 +58,7 @@ class ResetPassword extends Component
);
if ($status === Password::PASSWORD_RESET) {
Session::flash('toast', ['type' => 'success', 'message' => __($status)]);
$this->toast()->success("Éxito", __($status))->flash()->send();
$this->redirectRoute('login', navigate: true);
} else {
throw ValidationException::withMessages(['email' => __($status)]);

View File

@@ -82,7 +82,7 @@ class Index extends Component
'diez' => 0,
]);
Session::flash('toast', ['type' => 'success', 'message' => 'Caja registrada correctamente']);
$this->toast()->success("Éxito", "Caja registrada correctamente")->flash()->send();
$this->redirectRoute('cajas.edit', $turno, navigate: true);
}

View File

@@ -7,6 +7,7 @@ use App\Models\Role;
use App\Models\User;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Session;
use Illuminate\Validation\Rule;
@@ -53,7 +54,7 @@ class Edit extends Component
{
return [
'name' => 'required|string',
'email' => ['required', 'email', Rule::unique('users', 'email')->ignore($this->user->id)],
'email' => ['required', 'email', Rule::unique('users', 'email')->ignore($this->user?->id)],
'password' => $this->change_password ? 'required|string|min:8|confirmed' : 'nullable|string|min:8|confirmed',
'password_confirmation' => $this->change_password ? 'required' : 'nullable',
'roles' => 'nullable',
@@ -86,19 +87,26 @@ class Edit extends Component
$this->user->save();
$isSuperAdmin = $this->user->roles()->where('name', RoleName::SuperAdmin)->exists();
$this->user->roles()->sync($this->roles);
if ($isSuperAdmin) {
$this->user->roles()->attach(Role::where('name', RoleName::SuperAdmin)->first()->id);
$isSuperAdmin = $this->user->isAn(RoleName::SuperAdmin);
if($isSuperAdmin) {
$this->roles[] = Role::where('name', RoleName::SuperAdmin)->first()->id;
}
Session::flash('toast', ['type' => 'success', 'message' => 'Usuario modificado correctamente']);
$this->user->roles()->sync($this->roles);
$this->toast()->success("Éxito", "Usuario modificado correctamente")->flash()->send();
}
public function store(): void
{
$this->authorize('create', User::class);
$superadmin = Role::whereName(RoleName::SuperAdmin)->first();
if(collect($this->roles)->contains($superadmin->id)) {
Gate::authorize('create-super-admin', User::class);
}
$user = User::create([
'name' => $this->name,
'email' => $this->email,
@@ -107,12 +115,16 @@ class Edit extends Component
$user->roles()->sync($this->roles);
Session::flash('toast', ['type' => 'success', 'message' => 'Usuario registrado correctamente']);
$this->toast()->success("Éxito", "Usuario registrado correctamente")->flash()->send();
}
#[Computed]
public function availableRoles(): Collection
{
return Role::whereNot('name', RoleName::SuperAdmin)->get();
if(Gate::allows('create-super-admin', User::class)) {
return Role::all();
} else {
return Role::whereNot('name', RoleName::SuperAdmin)->get();
}
}
}

View File

@@ -51,6 +51,7 @@ class Index extends Component
return [
['index' => 'name', 'label' => 'Nombre'],
['index' => 'email', 'label' => 'Email'],
['index' => 'roles', 'label' => 'Roles'],
['index' => 'action', 'label' => 'Acciones'],
];
}
@@ -58,6 +59,6 @@ class Index extends Component
#[Computed]
public function rows(): LengthAwarePaginator
{
return User::paginate();
return User::filterSuperadmin()->with('roles')->paginate();
}
}