feat: implement intern admin portal with login and dashboard management functionality
This commit is contained in:
@@ -223,11 +223,18 @@ class CareerController extends Controller
|
||||
|
||||
public function downloadMarkdown()
|
||||
{
|
||||
if (!session()->has('intern_id')) {
|
||||
return redirect()->route('intern.login')->with('error', 'Lütfen önce giriş yapın.');
|
||||
if (request()->has('intern_id') && auth()->check() && auth()->user()->hasRole('super_admin')) {
|
||||
$internId = request('intern_id');
|
||||
} else {
|
||||
if (!session()->has('intern_id')) {
|
||||
return redirect()->route('intern.login')->with('error', 'Lütfen önce giriş yapın.');
|
||||
}
|
||||
$internId = session('intern_id');
|
||||
}
|
||||
$intern = CareerApplication::findOrFail(session('intern_id'));
|
||||
|
||||
$intern = CareerApplication::findOrFail($internId);
|
||||
$repo = $intern->github_repo;
|
||||
|
||||
if (!$repo) {
|
||||
return redirect()->back()->with('error', 'Lütfen önce Github deposunu tanımlayın.');
|
||||
}
|
||||
@@ -328,4 +335,88 @@ class CareerController extends Controller
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
public function internAdminLoginForm()
|
||||
{
|
||||
if (auth()->check() && auth()->user()->hasRole('super_admin')) {
|
||||
return redirect()->route('intern.admin.dashboard');
|
||||
}
|
||||
return view('front.career.admin_login', [
|
||||
'meta' => [
|
||||
'title' => 'Yönetici Girişi - Staj Takip',
|
||||
'description' => 'Stajyerleri yönetmek için giriş yapın.',
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
public function internAdminLogin(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'email' => 'required|email',
|
||||
'password' => 'required|string',
|
||||
]);
|
||||
|
||||
if (auth()->attempt($request->only('email', 'password'))) {
|
||||
if (auth()->user()->hasRole('super_admin')) {
|
||||
return redirect()->route('intern.admin.dashboard')->with('success', 'Yönetici girişi başarıyla gerçekleştirildi.');
|
||||
}
|
||||
|
||||
auth()->logout();
|
||||
return redirect()->back()
|
||||
->withInput($request->only('email'))
|
||||
->withErrors([
|
||||
'email' => 'Bu panele erişmek için super_admin yetkinizin olması gerekir.',
|
||||
]);
|
||||
}
|
||||
|
||||
return redirect()->back()
|
||||
->withInput($request->only('email'))
|
||||
->withErrors([
|
||||
'email' => 'Girdiğiniz bilgiler eşleşmedi veya hatalı.',
|
||||
]);
|
||||
}
|
||||
|
||||
public function internAdminDashboard()
|
||||
{
|
||||
if (!auth()->check() || !auth()->user()->hasRole('super_admin')) {
|
||||
return redirect()->route('intern.admin.login')->with('error', 'Lütfen önce yönetici olarak giriş yapın.');
|
||||
}
|
||||
|
||||
$allInterns = CareerApplication::where('type', 'internship')
|
||||
->orderBy('created_at', 'desc')
|
||||
->get();
|
||||
|
||||
$ganttInterns = CareerApplication::where('type', 'internship')
|
||||
->where('status', 'accepted')
|
||||
->whereNotNull('internship_start_date')
|
||||
->whereNotNull('internship_end_date')
|
||||
->orderBy('internship_start_date', 'asc')
|
||||
->get()
|
||||
->map(function ($intern) {
|
||||
return [
|
||||
'id' => $intern->id,
|
||||
'parentId' => 0,
|
||||
'title' => $intern->name,
|
||||
'start' => $intern->internship_start_date,
|
||||
'end' => $intern->internship_end_date,
|
||||
'progress' => 100
|
||||
];
|
||||
});
|
||||
|
||||
return view('front.career.admin_dashboard', [
|
||||
'allInterns' => $allInterns,
|
||||
'ganttInterns' => $ganttInterns,
|
||||
'meta' => [
|
||||
'title' => 'Staj Yönetici Paneli',
|
||||
'description' => 'Stajyer bilgilerini ve takvimlerini izleyin.',
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
public function internAdminLogout()
|
||||
{
|
||||
auth()->logout();
|
||||
return redirect()->route('intern.admin.login')->with('success', 'Yönetici oturumu sonlandırıldı.');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user