auth
This commit is contained in:
1 parent
b005c7677e
commit
59eea97d5a
21 files changed
+582
-764
No files matched your search
+70
-21
@@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Filament\Auth\MultiFactor\App\Contracts\HasAppAuthentication;
|
||||||
|
use Filament\Auth\MultiFactor\App\Contracts\HasAppAuthenticationRecovery;
|
||||||
|
use Filament\Auth\MultiFactor\Email\Contracts\HasEmailAuthentication;
|
||||||
use Filament\Models\Contracts\FilamentUser;
|
use Filament\Models\Contracts\FilamentUser;
|
||||||
use Filament\Panel;
|
use Filament\Panel;
|
||||||
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||||
@@ -9,10 +12,9 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|||||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||||
use Illuminate\Notifications\Notifiable;
|
use Illuminate\Notifications\Notifiable;
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
use Spatie\Permission\Traits\HasRoles;
|
use Spatie\Permission\Traits\HasRoles;
|
||||||
|
|
||||||
class User extends Authenticatable implements FilamentUser, MustVerifyEmail
|
class User extends Authenticatable implements FilamentUser, HasAppAuthentication, HasAppAuthenticationRecovery, HasEmailAuthentication, MustVerifyEmail
|
||||||
{
|
{
|
||||||
/** @use HasFactory<\Database\Factories\UserFactory> */
|
/** @use HasFactory<\Database\Factories\UserFactory> */
|
||||||
use HasFactory, HasRoles, Notifiable, SoftDeletes;
|
use HasFactory, HasRoles, Notifiable, SoftDeletes;
|
||||||
@@ -47,6 +49,8 @@ class User extends Authenticatable implements FilamentUser, MustVerifyEmail
|
|||||||
protected $hidden = [
|
protected $hidden = [
|
||||||
'password',
|
'password',
|
||||||
'remember_token',
|
'remember_token',
|
||||||
|
'app_authentication_secret',
|
||||||
|
'app_authentication_recovery_codes',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -60,38 +64,83 @@ class User extends Authenticatable implements FilamentUser, MustVerifyEmail
|
|||||||
'email_verified_at' => 'datetime',
|
'email_verified_at' => 'datetime',
|
||||||
'password' => 'hashed',
|
'password' => 'hashed',
|
||||||
'app_verified_at' => 'datetime',
|
'app_verified_at' => 'datetime',
|
||||||
|
'app_authentication_secret' => 'encrypted',
|
||||||
|
'app_authentication_recovery_codes' => 'encrypted:array',
|
||||||
|
'has_email_authentication' => 'boolean',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getAppAuthenticationSecret(): ?string
|
||||||
|
{
|
||||||
|
// This method should return the user's saved app authentication secret.
|
||||||
|
|
||||||
|
return $this->app_authentication_secret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function saveAppAuthenticationSecret(?string $secret): void
|
||||||
|
{
|
||||||
|
// This method should save the user's app authentication secret.
|
||||||
|
|
||||||
|
$this->app_authentication_secret = $secret;
|
||||||
|
$this->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAppAuthenticationHolderName(): string
|
||||||
|
{
|
||||||
|
// In a user's authentication app, each account can be represented by a "holder name".
|
||||||
|
// If the user has multiple accounts in your app, it might be a good idea to use
|
||||||
|
// their email address as then they are still uniquely identifiable.
|
||||||
|
|
||||||
|
return $this->email;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return ?array<string>
|
||||||
|
*/
|
||||||
|
public function getAppAuthenticationRecoveryCodes(): ?array
|
||||||
|
{
|
||||||
|
// This method should return the user's saved app authentication recovery codes.
|
||||||
|
|
||||||
|
return $this->app_authentication_recovery_codes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array<string> | null $codes
|
||||||
|
*/
|
||||||
|
public function saveAppAuthenticationRecoveryCodes(?array $codes): void
|
||||||
|
{
|
||||||
|
// This method should save the user's app authentication recovery codes.
|
||||||
|
|
||||||
|
$this->app_authentication_recovery_codes = $codes;
|
||||||
|
$this->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function hasEmailAuthentication(): bool
|
||||||
|
{
|
||||||
|
// This method should return true if the user has enabled email authentication.
|
||||||
|
|
||||||
|
return $this->has_email_authentication;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function toggleEmailAuthentication(bool $condition): void
|
||||||
|
{
|
||||||
|
// This method should save whether or not the user has enabled email authentication.
|
||||||
|
|
||||||
|
$this->has_email_authentication = $condition;
|
||||||
|
$this->save();
|
||||||
|
}
|
||||||
|
|
||||||
public function canAccessPanel(Panel $panel): bool
|
public function canAccessPanel(Panel $panel): bool
|
||||||
{
|
{
|
||||||
Log::info('canAccessPanel');
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function canAccessAdminPanel(Panel $panel): bool
|
public function canAccessAdminPanel(Panel $panel): bool
|
||||||
{
|
{
|
||||||
Log::info('canAccessAdminPanel');
|
|
||||||
|
|
||||||
if ($panel->getId() === 'admin') {
|
if ($panel->getId() === 'admin') {
|
||||||
return (
|
return $this->hasVerifiedEmail();
|
||||||
str_ends_with($this->email, '@webwerkstatt.tirol') ||
|
|
||||||
str_ends_with($this->email, '@kammerwest.at')
|
|
||||||
)
|
|
||||||
&& $this->hasVerifiedEmail();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function kammer()
|
|
||||||
{
|
|
||||||
return $this->belongsTo(Kammer::class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function bundesland()
|
|
||||||
{
|
|
||||||
return $this->belongsTo(Bundesland::class);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Policies;
|
namespace App\Policies;
|
||||||
|
|
||||||
use App\Models\User;
|
use Illuminate\Foundation\Auth\User as AuthUser;
|
||||||
use App\Models\Gutachter;
|
use App\Models\Gutachter;
|
||||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||||
|
|
||||||
@@ -10,99 +12,59 @@ class GutachterPolicy
|
|||||||
{
|
{
|
||||||
use HandlesAuthorization;
|
use HandlesAuthorization;
|
||||||
|
|
||||||
/**
|
public function viewAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can view any models.
|
|
||||||
*/
|
|
||||||
public function viewAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('view_any_gutachters::gutachter');
|
return $authUser->can('ViewAny:Gutachter');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function view(AuthUser $authUser, Gutachter $gutachter): bool
|
||||||
* Determine whether the user can view the model.
|
|
||||||
*/
|
|
||||||
public function view(User $user, Gutachter $gutachter): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('view_gutachters::gutachter');
|
return $authUser->can('View:Gutachter');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function create(AuthUser $authUser): bool
|
||||||
* Determine whether the user can create models.
|
|
||||||
*/
|
|
||||||
public function create(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('create_gutachters::gutachter');
|
return $authUser->can('Create:Gutachter');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function update(AuthUser $authUser, Gutachter $gutachter): bool
|
||||||
* Determine whether the user can update the model.
|
|
||||||
*/
|
|
||||||
public function update(User $user, Gutachter $gutachter): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('update_gutachters::gutachter');
|
return $authUser->can('Update:Gutachter');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function delete(AuthUser $authUser, Gutachter $gutachter): bool
|
||||||
* Determine whether the user can delete the model.
|
|
||||||
*/
|
|
||||||
public function delete(User $user, Gutachter $gutachter): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('delete_gutachters::gutachter');
|
return $authUser->can('Delete:Gutachter');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function restore(AuthUser $authUser, Gutachter $gutachter): bool
|
||||||
* Determine whether the user can bulk delete.
|
|
||||||
*/
|
|
||||||
public function deleteAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('delete_any_gutachters::gutachter');
|
return $authUser->can('Restore:Gutachter');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function forceDelete(AuthUser $authUser, Gutachter $gutachter): bool
|
||||||
* Determine whether the user can permanently delete.
|
|
||||||
*/
|
|
||||||
public function forceDelete(User $user, Gutachter $gutachter): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('force_delete_gutachters::gutachter');
|
return $authUser->can('ForceDelete:Gutachter');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function forceDeleteAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can permanently bulk delete.
|
|
||||||
*/
|
|
||||||
public function forceDeleteAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('force_delete_any_gutachters::gutachter');
|
return $authUser->can('ForceDeleteAny:Gutachter');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function restoreAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can restore.
|
|
||||||
*/
|
|
||||||
public function restore(User $user, Gutachter $gutachter): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('restore_gutachters::gutachter');
|
return $authUser->can('RestoreAny:Gutachter');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function replicate(AuthUser $authUser, Gutachter $gutachter): bool
|
||||||
* Determine whether the user can bulk restore.
|
|
||||||
*/
|
|
||||||
public function restoreAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('restore_any_gutachters::gutachter');
|
return $authUser->can('Replicate:Gutachter');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function reorder(AuthUser $authUser): bool
|
||||||
* Determine whether the user can replicate.
|
|
||||||
*/
|
|
||||||
public function replicate(User $user, Gutachter $gutachter): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('replicate_gutachters::gutachter');
|
return $authUser->can('Reorder:Gutachter');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine whether the user can reorder.
|
|
||||||
*/
|
|
||||||
public function reorder(User $user): bool
|
|
||||||
{
|
|
||||||
return $user->can('reorder_gutachters::gutachter');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Policies;
|
namespace App\Policies;
|
||||||
|
|
||||||
use App\Models\User;
|
use Illuminate\Foundation\Auth\User as AuthUser;
|
||||||
use App\Models\Konto;
|
use App\Models\Konto;
|
||||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||||
|
|
||||||
@@ -10,99 +12,59 @@ class KontoPolicy
|
|||||||
{
|
{
|
||||||
use HandlesAuthorization;
|
use HandlesAuthorization;
|
||||||
|
|
||||||
/**
|
public function viewAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can view any models.
|
|
||||||
*/
|
|
||||||
public function viewAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('view_any_kontos::konto');
|
return $authUser->can('ViewAny:Konto');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function view(AuthUser $authUser, Konto $konto): bool
|
||||||
* Determine whether the user can view the model.
|
|
||||||
*/
|
|
||||||
public function view(User $user, Konto $konto): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('view_kontos::konto');
|
return $authUser->can('View:Konto');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function create(AuthUser $authUser): bool
|
||||||
* Determine whether the user can create models.
|
|
||||||
*/
|
|
||||||
public function create(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('create_kontos::konto');
|
return $authUser->can('Create:Konto');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function update(AuthUser $authUser, Konto $konto): bool
|
||||||
* Determine whether the user can update the model.
|
|
||||||
*/
|
|
||||||
public function update(User $user, Konto $konto): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('update_kontos::konto');
|
return $authUser->can('Update:Konto');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function delete(AuthUser $authUser, Konto $konto): bool
|
||||||
* Determine whether the user can delete the model.
|
|
||||||
*/
|
|
||||||
public function delete(User $user, Konto $konto): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('delete_kontos::konto');
|
return $authUser->can('Delete:Konto');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function restore(AuthUser $authUser, Konto $konto): bool
|
||||||
* Determine whether the user can bulk delete.
|
|
||||||
*/
|
|
||||||
public function deleteAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('delete_any_kontos::konto');
|
return $authUser->can('Restore:Konto');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function forceDelete(AuthUser $authUser, Konto $konto): bool
|
||||||
* Determine whether the user can permanently delete.
|
|
||||||
*/
|
|
||||||
public function forceDelete(User $user, Konto $konto): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('force_delete_kontos::konto');
|
return $authUser->can('ForceDelete:Konto');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function forceDeleteAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can permanently bulk delete.
|
|
||||||
*/
|
|
||||||
public function forceDeleteAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('force_delete_any_kontos::konto');
|
return $authUser->can('ForceDeleteAny:Konto');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function restoreAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can restore.
|
|
||||||
*/
|
|
||||||
public function restore(User $user, Konto $konto): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('restore_kontos::konto');
|
return $authUser->can('RestoreAny:Konto');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function replicate(AuthUser $authUser, Konto $konto): bool
|
||||||
* Determine whether the user can bulk restore.
|
|
||||||
*/
|
|
||||||
public function restoreAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('restore_any_kontos::konto');
|
return $authUser->can('Replicate:Konto');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function reorder(AuthUser $authUser): bool
|
||||||
* Determine whether the user can replicate.
|
|
||||||
*/
|
|
||||||
public function replicate(User $user, Konto $konto): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('replicate_kontos::konto');
|
return $authUser->can('Reorder:Konto');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine whether the user can reorder.
|
|
||||||
*/
|
|
||||||
public function reorder(User $user): bool
|
|
||||||
{
|
|
||||||
return $user->can('reorder_kontos::konto');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Policies;
|
namespace App\Policies;
|
||||||
|
|
||||||
use App\Models\User;
|
use Illuminate\Foundation\Auth\User as AuthUser;
|
||||||
use App\Models\Kontooptionen;
|
use App\Models\Kontooptionen;
|
||||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||||
|
|
||||||
@@ -10,99 +12,59 @@ class KontooptionenPolicy
|
|||||||
{
|
{
|
||||||
use HandlesAuthorization;
|
use HandlesAuthorization;
|
||||||
|
|
||||||
/**
|
public function viewAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can view any models.
|
|
||||||
*/
|
|
||||||
public function viewAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('view_any_kontooptionens::kontooptionen');
|
return $authUser->can('ViewAny:Kontooptionen');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function view(AuthUser $authUser, Kontooptionen $kontooptionen): bool
|
||||||
* Determine whether the user can view the model.
|
|
||||||
*/
|
|
||||||
public function view(User $user, Kontooptionen $kontooptionen): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('view_kontooptionens::kontooptionen');
|
return $authUser->can('View:Kontooptionen');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function create(AuthUser $authUser): bool
|
||||||
* Determine whether the user can create models.
|
|
||||||
*/
|
|
||||||
public function create(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('create_kontooptionens::kontooptionen');
|
return $authUser->can('Create:Kontooptionen');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function update(AuthUser $authUser, Kontooptionen $kontooptionen): bool
|
||||||
* Determine whether the user can update the model.
|
|
||||||
*/
|
|
||||||
public function update(User $user, Kontooptionen $kontooptionen): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('update_kontooptionens::kontooptionen');
|
return $authUser->can('Update:Kontooptionen');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function delete(AuthUser $authUser, Kontooptionen $kontooptionen): bool
|
||||||
* Determine whether the user can delete the model.
|
|
||||||
*/
|
|
||||||
public function delete(User $user, Kontooptionen $kontooptionen): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('delete_kontooptionens::kontooptionen');
|
return $authUser->can('Delete:Kontooptionen');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function restore(AuthUser $authUser, Kontooptionen $kontooptionen): bool
|
||||||
* Determine whether the user can bulk delete.
|
|
||||||
*/
|
|
||||||
public function deleteAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('delete_any_kontooptionens::kontooptionen');
|
return $authUser->can('Restore:Kontooptionen');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function forceDelete(AuthUser $authUser, Kontooptionen $kontooptionen): bool
|
||||||
* Determine whether the user can permanently delete.
|
|
||||||
*/
|
|
||||||
public function forceDelete(User $user, Kontooptionen $kontooptionen): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('force_delete_kontooptionens::kontooptionen');
|
return $authUser->can('ForceDelete:Kontooptionen');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function forceDeleteAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can permanently bulk delete.
|
|
||||||
*/
|
|
||||||
public function forceDeleteAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('force_delete_any_kontooptionens::kontooptionen');
|
return $authUser->can('ForceDeleteAny:Kontooptionen');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function restoreAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can restore.
|
|
||||||
*/
|
|
||||||
public function restore(User $user, Kontooptionen $kontooptionen): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('restore_kontooptionens::kontooptionen');
|
return $authUser->can('RestoreAny:Kontooptionen');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function replicate(AuthUser $authUser, Kontooptionen $kontooptionen): bool
|
||||||
* Determine whether the user can bulk restore.
|
|
||||||
*/
|
|
||||||
public function restoreAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('restore_any_kontooptionens::kontooptionen');
|
return $authUser->can('Replicate:Kontooptionen');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function reorder(AuthUser $authUser): bool
|
||||||
* Determine whether the user can replicate.
|
|
||||||
*/
|
|
||||||
public function replicate(User $user, Kontooptionen $kontooptionen): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('replicate_kontooptionens::kontooptionen');
|
return $authUser->can('Reorder:Kontooptionen');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine whether the user can reorder.
|
|
||||||
*/
|
|
||||||
public function reorder(User $user): bool
|
|
||||||
{
|
|
||||||
return $user->can('reorder_kontooptionens::kontooptionen');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Policies;
|
namespace App\Policies;
|
||||||
|
|
||||||
use App\Models\User;
|
use Illuminate\Foundation\Auth\User as AuthUser;
|
||||||
use App\Models\Permission;
|
use App\Models\Permission;
|
||||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||||
|
|
||||||
@@ -10,99 +12,59 @@ class PermissionPolicy
|
|||||||
{
|
{
|
||||||
use HandlesAuthorization;
|
use HandlesAuthorization;
|
||||||
|
|
||||||
/**
|
public function viewAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can view any models.
|
|
||||||
*/
|
|
||||||
public function viewAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('view_any_permissions::permission');
|
return $authUser->can('ViewAny:Permission');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function view(AuthUser $authUser, Permission $permission): bool
|
||||||
* Determine whether the user can view the model.
|
|
||||||
*/
|
|
||||||
public function view(User $user, Permission $permission): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('view_permissions::permission');
|
return $authUser->can('View:Permission');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function create(AuthUser $authUser): bool
|
||||||
* Determine whether the user can create models.
|
|
||||||
*/
|
|
||||||
public function create(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('create_permissions::permission');
|
return $authUser->can('Create:Permission');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function update(AuthUser $authUser, Permission $permission): bool
|
||||||
* Determine whether the user can update the model.
|
|
||||||
*/
|
|
||||||
public function update(User $user, Permission $permission): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('update_permissions::permission');
|
return $authUser->can('Update:Permission');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function delete(AuthUser $authUser, Permission $permission): bool
|
||||||
* Determine whether the user can delete the model.
|
|
||||||
*/
|
|
||||||
public function delete(User $user, Permission $permission): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('delete_permissions::permission');
|
return $authUser->can('Delete:Permission');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function restore(AuthUser $authUser, Permission $permission): bool
|
||||||
* Determine whether the user can bulk delete.
|
|
||||||
*/
|
|
||||||
public function deleteAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('delete_any_permissions::permission');
|
return $authUser->can('Restore:Permission');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function forceDelete(AuthUser $authUser, Permission $permission): bool
|
||||||
* Determine whether the user can permanently delete.
|
|
||||||
*/
|
|
||||||
public function forceDelete(User $user, Permission $permission): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('force_delete_permissions::permission');
|
return $authUser->can('ForceDelete:Permission');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function forceDeleteAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can permanently bulk delete.
|
|
||||||
*/
|
|
||||||
public function forceDeleteAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('force_delete_any_permissions::permission');
|
return $authUser->can('ForceDeleteAny:Permission');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function restoreAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can restore.
|
|
||||||
*/
|
|
||||||
public function restore(User $user, Permission $permission): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('restore_permissions::permission');
|
return $authUser->can('RestoreAny:Permission');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function replicate(AuthUser $authUser, Permission $permission): bool
|
||||||
* Determine whether the user can bulk restore.
|
|
||||||
*/
|
|
||||||
public function restoreAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('restore_any_permissions::permission');
|
return $authUser->can('Replicate:Permission');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function reorder(AuthUser $authUser): bool
|
||||||
* Determine whether the user can replicate.
|
|
||||||
*/
|
|
||||||
public function replicate(User $user, Permission $permission): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('replicate_permissions::permission');
|
return $authUser->can('Reorder:Permission');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine whether the user can reorder.
|
|
||||||
*/
|
|
||||||
public function reorder(User $user): bool
|
|
||||||
{
|
|
||||||
return $user->can('reorder_permissions::permission');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+25
-63
@@ -1,8 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Policies;
|
namespace App\Policies;
|
||||||
|
|
||||||
use App\Models\User;
|
use Illuminate\Foundation\Auth\User as AuthUser;
|
||||||
use Spatie\Permission\Models\Role;
|
use Spatie\Permission\Models\Role;
|
||||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||||
|
|
||||||
@@ -10,99 +12,59 @@ class RolePolicy
|
|||||||
{
|
{
|
||||||
use HandlesAuthorization;
|
use HandlesAuthorization;
|
||||||
|
|
||||||
/**
|
public function viewAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can view any models.
|
|
||||||
*/
|
|
||||||
public function viewAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('view_any_role');
|
return $authUser->can('ViewAny:Role');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function view(AuthUser $authUser, Role $role): bool
|
||||||
* Determine whether the user can view the model.
|
|
||||||
*/
|
|
||||||
public function view(User $user, Role $role): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('view_role');
|
return $authUser->can('View:Role');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function create(AuthUser $authUser): bool
|
||||||
* Determine whether the user can create models.
|
|
||||||
*/
|
|
||||||
public function create(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('create_role');
|
return $authUser->can('Create:Role');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function update(AuthUser $authUser, Role $role): bool
|
||||||
* Determine whether the user can update the model.
|
|
||||||
*/
|
|
||||||
public function update(User $user, Role $role): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('update_role');
|
return $authUser->can('Update:Role');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function delete(AuthUser $authUser, Role $role): bool
|
||||||
* Determine whether the user can delete the model.
|
|
||||||
*/
|
|
||||||
public function delete(User $user, Role $role): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('delete_role');
|
return $authUser->can('Delete:Role');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function restore(AuthUser $authUser, Role $role): bool
|
||||||
* Determine whether the user can bulk delete.
|
|
||||||
*/
|
|
||||||
public function deleteAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('delete_any_role');
|
return $authUser->can('Restore:Role');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function forceDelete(AuthUser $authUser, Role $role): bool
|
||||||
* Determine whether the user can permanently delete.
|
|
||||||
*/
|
|
||||||
public function forceDelete(User $user, Role $role): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('{{ ForceDelete }}');
|
return $authUser->can('ForceDelete:Role');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function forceDeleteAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can permanently bulk delete.
|
|
||||||
*/
|
|
||||||
public function forceDeleteAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('{{ ForceDeleteAny }}');
|
return $authUser->can('ForceDeleteAny:Role');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function restoreAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can restore.
|
|
||||||
*/
|
|
||||||
public function restore(User $user, Role $role): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('{{ Restore }}');
|
return $authUser->can('RestoreAny:Role');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function replicate(AuthUser $authUser, Role $role): bool
|
||||||
* Determine whether the user can bulk restore.
|
|
||||||
*/
|
|
||||||
public function restoreAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('{{ RestoreAny }}');
|
return $authUser->can('Replicate:Role');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function reorder(AuthUser $authUser): bool
|
||||||
* Determine whether the user can replicate.
|
|
||||||
*/
|
|
||||||
public function replicate(User $user, Role $role): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('{{ Replicate }}');
|
return $authUser->can('Reorder:Role');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine whether the user can reorder.
|
|
||||||
*/
|
|
||||||
public function reorder(User $user): bool
|
|
||||||
{
|
|
||||||
return $user->can('{{ Reorder }}');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+23
-100
@@ -2,143 +2,66 @@
|
|||||||
|
|
||||||
namespace App\Policies;
|
namespace App\Policies;
|
||||||
|
|
||||||
use App\Models\User;
|
use Illuminate\Foundation\Auth\User as AuthUser;
|
||||||
|
|
||||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||||
|
|
||||||
class UserPolicy
|
class UserPolicy
|
||||||
{
|
{
|
||||||
use HandlesAuthorization;
|
use HandlesAuthorization;
|
||||||
|
|
||||||
/**
|
public function viewAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can view any models.
|
|
||||||
*
|
|
||||||
* @param \App\Models\User $user
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function viewAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('view_any_users::user');
|
return $authUser->can('ViewAny:User');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function view(AuthUser $authUser): bool
|
||||||
* Determine whether the user can view the model.
|
|
||||||
*
|
|
||||||
* @param \App\Models\User $user
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function view(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('view_users::user');
|
return $authUser->can('View:User');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function create(AuthUser $authUser): bool
|
||||||
* Determine whether the user can create models.
|
|
||||||
*
|
|
||||||
* @param \App\Models\User $user
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function create(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('create_users::user');
|
return $authUser->can('Create:User');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function update(AuthUser $authUser): bool
|
||||||
* Determine whether the user can update the model.
|
|
||||||
*
|
|
||||||
* @param \App\Models\User $user
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function update(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('update_users::user');
|
return $authUser->can('Update:User');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function delete(AuthUser $authUser): bool
|
||||||
* Determine whether the user can delete the model.
|
|
||||||
*
|
|
||||||
* @param \App\Models\User $user
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function delete(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('delete_users::user');
|
return $authUser->can('Delete:User');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function restore(AuthUser $authUser): bool
|
||||||
* Determine whether the user can bulk delete.
|
|
||||||
*
|
|
||||||
* @param \App\Models\User $user
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function deleteAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('delete_any_users::user');
|
return $authUser->can('Restore:User');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function forceDelete(AuthUser $authUser): bool
|
||||||
* Determine whether the user can permanently delete.
|
|
||||||
*
|
|
||||||
* @param \App\Models\User $user
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function forceDelete(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('force_delete_users::user');
|
return $authUser->can('ForceDelete:User');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function forceDeleteAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can permanently bulk delete.
|
|
||||||
*
|
|
||||||
* @param \App\Models\User $user
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function forceDeleteAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('force_delete_any_users::user');
|
return $authUser->can('ForceDeleteAny:User');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function restoreAny(AuthUser $authUser): bool
|
||||||
* Determine whether the user can restore.
|
|
||||||
*
|
|
||||||
* @param \App\Models\User $user
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function restore(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('restore_users::user');
|
return $authUser->can('RestoreAny:User');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function replicate(AuthUser $authUser): bool
|
||||||
* Determine whether the user can bulk restore.
|
|
||||||
*
|
|
||||||
* @param \App\Models\User $user
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function restoreAny(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('restore_any_users::user');
|
return $authUser->can('Replicate:User');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function reorder(AuthUser $authUser): bool
|
||||||
* Determine whether the user can bulk restore.
|
|
||||||
*
|
|
||||||
* @param \App\Models\User $user
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function replicate(User $user): bool
|
|
||||||
{
|
{
|
||||||
return $user->can('replicate_users::user');
|
return $authUser->can('Reorder:User');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine whether the user can reorder.
|
|
||||||
*
|
|
||||||
* @param \App\Models\User $user
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function reorder(User $user): bool
|
|
||||||
{
|
|
||||||
return $user->can('reorder_users::user');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -23,9 +23,9 @@ class AppServiceProvider extends ServiceProvider
|
|||||||
*/
|
*/
|
||||||
public function boot(): void
|
public function boot(): void
|
||||||
{
|
{
|
||||||
FilamentColor::register([
|
// FilamentColor::register([
|
||||||
'primary' => '#47847f',
|
// 'primary' => '#733e0a',
|
||||||
]);
|
// ]);
|
||||||
|
|
||||||
FilamentView::registerRenderHook(
|
FilamentView::registerRenderHook(
|
||||||
PanelsRenderHook::AUTH_LOGIN_FORM_BEFORE, fn (): View => view('login-links'),
|
PanelsRenderHook::AUTH_LOGIN_FORM_BEFORE, fn (): View => view('login-links'),
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ use App\Http\Middleware\AppUserVerifiedMiddleware;
|
|||||||
use Awcodes\LightSwitch\Enums\Alignment;
|
use Awcodes\LightSwitch\Enums\Alignment;
|
||||||
use Awcodes\LightSwitch\LightSwitchPlugin;
|
use Awcodes\LightSwitch\LightSwitchPlugin;
|
||||||
use BezhanSalleh\FilamentShield\FilamentShieldPlugin;
|
use BezhanSalleh\FilamentShield\FilamentShieldPlugin;
|
||||||
|
use Filament\Auth\MultiFactor\App\AppAuthentication;
|
||||||
|
use Filament\Auth\MultiFactor\Email\EmailAuthentication;
|
||||||
use Filament\Http\Middleware\Authenticate;
|
use Filament\Http\Middleware\Authenticate;
|
||||||
use Filament\Http\Middleware\AuthenticateSession;
|
use Filament\Http\Middleware\AuthenticateSession;
|
||||||
use Filament\Http\Middleware\DisableBladeIconComponents;
|
use Filament\Http\Middleware\DisableBladeIconComponents;
|
||||||
@@ -26,6 +28,7 @@ use Illuminate\Session\Middleware\StartSession;
|
|||||||
use Illuminate\Support\Facades\Blade;
|
use Illuminate\Support\Facades\Blade;
|
||||||
use Illuminate\View\Middleware\ShareErrorsFromSession;
|
use Illuminate\View\Middleware\ShareErrorsFromSession;
|
||||||
use Swis\Filament\Backgrounds\FilamentBackgroundsPlugin;
|
use Swis\Filament\Backgrounds\FilamentBackgroundsPlugin;
|
||||||
|
use Swis\Filament\Backgrounds\ImageProviders\MyImages;
|
||||||
|
|
||||||
class AdminPanelProvider extends PanelProvider
|
class AdminPanelProvider extends PanelProvider
|
||||||
{
|
{
|
||||||
@@ -35,11 +38,22 @@ class AdminPanelProvider extends PanelProvider
|
|||||||
->id('admin')
|
->id('admin')
|
||||||
->path('')
|
->path('')
|
||||||
->login()
|
->login()
|
||||||
|
->registration()
|
||||||
|
->passwordReset()
|
||||||
|
->emailVerification()
|
||||||
|
->emailChangeVerification()
|
||||||
|
->profile()
|
||||||
->default()
|
->default()
|
||||||
->renderHook(
|
->renderHook(
|
||||||
PanelsRenderHook::GLOBAL_SEARCH_BEFORE,
|
PanelsRenderHook::GLOBAL_SEARCH_BEFORE,
|
||||||
fn (): string => auth()->user()->hasRole('gutachter_switch') ? Blade::render('@livewire(\'tenancy-switch\')') : false
|
fn (): string => auth()->user()->hasRole('gutachter_switch') ? Blade::render('@livewire(\'tenancy-switch\')') : false
|
||||||
)
|
)
|
||||||
|
->multiFactorAuthentication([
|
||||||
|
EmailAuthentication::make(),
|
||||||
|
AppAuthentication::make()
|
||||||
|
->recoverable(),
|
||||||
|
])
|
||||||
|
// ], isRequired: true)
|
||||||
->maxContentWidth(Width::ScreenExtraLarge)
|
->maxContentWidth(Width::ScreenExtraLarge)
|
||||||
// ->sidebarCollapsibleOnDesktop()
|
// ->sidebarCollapsibleOnDesktop()
|
||||||
// ->font('Open Sans')
|
// ->font('Open Sans')
|
||||||
@@ -74,10 +88,13 @@ class AdminPanelProvider extends PanelProvider
|
|||||||
Authenticate::class,
|
Authenticate::class,
|
||||||
])->plugins([
|
])->plugins([
|
||||||
FilamentShieldPlugin::make(),
|
FilamentShieldPlugin::make(),
|
||||||
FilamentBackgroundsPlugin::make(),
|
FilamentBackgroundsPlugin::make()
|
||||||
|
->imageProvider(
|
||||||
|
MyImages::make()
|
||||||
|
->directory('images/backgrounds')
|
||||||
|
),
|
||||||
LightSwitchPlugin::make()->position(Alignment::TopCenter),
|
LightSwitchPlugin::make()->position(Alignment::TopCenter),
|
||||||
// HooksHelperPlugin::make(),
|
// HooksHelperPlugin::make(),
|
||||||
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+5
-3
@@ -3,20 +3,22 @@
|
|||||||
"name": "laravel/laravel",
|
"name": "laravel/laravel",
|
||||||
"type": "project",
|
"type": "project",
|
||||||
"description": "The skeleton application for the Laravel framework.",
|
"description": "The skeleton application for the Laravel framework.",
|
||||||
"keywords": ["laravel", "framework"],
|
"keywords": [
|
||||||
|
"laravel",
|
||||||
|
"framework"
|
||||||
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.3",
|
"php": "^8.3",
|
||||||
"agencetwogether/hookshelper": "^0.0.2",
|
"agencetwogether/hookshelper": "^0.0.2",
|
||||||
"awcodes/light-switch": "^2.0",
|
"awcodes/light-switch": "^2.0",
|
||||||
"bezhansalleh/filament-shield": "^4.0@beta",
|
"bezhansalleh/filament-shield": "*",
|
||||||
"filament/filament": "^4.0",
|
"filament/filament": "^4.0",
|
||||||
"laravel/framework": "^12.0",
|
"laravel/framework": "^12.0",
|
||||||
"laravel/tinker": "^2.10.1",
|
"laravel/tinker": "^2.10.1",
|
||||||
"livewire/livewire": "^3.6",
|
"livewire/livewire": "^3.6",
|
||||||
"mallardduck/blade-lucide-icons": "^1.23",
|
"mallardduck/blade-lucide-icons": "^1.23",
|
||||||
"spatie/laravel-login-link": "^1.6",
|
"spatie/laravel-login-link": "^1.6",
|
||||||
"spatie/laravel-multitenancy": "^4.0",
|
|
||||||
"swisnl/filament-backgrounds": "^2.0",
|
"swisnl/filament-backgrounds": "^2.0",
|
||||||
"ysfkaya/filament-phone-input": "^4.0@beta"
|
"ysfkaya/filament-phone-input": "^4.0@beta"
|
||||||
},
|
},
|
||||||
|
|||||||
Generated
+99
-264
@@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "bad50230eed48fcdbd195c9d49310cfa",
|
"content-hash": "86131fc6e2814af73859860025a45afe",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "agencetwogether/hookshelper",
|
"name": "agencetwogether/hookshelper",
|
||||||
@@ -219,24 +219,103 @@
|
|||||||
"time": "2025-08-25T13:58:07+00:00"
|
"time": "2025-08-25T13:58:07+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "bezhansalleh/filament-shield",
|
"name": "bezhansalleh/filament-plugin-essentials",
|
||||||
"version": "4.0.0-beta2",
|
"version": "1.0.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/bezhanSalleh/filament-shield.git",
|
"url": "https://github.com/bezhanSalleh/filament-plugin-essentials.git",
|
||||||
"reference": "a1ff497383cfbbe9107cb7991859d94506a471d8"
|
"reference": "fb4656c661270133b1b1c4297616745e4d586ca7"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/bezhanSalleh/filament-shield/zipball/a1ff497383cfbbe9107cb7991859d94506a471d8",
|
"url": "https://api.github.com/repos/bezhanSalleh/filament-plugin-essentials/zipball/fb4656c661270133b1b1c4297616745e4d586ca7",
|
||||||
"reference": "a1ff497383cfbbe9107cb7991859d94506a471d8",
|
"reference": "fb4656c661270133b1b1c4297616745e4d586ca7",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"filament/filament": "^4.0",
|
"filament/filament": "^4.0",
|
||||||
"filament/upgrade": "^4.0",
|
|
||||||
"illuminate/contracts": "^11.28|^12.0",
|
"illuminate/contracts": "^11.28|^12.0",
|
||||||
"php": "^8.2",
|
"php": "^8.2",
|
||||||
|
"spatie/laravel-package-tools": "^1.9"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"larastan/larastan": "^2.9||^3.0",
|
||||||
|
"laravel/pint": "^1.14",
|
||||||
|
"nunomaduro/collision": "^8.1.1||^7.10.0",
|
||||||
|
"orchestra/testbench": "^10.0.0||^9.0.0",
|
||||||
|
"pestphp/pest": "^3.0",
|
||||||
|
"pestphp/pest-plugin-arch": "^3.0",
|
||||||
|
"pestphp/pest-plugin-laravel": "^3.0",
|
||||||
|
"pestphp/pest-plugin-type-coverage": "^3.5",
|
||||||
|
"phpstan/extension-installer": "^1.3||^2.0",
|
||||||
|
"phpstan/phpstan-deprecation-rules": "^1.1||^2.0",
|
||||||
|
"phpstan/phpstan-phpunit": "^1.3||^2.0",
|
||||||
|
"rector/rector": "^2.1",
|
||||||
|
"spatie/laravel-ray": "^1.40"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"laravel": {
|
||||||
|
"providers": [
|
||||||
|
"BezhanSalleh\\PluginEssentials\\PluginEssentialsServiceProvider"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"BezhanSalleh\\PluginEssentials\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Bezhan Salleh",
|
||||||
|
"email": "bezhan_salleh@yahoo.com",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A collection of essential traits that streamline Filament plugin development by taking care of the boilerplate, so you can focus on shipping real features faster",
|
||||||
|
"homepage": "https://github.com/bezhansalleh/filament-plugin-essentials",
|
||||||
|
"keywords": [
|
||||||
|
"Bezhan Salleh",
|
||||||
|
"filament-plugin-essentials",
|
||||||
|
"laravel"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/bezhanSalleh/filament-plugin-essentials/issues",
|
||||||
|
"source": "https://github.com/bezhanSalleh/filament-plugin-essentials/tree/1.0.0"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/bezhanSalleh",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-08-31T06:50:44+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bezhansalleh/filament-shield",
|
||||||
|
"version": "4.0.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/bezhanSalleh/filament-shield.git",
|
||||||
|
"reference": "c58355c913dcf987ce6e09294544ade597454dca"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/bezhanSalleh/filament-shield/zipball/c58355c913dcf987ce6e09294544ade597454dca",
|
||||||
|
"reference": "c58355c913dcf987ce6e09294544ade597454dca",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"bezhansalleh/filament-plugin-essentials": "^1.0",
|
||||||
|
"filament/filament": "^4.0",
|
||||||
|
"illuminate/contracts": "^11.28|^12.0",
|
||||||
|
"illuminate/support": "*",
|
||||||
|
"php": "^8.2",
|
||||||
"spatie/laravel-package-tools": "^1.9",
|
"spatie/laravel-package-tools": "^1.9",
|
||||||
"spatie/laravel-permission": "^6.0"
|
"spatie/laravel-permission": "^6.0"
|
||||||
},
|
},
|
||||||
@@ -254,6 +333,7 @@
|
|||||||
"phpstan/phpstan-deprecation-rules": "^2.0",
|
"phpstan/phpstan-deprecation-rules": "^2.0",
|
||||||
"phpstan/phpstan-phpunit": "^2.0",
|
"phpstan/phpstan-phpunit": "^2.0",
|
||||||
"phpunit/phpunit": "^10.1|^11.0",
|
"phpunit/phpunit": "^10.1|^11.0",
|
||||||
|
"rector/rector": "^2.1",
|
||||||
"spatie/laravel-ray": "^1.40"
|
"spatie/laravel-ray": "^1.40"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
@@ -300,7 +380,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/bezhanSalleh/filament-shield/issues",
|
"issues": "https://github.com/bezhanSalleh/filament-shield/issues",
|
||||||
"source": "https://github.com/bezhanSalleh/filament-shield/tree/4.0.0-beta2"
|
"source": "https://github.com/bezhanSalleh/filament-shield/tree/4.0.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -308,7 +388,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-07-10T22:46:16+00:00"
|
"time": "2025-09-07T07:11:27+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "blade-ui-kit/blade-heroicons",
|
"name": "blade-ui-kit/blade-heroicons",
|
||||||
@@ -1623,53 +1703,6 @@
|
|||||||
},
|
},
|
||||||
"time": "2025-09-04T14:12:44+00:00"
|
"time": "2025-09-04T14:12:44+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "filament/upgrade",
|
|
||||||
"version": "v4.0.7",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/filamentphp/upgrade.git",
|
|
||||||
"reference": "21a3da29b7ebc4e85372b9a6dd39e391cbc47fdb"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/filamentphp/upgrade/zipball/21a3da29b7ebc4e85372b9a6dd39e391cbc47fdb",
|
|
||||||
"reference": "21a3da29b7ebc4e85372b9a6dd39e391cbc47fdb",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"nunomaduro/termwind": "^2.0",
|
|
||||||
"php": "^8.2",
|
|
||||||
"rector/rector": "^2.0"
|
|
||||||
},
|
|
||||||
"bin": [
|
|
||||||
"bin/filament-v4"
|
|
||||||
],
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"laravel": {
|
|
||||||
"providers": [
|
|
||||||
"Filament\\Upgrade\\UpgradeServiceProvider"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Filament\\Upgrade\\": "src"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"description": "Upgrade Filament v3 code to Filament v4.",
|
|
||||||
"homepage": "https://github.com/filamentphp/filament",
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/filamentphp/filament/issues",
|
|
||||||
"source": "https://github.com/filamentphp/filament"
|
|
||||||
},
|
|
||||||
"time": "2025-09-02T11:01:30+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "filament/widgets",
|
"name": "filament/widgets",
|
||||||
"version": "v4.0.7",
|
"version": "v4.0.7",
|
||||||
@@ -3836,16 +3869,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nesbot/carbon",
|
"name": "nesbot/carbon",
|
||||||
"version": "3.10.2",
|
"version": "3.10.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/CarbonPHP/carbon.git",
|
"url": "https://github.com/CarbonPHP/carbon.git",
|
||||||
"reference": "76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24"
|
"reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24",
|
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f",
|
||||||
"reference": "76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24",
|
"reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -3863,13 +3896,13 @@
|
|||||||
"require-dev": {
|
"require-dev": {
|
||||||
"doctrine/dbal": "^3.6.3 || ^4.0",
|
"doctrine/dbal": "^3.6.3 || ^4.0",
|
||||||
"doctrine/orm": "^2.15.2 || ^3.0",
|
"doctrine/orm": "^2.15.2 || ^3.0",
|
||||||
"friendsofphp/php-cs-fixer": "^3.75.0",
|
"friendsofphp/php-cs-fixer": "^v3.87.1",
|
||||||
"kylekatarnls/multi-tester": "^2.5.3",
|
"kylekatarnls/multi-tester": "^2.5.3",
|
||||||
"phpmd/phpmd": "^2.15.0",
|
"phpmd/phpmd": "^2.15.0",
|
||||||
"phpstan/extension-installer": "^1.4.3",
|
"phpstan/extension-installer": "^1.4.3",
|
||||||
"phpstan/phpstan": "^2.1.17",
|
"phpstan/phpstan": "^2.1.22",
|
||||||
"phpunit/phpunit": "^10.5.46",
|
"phpunit/phpunit": "^10.5.53",
|
||||||
"squizlabs/php_codesniffer": "^3.13.0"
|
"squizlabs/php_codesniffer": "^3.13.4"
|
||||||
},
|
},
|
||||||
"bin": [
|
"bin": [
|
||||||
"bin/carbon"
|
"bin/carbon"
|
||||||
@@ -3937,7 +3970,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-08-02T09:36:06+00:00"
|
"time": "2025-09-06T13:39:36+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nette/php-generator",
|
"name": "nette/php-generator",
|
||||||
@@ -4542,64 +4575,6 @@
|
|||||||
],
|
],
|
||||||
"time": "2025-08-21T11:53:16+00:00"
|
"time": "2025-08-21T11:53:16+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "phpstan/phpstan",
|
|
||||||
"version": "2.1.22",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/phpstan/phpstan.git",
|
|
||||||
"reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/41600c8379eb5aee63e9413fe9e97273e25d57e4",
|
|
||||||
"reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": "^7.4|^8.0"
|
|
||||||
},
|
|
||||||
"conflict": {
|
|
||||||
"phpstan/phpstan-shim": "*"
|
|
||||||
},
|
|
||||||
"bin": [
|
|
||||||
"phpstan",
|
|
||||||
"phpstan.phar"
|
|
||||||
],
|
|
||||||
"type": "library",
|
|
||||||
"autoload": {
|
|
||||||
"files": [
|
|
||||||
"bootstrap.php"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"description": "PHPStan - PHP Static Analysis Tool",
|
|
||||||
"keywords": [
|
|
||||||
"dev",
|
|
||||||
"static analysis"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"docs": "https://phpstan.org/user-guide/getting-started",
|
|
||||||
"forum": "https://github.com/phpstan/phpstan/discussions",
|
|
||||||
"issues": "https://github.com/phpstan/phpstan/issues",
|
|
||||||
"security": "https://github.com/phpstan/phpstan/security/policy",
|
|
||||||
"source": "https://github.com/phpstan/phpstan-src"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://github.com/ondrejmirtes",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://github.com/phpstan",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2025-08-04T19:17:37+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "pragmarx/google2fa",
|
"name": "pragmarx/google2fa",
|
||||||
"version": "v8.0.3",
|
"version": "v8.0.3",
|
||||||
@@ -5479,66 +5454,6 @@
|
|||||||
},
|
},
|
||||||
"time": "2025-09-04T20:59:21+00:00"
|
"time": "2025-09-04T20:59:21+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "rector/rector",
|
|
||||||
"version": "2.1.5",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/rectorphp/rector.git",
|
|
||||||
"reference": "1cd6abfb5976fd4ed728d5b73ebd67c7c810cd88"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/rectorphp/rector/zipball/1cd6abfb5976fd4ed728d5b73ebd67c7c810cd88",
|
|
||||||
"reference": "1cd6abfb5976fd4ed728d5b73ebd67c7c810cd88",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": "^7.4|^8.0",
|
|
||||||
"phpstan/phpstan": "^2.1.18"
|
|
||||||
},
|
|
||||||
"conflict": {
|
|
||||||
"rector/rector-doctrine": "*",
|
|
||||||
"rector/rector-downgrade-php": "*",
|
|
||||||
"rector/rector-phpunit": "*",
|
|
||||||
"rector/rector-symfony": "*"
|
|
||||||
},
|
|
||||||
"suggest": {
|
|
||||||
"ext-dom": "To manipulate phpunit.xml via the custom-rule command"
|
|
||||||
},
|
|
||||||
"bin": [
|
|
||||||
"bin/rector"
|
|
||||||
],
|
|
||||||
"type": "library",
|
|
||||||
"autoload": {
|
|
||||||
"files": [
|
|
||||||
"bootstrap.php"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"description": "Instant Upgrade and Automated Refactoring of any PHP code",
|
|
||||||
"homepage": "https://getrector.com/",
|
|
||||||
"keywords": [
|
|
||||||
"automation",
|
|
||||||
"dev",
|
|
||||||
"migration",
|
|
||||||
"refactoring"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/rectorphp/rector/issues",
|
|
||||||
"source": "https://github.com/rectorphp/rector/tree/2.1.5"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://github.com/tomasvotruba",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2025-09-04T14:19:07+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "ryangjchandler/blade-capture-directive",
|
"name": "ryangjchandler/blade-capture-directive",
|
||||||
"version": "v1.1.0",
|
"version": "v1.1.0",
|
||||||
@@ -5819,85 +5734,6 @@
|
|||||||
},
|
},
|
||||||
"time": "2025-04-16T13:42:34+00:00"
|
"time": "2025-04-16T13:42:34+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "spatie/laravel-multitenancy",
|
|
||||||
"version": "4.0.5",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/spatie/laravel-multitenancy.git",
|
|
||||||
"reference": "7b43b33a4e4194157949470a04effc64b8bac2a3"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/spatie/laravel-multitenancy/zipball/7b43b33a4e4194157949470a04effc64b8bac2a3",
|
|
||||||
"reference": "7b43b33a4e4194157949470a04effc64b8bac2a3",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"illuminate/support": "^11.0|^12.0",
|
|
||||||
"php": "^8.2",
|
|
||||||
"spatie/laravel-package-tools": "^1.9"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"laravel/legacy-factories": "^1.0.4",
|
|
||||||
"laravel/octane": "^2.5|dev-develop",
|
|
||||||
"laravel/serializable-closure": "^1.1|^2.0",
|
|
||||||
"mockery/mockery": "^1.4",
|
|
||||||
"orchestra/testbench": "^9.0|^10.0",
|
|
||||||
"pestphp/pest": "^2.34|^3.7",
|
|
||||||
"spatie/valuestore": "^1.2"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"laravel": {
|
|
||||||
"aliases": {
|
|
||||||
"Multitenancy": "Spatie\\Multitenancy\\MultitenancyFacade"
|
|
||||||
},
|
|
||||||
"providers": [
|
|
||||||
"Spatie\\Multitenancy\\MultitenancyServiceProvider"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Spatie\\Multitenancy\\": "src",
|
|
||||||
"Spatie\\Multitenancy\\Database\\Factories\\": "database/factories"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Freek Van der Herten",
|
|
||||||
"email": "freek@spatie.be",
|
|
||||||
"homepage": "http://spatie.be",
|
|
||||||
"role": "Developer"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Make your Laravel app usable by multiple tenants",
|
|
||||||
"homepage": "https://github.com/spatie/laravel-multitenancy",
|
|
||||||
"keywords": [
|
|
||||||
"laravel-multitenancy",
|
|
||||||
"spatie"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/spatie/laravel-multitenancy/issues",
|
|
||||||
"source": "https://github.com/spatie/laravel-multitenancy/tree/4.0.5"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://spatie.be/open-source/support-us",
|
|
||||||
"type": "custom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://github.com/spatie",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2025-05-12T09:56:03+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "spatie/laravel-package-tools",
|
"name": "spatie/laravel-package-tools",
|
||||||
"version": "1.92.7",
|
"version": "1.92.7",
|
||||||
@@ -12396,7 +12232,6 @@
|
|||||||
"aliases": [],
|
"aliases": [],
|
||||||
"minimum-stability": "stable",
|
"minimum-stability": "stable",
|
||||||
"stability-flags": {
|
"stability-flags": {
|
||||||
"bezhansalleh/filament-shield": 10,
|
|
||||||
"ysfkaya/filament-phone-input": 10
|
"ysfkaya/filament-phone-input": 10
|
||||||
},
|
},
|
||||||
"prefer-stable": true,
|
"prefer-stable": true,
|
||||||
|
|||||||
+215
-46
@@ -1,83 +1,243 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Shield Resource
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here you may configure the built-in role management resource. You can
|
||||||
|
| customize the URL, choose whether to show model paths, group it under
|
||||||
|
| a cluster, and decide which permission tabs to display.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
'shield_resource' => [
|
'shield_resource' => [
|
||||||
'should_register_navigation' => true,
|
|
||||||
'slug' => 'shield/roles',
|
'slug' => 'shield/roles',
|
||||||
'navigation_sort' => -1,
|
|
||||||
'navigation_badge' => true,
|
|
||||||
'navigation_group' => true,
|
|
||||||
'sub_navigation_position' => null,
|
|
||||||
'is_globally_searchable' => false,
|
|
||||||
'show_model_path' => true,
|
'show_model_path' => true,
|
||||||
'is_scoped_to_tenant' => true,
|
|
||||||
'cluster' => null,
|
'cluster' => null,
|
||||||
|
'tabs' => [
|
||||||
|
'pages' => true,
|
||||||
|
'widgets' => true,
|
||||||
|
'resources' => true,
|
||||||
|
'custom_permissions' => false,
|
||||||
],
|
],
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Multi-Tenancy
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| When your application supports teams, Shield will automatically detect
|
||||||
|
| and configure the tenant model during setup. This enables tenant-scoped
|
||||||
|
| roles and permissions throughout your application.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
'tenant_model' => null,
|
'tenant_model' => null,
|
||||||
|
|
||||||
'auth_provider_model' => [
|
/*
|
||||||
'fqcn' => 'App\\Models\\User',
|
|--------------------------------------------------------------------------
|
||||||
],
|
| User Model
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This value contains the class name of your user model. This model will
|
||||||
|
| be used for role assignments and must implement the HasRoles trait
|
||||||
|
| provided by the Spatie\Permission package.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'auth_provider_model' => 'App\\Models\\User',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Super Admin
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here you may define a super admin that has unrestricted access to your
|
||||||
|
| application. You can choose to implement this via Laravel's gate system
|
||||||
|
| or as a traditional role with all permissions explicitly assigned.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
'super_admin' => [
|
'super_admin' => [
|
||||||
'enabled' => true,
|
'enabled' => true,
|
||||||
'name' => 'super_admin',
|
'name' => 'super_admin',
|
||||||
'define_via_gate' => false,
|
'define_via_gate' => false,
|
||||||
'intercept_gate' => 'before', // after
|
'intercept_gate' => 'before',
|
||||||
],
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Panel User
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| When enabled, Shield will create a basic panel user role that can be
|
||||||
|
| assigned to users who should have access to your Filament panels but
|
||||||
|
| don't need any specific permissions beyond basic authentication.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
'panel_user' => [
|
'panel_user' => [
|
||||||
'enabled' => true,
|
'enabled' => true,
|
||||||
'name' => 'panel_user',
|
'name' => 'panel_user',
|
||||||
],
|
],
|
||||||
|
|
||||||
'permission_prefixes' => [
|
/*
|
||||||
'resource' => [
|
|--------------------------------------------------------------------------
|
||||||
|
| Permission Builder
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| You can customize how permission keys are generated to match your
|
||||||
|
| preferred naming convention and organizational standards. Shield uses
|
||||||
|
| these settings when creating permission names from your resources.
|
||||||
|
|
|
||||||
|
| Supported formats: snake, kebab, pascal, camel, upper_snake, lower_snake
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'permissions' => [
|
||||||
|
'separator' => ':',
|
||||||
|
'case' => 'pascal',
|
||||||
|
'generate' => true,
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Policies
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Shield can automatically generate Laravel policies for your resources.
|
||||||
|
| When merge is enabled, the methods below will be combined with any
|
||||||
|
| resource-specific methods you define in the resources section.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'policies' => [
|
||||||
|
'path' => app_path('Policies'),
|
||||||
|
'merge' => true,
|
||||||
|
'generate' => true,
|
||||||
|
'methods' => [
|
||||||
|
'viewAny', 'view', 'create', 'update', 'delete', 'restore',
|
||||||
|
'forceDelete', 'forceDeleteAny', 'restoreAny', 'replicate', 'reorder',
|
||||||
|
],
|
||||||
|
'single_parameter_methods' => [
|
||||||
|
'viewAny',
|
||||||
|
'create',
|
||||||
|
'deleteAny',
|
||||||
|
'forceDeleteAny',
|
||||||
|
'restoreAny',
|
||||||
|
'reorder',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Localization
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Shield supports multiple languages out of the box. When enabled, you
|
||||||
|
| can provide translated labels for permissions and roles to create a
|
||||||
|
| more localized experience for your international users.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'localization' => [
|
||||||
|
'enabled' => false,
|
||||||
|
'key' => 'filament-shield::filament-shield',
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Resources
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here you can fine-tune permissions for specific Filament resources.
|
||||||
|
| Use the 'manage' array to override the default policy methods for
|
||||||
|
| individual resources, giving you granular control over permissions.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'resources' => [
|
||||||
|
'subject' => 'model',
|
||||||
|
'manage' => [
|
||||||
|
\BezhanSalleh\FilamentShield\Resources\Roles\RoleResource::class => [
|
||||||
|
'viewAny',
|
||||||
'view',
|
'view',
|
||||||
'view_any',
|
|
||||||
'create',
|
'create',
|
||||||
'update',
|
'update',
|
||||||
'restore',
|
|
||||||
'restore_any',
|
|
||||||
'replicate',
|
|
||||||
'reorder',
|
|
||||||
'delete',
|
'delete',
|
||||||
'delete_any',
|
|
||||||
'force_delete',
|
|
||||||
'force_delete_any',
|
|
||||||
],
|
],
|
||||||
|
|
||||||
'page' => 'page',
|
|
||||||
'widget' => 'widget',
|
|
||||||
],
|
],
|
||||||
|
|
||||||
'entities' => [
|
|
||||||
'pages' => true,
|
|
||||||
'widgets' => true,
|
|
||||||
'resources' => true,
|
|
||||||
'custom_permissions' => false,
|
|
||||||
],
|
|
||||||
|
|
||||||
'generator' => [
|
|
||||||
'option' => 'policies_and_permissions',
|
|
||||||
'policy_directory' => 'Policies',
|
|
||||||
'policy_namespace' => 'Policies',
|
|
||||||
],
|
|
||||||
|
|
||||||
'exclude' => [
|
'exclude' => [
|
||||||
'enabled' => true,
|
//
|
||||||
|
],
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Pages
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Most Filament pages only require view permissions. Pages listed in the
|
||||||
|
| exclude array will be skipped during permission generation and won't
|
||||||
|
| appear in your role management interface.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
'pages' => [
|
'pages' => [
|
||||||
'Dashboard',
|
'subject' => 'class',
|
||||||
|
'prefix' => 'view',
|
||||||
|
'exclude' => [
|
||||||
|
\Filament\Pages\Dashboard::class,
|
||||||
],
|
],
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Widgets
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Like pages, widgets typically only need view permissions. Add widgets
|
||||||
|
| to the exclude array if you don't want them to appear in your role
|
||||||
|
| management interface.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
'widgets' => [
|
'widgets' => [
|
||||||
'AccountWidget', 'FilamentInfoWidget',
|
'subject' => 'class',
|
||||||
|
'prefix' => 'view',
|
||||||
|
'exclude' => [
|
||||||
|
\Filament\Widgets\AccountWidget::class,
|
||||||
|
\Filament\Widgets\FilamentInfoWidget::class,
|
||||||
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
'resources' => [],
|
/*
|
||||||
],
|
|--------------------------------------------------------------------------
|
||||||
|
| Custom Permissions
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Sometimes you need permissions that don't map to resources, pages, or
|
||||||
|
| widgets. Define any custom permissions here and they'll be available
|
||||||
|
| when editing roles in your application.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'custom_permissions' => [],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Entity Discovery
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| By default, Shield only looks for entities in your default Filament
|
||||||
|
| panel. Enable these options if you're using multiple panels and want
|
||||||
|
| Shield to discover entities across all of them.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
'discovery' => [
|
'discovery' => [
|
||||||
'discover_all_resources' => false,
|
'discover_all_resources' => false,
|
||||||
@@ -85,8 +245,17 @@ return [
|
|||||||
'discover_all_pages' => false,
|
'discover_all_pages' => false,
|
||||||
],
|
],
|
||||||
|
|
||||||
'register_role_policy' => [
|
/*
|
||||||
'enabled' => true,
|
|--------------------------------------------------------------------------
|
||||||
],
|
| Role Policy
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Shield can automatically register a policy for role management itself.
|
||||||
|
| This lets you control who can manage roles using Laravel's built-in
|
||||||
|
| authorization system. Requires a RolePolicy class in your app.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'register_role_policy' => true,
|
||||||
|
|
||||||
];
|
];
|
||||||
@@ -13,13 +13,18 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
Schema::create('users', function (Blueprint $table) {
|
Schema::create('users', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->foreignId('konto_id')->constrained()->cascadeOnDelete();
|
$table->foreignId('konto_id')->constrained()->cascadeOnDelete()->default(0);
|
||||||
$table->string('gender')->nullable();
|
$table->string('gender')->nullable();
|
||||||
$table->string('name');
|
$table->string('name');
|
||||||
$table->string('email')->unique();
|
$table->string('email')->unique();
|
||||||
$table->timestamp('email_verified_at')->nullable();
|
$table->timestamp('email_verified_at')->nullable();
|
||||||
$table->string('password');
|
$table->string('password');
|
||||||
$table->boolean('super_admin')->default(0);
|
$table->boolean('super_admin')->default(0);
|
||||||
|
|
||||||
|
$table->text('app_authentication_secret')->nullable();
|
||||||
|
$table->text('app_authentication_recovery_codes')->nullable();
|
||||||
|
$table->boolean('has_email_authentication')->default(false);
|
||||||
|
|
||||||
$table->rememberToken();
|
$table->rememberToken();
|
||||||
$table->timestamp('app_verified_at')->nullable();
|
$table->timestamp('app_verified_at')->nullable();
|
||||||
$table->timestamp('deleted_at')->nullable();
|
$table->timestamp('deleted_at')->nullable();
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 135 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 92 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 133 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 89 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 290 KiB |
@@ -1,5 +1,9 @@
|
|||||||
<div>
|
<div class="text-justify">
|
||||||
Durch die Parifizierung oder Nutzwertberechnung wird im Österreichischen Wohnungseigentumsrecht das Verhältnis der
|
<p
|
||||||
Eigentumsanteile der einzelnen Miteigentümer eines Hauses, an dem Wohnungseigentum begründet ist, untereinander
|
class="first-letter:float-left first-letter:mr-2 first-letter:text-5xl first-letter:font-bold first-letter:text-primary-900">
|
||||||
bestimmt.
|
Mit diesem Programm wird die Parifizierung oder Nutzwertberechnung welche im Österreichischen
|
||||||
|
Wohnungseigentumsrecht das Verhältnis der Eigentumsanteile der einzelnen Miteigentümer eines Hauses, an dem
|
||||||
|
Wohnungseigentum begründet, anhand von importierten Daten mit Hilfe von konfigurierbaren Kriterien und Methoden
|
||||||
|
berechnet und bestimmt.
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,7 +45,7 @@ case "$1" in
|
|||||||
echo "4 => chown -R apache:apache ."
|
echo "4 => chown -R apache:apache ."
|
||||||
echo "5 => a storage:link"
|
echo "5 => a storage:link"
|
||||||
echo "6 => a filament:assets . copy to prod"
|
echo "6 => a filament:assets . copy to prod"
|
||||||
echo "7 => a shield:setup with tenancy"
|
echo "7 => a shield:setup"
|
||||||
echo "--------------------------"
|
echo "--------------------------"
|
||||||
echo ""
|
echo ""
|
||||||
;;
|
;;
|
||||||
|
|||||||
+8
-4
@@ -1,11 +1,15 @@
|
|||||||
import { defineConfig } from 'vite';
|
import { defineConfig } from "vite";
|
||||||
import laravel from 'laravel-vite-plugin';
|
import laravel from "laravel-vite-plugin";
|
||||||
import tailwindcss from '@tailwindcss/vite';
|
import tailwindcss from "@tailwindcss/vite";
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [
|
plugins: [
|
||||||
laravel({
|
laravel({
|
||||||
input: ['resources/css/app.css', 'resources/js/app.js'],
|
input: [
|
||||||
|
"resources/css/filament/admin/theme.css",
|
||||||
|
"resources/css/app.css",
|
||||||
|
"resources/js/app.js",
|
||||||
|
],
|
||||||
refresh: true,
|
refresh: true,
|
||||||
}),
|
}),
|
||||||
tailwindcss(),
|
tailwindcss(),
|
||||||
|
|||||||
Reference in new issue
Block a user