feat: implement intern authentication and secure document dashboard for internship applications

This commit is contained in:
Ümit Tunç
2026-05-26 17:21:30 +03:00
parent 910e912b05
commit a4bc64527c
8 changed files with 370 additions and 1 deletions
@@ -6,7 +6,9 @@ use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Section;
use Filament\Schemas\Schema;
use Illuminate\Support\Facades\Hash;
class CareerApplicationForm
{
@@ -34,7 +36,8 @@ class CareerApplicationForm
->disk('public')
->directory('cvs')
->required()
->disabled(),
->disabled()
->downloadable(),
Textarea::make('message')
->label(__('career.message'))
@@ -50,6 +53,32 @@ class CareerApplicationForm
'accepted' => 'Accepted',
])
->required(),
Section::make('Stajyer Giriş Bilgileri & Belgeleri')
->description('Stajyerin sisteme giriş yapabilmesi için kullanıcı adı, şifre belirleyin ve imzalı staj formunu yükleyin.')
->collapsible()
->schema([
TextInput::make('username')
->label('Kullanıcı Adı')
->unique(ignoreRecord: true)
->nullable(),
TextInput::make('password')
->label('Şifre')
->password()
->dehydrateStateUsing(fn ($state) => filled($state) ? Hash::make($state) : null)
->dehydrated(fn ($state) => filled($state))
->placeholder('Şifreyi değiştirmek istemiyorsanız boş bırakın')
->nullable(),
FileUpload::make('signed_internship_form_path')
->label('İmzalı Staj Formu')
->disk('public')
->directory('signed_interns')
->downloadable()
->nullable(),
])
->columnSpanFull(),
]);
}
}
@@ -91,6 +91,12 @@ class CareerApplicationsTable
->icon('heroicon-o-arrow-down-tray')
->url(fn ($record) => Storage::disk('public')->url($record->cv_path))
->openUrlInNewTab(),
Action::make('download_signed_form')
->label('İmzalı Form İndir')
->icon('heroicon-o-document-check')
->url(fn ($record) => $record->signed_internship_form_path ? Storage::disk('public')->url($record->signed_internship_form_path) : null)
->visible(fn ($record) => !empty($record->signed_internship_form_path))
->openUrlInNewTab(),
Action::make('download_nda')
->label(__('career.nda'))
->icon('heroicon-o-shield-check')