1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
<?php
use App\Http\Controllers\Api\AdminController;
use App\Http\Controllers\Api\AppointmentController;
use App\Http\Controllers\Api\Auth\AdminAuthController;
use App\Http\Controllers\Api\Auth\CompanyAuthController;
use App\Http\Controllers\Api\Auth\StudentAuthController;
use App\Http\Controllers\Api\CompanyController;
use App\Http\Controllers\Api\ConnectionController;
use App\Http\Controllers\Api\DiplomaController;
use App\Http\Controllers\Api\LogController;
use App\Http\Controllers\Api\LoginController;
use App\Http\Controllers\Api\MessageController;
use App\Http\Controllers\Api\PasswordResetController;
use App\Http\Controllers\Api\SkillController;
use App\Http\Controllers\Api\StudentController;
use Illuminate\Support\Facades\Route;
// Student routes
Route::middleware(['throttle:300,1'])->group(function () {
Route::post('/students', [StudentController::class, 'store']);
Route::get('/students/{id}', [StudentController::class, 'show']);
});
Route::get('/students/{id}/verify', [StudentController::class, 'verify'])
->name('students.verify') // maak een naam voor de route, kan ik die straks makkelijker aanroepen in de mail view
->middleware('signed');
Route::get('/students', [StudentController::class, 'index']);
Route::middleware(['auth:sanctum', 'ability:student,admin', 'throttle:300,1'])->group(function () {
Route::put('/students/{id}', [StudentController::class, 'update']);
Route::delete('/students/{id}', [StudentController::class, 'destroy']);
Route::patch('/students/{id}', [StudentController::class, 'partialUpdate']);
});
// Company routes
Route::middleware(['throttle:300,1'])->group(function () {
Route::get('/companies', [CompanyController::class, 'index']);
Route::get('/companies/{id}', [CompanyController::class, 'show']);
});
Route::middleware(['auth:sanctum', 'ability:company,admin', 'throttle:300,1'])->group(function () {
Route::post('/companies', [CompanyController::class, 'store']);
Route::put('/companies/{id}', [CompanyController::class, 'update']);
Route::delete('/companies/{id}', [CompanyController::class, 'destroy']);
Route::patch('companies/{id}', [CompanyController::class, 'partialUpdate']);
});
// Admin routes
Route::post('/admins', [AdminController::class, 'store']);
Route::middleware(['auth:sanctum', 'ability:admin', 'throttle:1,1'])->group(function () {
// Admin CRUD operations
Route::get('/admins', [AdminController::class, 'index']);
Route::get('/admins/{id}', [AdminController::class, 'show']);
Route::put('/admins/{id}', [AdminController::class, 'update']);
Route::delete('/admins/{id}', [AdminController::class, 'destroy']);
});
// Logs
Route::middleware(['auth:sanctum', 'ability:admin', 'throttle:50,1'])->group(function () {
Route::get('/admin/logs', [LogController::class, 'getLogs']);
Route::get('admin/logs/students/{id}', [LogController::class, 'getLogsStudent']);
Route::get('admin/logs/companies/{id}', [LogController::class, 'getLogsCompany']);
Route::get('admin/logs/admins/{id}', [LogController::class, 'getLogsAdmin']);
});
// Appointment routes
Route::middleware(['auth:sanctum', 'throttle:500,1'])->group(function () {
Route::get('/appointments', [AppointmentController::class, 'index']);
Route::post('/appointments', [AppointmentController::class, 'store']);
Route::get('/appointments/{id}', [AppointmentController::class, 'show']);
Route::put('/appointments/{id}', [AppointmentController::class, 'update']);
Route::delete('/appointments/{id}', [AppointmentController::class, 'destroy']);
Route::get('/connections', [ConnectionController::class, 'index']);
Route::post('/connections', [ConnectionController::class, 'store']);
Route::get('/connections/{id}', [ConnectionController::class, 'show']);
Route::patch('/connections/{id}', [ConnectionController::class, 'update']);
// hier een patch in plaats van een put omdat enkel het tijdstip wordt aangepast
Route::delete('/connections/{id}', [ConnectionController::class, 'destroy']);
Route::get('/connections/student/{id}', [ConnectionController::class, 'showConnectionStudent']);
Route::get('/connections/company/{id}', [ConnectionController::class, 'showConnectionCompany']);
// Protected Logout Authenticatie
Route::post('/students/logout', [StudentAuthController::class, 'logout']);
Route::post('/companies/logout', [CompanyAuthController::class, 'logout']);
Route::post('/admins/logout', [AdminAuthController::class, 'logout']);
Route::post('/logout', [LoginController::class, 'logout']);
});
// Authenticatie mail routes
Route::post('/password-reset', [PasswordResetController::class, 'sendResetStudentPassword']);
// Berichten
Route::post('/messages/send', [MessageController::class, 'sendMessage']);
Route::post('/messages/conversation', [MessageController::class, 'getConversation']);
Route::middleware('throttle:api')->group(function () {
// Skills routes
Route::get('/skills', [SkillController::class, 'index']);
Route::get('/skills/{id}', [SkillController::class, 'show']);
Route::post('/students/{id}/skills', [SkillController::class, 'attachToStudent']);
Route::delete('/students/{id}/skills/{skill_id}', [SkillController::class, 'detachFromStudent']);
Route::get('/students/{id}/skills', [SkillController::class, 'getStudentSkills']);
Route::post('/companies/{id}/skills', [SkillController::class, 'attachToCompany']);
Route::delete('/companies/{id}/skills/{skill_id}', [SkillController::class, 'detachFromCompany']);
Route::get('/companies/{id}/skills', [SkillController::class, 'getCompanySkills']);
// Calculate skill match percentage
Route::get('/match/{student_id}/{company_id}', [SkillController::class, 'calculateMatch']);
// Diplomas ophalen
Route::get('/diplomas', [DiplomaController::class, 'index']);
Route::get('/diplomas/{id}', [DiplomaController::class, 'show']);
});
// Authenticatie
Route::post('/students/login', [StudentAuthController::class, 'login'])->middleware('throttle:login');
Route::post('/companies/login', [CompanyAuthController::class, 'login'])->middleware('throttle:login');
Route::post('/admins/login', [AdminAuthController::class, 'login'])->middleware('throttle:login');
Route::post('/login', [LoginController::class, 'login'])->middleware('throttle:login');
|