3 Commits

Author SHA1 Message Date
Jp
fc672e4f4a feat(TransmittalResource): enhance search functionality across related models
Implement wildcard search on transmittal series, notes, and files to improve user experience when filtering records. Also extend search capabilities to client company and branch code fields for more comprehensive filtering.
2026-02-12 16:12:35 +08:00
Jp
a77e95d2a5 feat: implement FilamentUser interface for User model
Add FilamentUser interface to allow access control within Filament admin panel. The canAccessPanel method currently returns true for all users, providing a foundation for future permission-based access restrictions.
2026-02-11 05:44:49 +08:00
Jp
ee65bdfb31 fix: force HTTPS scheme in all environments
Previously HTTPS was only enforced in production, which could lead to insecure URLs in other environments like staging. This change ensures consistent URL generation across all environments.
2026-02-11 05:41:22 +08:00
3 changed files with 32 additions and 7 deletions

View File

@@ -45,16 +45,36 @@ class TransmittalResource extends Resource
->columns([
Tables\Columns\Layout\Split::make([
Tables\Columns\TextColumn::make('series')
->searchable()
->searchable(query: function (Builder $query, string $search): Builder {
$wildcardSearch = '%' . str_replace(' ', '%', $search) . '%';
return $query->where(function (Builder $query) use ($wildcardSearch) {
$query->where('series', 'like', $wildcardSearch)
->orWhereHas('notes', function (Builder $query) use ($wildcardSearch) {
$query->where('comment', 'like', $wildcardSearch);
})
->orWhereHas('files', function (Builder $query) use ($wildcardSearch) {
$query->where('description', 'like', $wildcardSearch);
});
});
})
->label('Series')
->weight(FontWeight::Bold)
->columnSpan(2),
Tables\Columns\Layout\Stack::make([
Tables\Columns\TextColumn::make('client.company')
->searchable()
->searchable(query: function (Builder $query, string $search): Builder {
return $query->whereHas('client', function (Builder $query) use ($search) {
$query->where('company', 'like', '%' . str_replace(' ', '%', $search) . '%');
});
})
->weight(FontWeight::SemiBold)->label('Client'),
Tables\Columns\TextColumn::make('branch.code')
->searchable()
->searchable(query: function (Builder $query, string $search): Builder {
return $query->whereHas('branch', function (Builder $query) use ($search) {
$query->where('code', 'like', '%' . str_replace(' ', '%', $search) . '%');
});
})
->label('Branch'),
]),
]),

View File

@@ -3,16 +3,23 @@
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Filament\Models\Contracts\FilamentUser;
use Filament\Panel;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Spatie\Permission\Traits\HasPermissions;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
class User extends Authenticatable implements FilamentUser
{
use HasFactory, HasPermissions, HasRoles, Notifiable;
public function canAccessPanel(Panel $panel): bool
{
return true;
}
/**
* The attributes that are mass assignable.
*

View File

@@ -23,9 +23,7 @@ class AppServiceProvider extends ServiceProvider
*/
public function boot(): void
{
if ($this->app->environment('production')) {
URL::forceScheme('https');
}
Gate::before(function ($user, $ability) {
return $user->hasRole('super_admin') ? true : null;