/
web.php
301 lines (243 loc) · 18 KB
/
web.php
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
<?php
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', 'Auth\LoginController@showLoginOrRegister')->name('loginRedirect');
Auth::routes(['verify' => true]);
// Redirect .well-known urls (https://en.wikipedia.org/wiki/List_of_/.well-known/_services_offered_by_webservers)
Route::permanentRedirect('/.well-known/carddav', '/dav/');
Route::permanentRedirect('/.well-known/caldav', '/dav/');
Route::permanentRedirect('/.well-known/security.txt', '/security.txt');
Route::get('/invitations/accept/{key}', 'Auth\InvitationController@show')->name('invitations.accept');
Route::post('/invitations/accept/{key}', 'Auth\InvitationController@store')->name('invitations.send');
Route::middleware(['auth'])->group(function () {
Route::get('/logout', 'Auth\LoginController@logout');
Route::get('/auth/login-recovery', 'Auth\RecoveryLoginController@get')->name('recovery.login');
Route::post('/auth/login-recovery', 'Auth\RecoveryLoginController@store');
});
Route::middleware(['auth', '2fa'])->group(function () {
Route::post('/validate2fa', 'Auth\Validate2faController@index')->name('validate2fa');
});
Route::middleware(['auth', 'verified', 'mfa'])->group(function () {
Route::name('dashboard.')->group(function () {
Route::get('/dashboard', 'DashboardController@index')->name('index');
Route::get('/dashboard/calls', 'DashboardController@calls');
Route::get('/dashboard/notes', 'DashboardController@notes');
Route::get('/dashboard/debts', 'DashboardController@debts');
Route::post('/dashboard/setTab', 'DashboardController@setTab');
});
Route::get('/store/{file}', 'StorageController@show')->where('file', '.*')->name('storage');
Route::get('/compliance', 'ComplianceController@index')->name('compliance');
Route::post('/compliance/sign', 'ComplianceController@store');
Route::get('/changelog', 'ChangelogController@index')->name('changelog.index');
Route::get('/emotions', 'EmotionController@primaries');
Route::get('/emotions/primaries/{emotion}/secondaries', 'EmotionController@secondaries');
Route::get('/emotions/primaries/{emotion}/secondaries/{secondaryEmotion}/emotions', 'EmotionController@emotions');
Route::name('people.')->group(function () {
Route::get('/people/notfound', 'ContactsController@missing')->name('missing');
Route::get('/people/archived', 'ContactsController@archived')->name('archived');
// Dashboard
Route::get('/people', 'ContactsController@index')->name('index');
Route::get('/people/add', 'ContactsController@create')->name('create');
Route::get('/people/list', 'ContactsController@list')->name('list');
Route::post('/people', 'ContactsController@store')->name('store');
Route::get('/people/{contact}', 'ContactsController@show')->name('show');
Route::get('/people/{contact}/edit', 'ContactsController@edit')->name('edit');
Route::put('/people/{contact}', 'ContactsController@update')->name('update');
Route::delete('/people/{contact}', 'ContactsController@destroy')->name('destroy');
// Avatar
Route::get('/people/{contact}/avatar', 'Contacts\\AvatarController@edit')->name('avatar.edit');
Route::post('/people/{contact}/avatar', 'Contacts\\AvatarController@update')->name('avatar.update');
Route::post('/people/{contact}/makeProfilePicture/{photo}', 'Contacts\\AvatarController@photo')->name('avatar.photo');
// Life events
Route::name('lifeevent.')->group(function () {
Route::get('/people/{contact}/lifeevents', 'Contacts\\LifeEventsController@index')->name('index');
Route::get('/lifeevents/categories', 'Contacts\\LifeEventsController@categories')->name('categories');
Route::get('/lifeevents/categories/{lifeEventCategory}/types', 'Contacts\\LifeEventsController@types')->name('types');
Route::post('/people/{contact}/lifeevents', 'Contacts\\LifeEventsController@store')->name('store');
Route::delete('/lifeevents/{lifeEvent}', 'Contacts\\LifeEventsController@destroy')->name('destroy');
});
// Contact information
Route::get('/people/{contact}/contactfield', 'Contacts\\ContactFieldsController@getContactFields');
Route::post('/people/{contact}/contactfield', 'Contacts\\ContactFieldsController@storeContactField');
Route::put('/people/{contact}/contactfield/{contactField}', 'Contacts\\ContactFieldsController@editContactField');
Route::delete('/people/{contact}/contactfield/{contactField}', 'Contacts\\ContactFieldsController@destroyContactField');
Route::get('/people/{contact}/contactfieldtypes', 'Contacts\\ContactFieldsController@getContactFieldTypes');
// Export as vCard
Route::get('/people/{contact}/vcard', 'ContactsController@vcard')->name('vcard');
// Addresses
Route::get('/countries', 'Contacts\\AddressesController@getCountries');
Route::get('/people/{contact}/addresses', 'Contacts\\AddressesController@index');
Route::post('/people/{contact}/addresses', 'Contacts\\AddressesController@store');
Route::put('/people/{contact}/addresses/{address}', 'Contacts\\AddressesController@edit');
Route::delete('/people/{contact}/addresses/{address}', 'Contacts\\AddressesController@destroy');
// Work information
Route::name('work.')->group(function () {
Route::get('/people/{contact}/work/edit', 'ContactsController@editWork')->name('edit');
Route::post('/people/{contact}/work/update', 'ContactsController@updateWork')->name('update');
});
// Introductions
Route::name('introductions.')->group(function () {
Route::get('/people/{contact}/introductions/edit', 'Contacts\\IntroductionsController@edit')->name('edit');
Route::post('/people/{contact}/introductions/update', 'Contacts\\IntroductionsController@update')->name('update');
});
// Tags
Route::name('tags.')->group(function () {
Route::get('/tags', 'Contacts\\TagsController@index')->name('index');
Route::get('/people/{contact}/tags', 'Contacts\\TagsController@get')->name('get');
Route::post('/people/{contact}/tags/update', 'Contacts\\TagsController@update')->name('update');
});
// Notes
Route::resource('people/{contact}/notes', 'Contacts\\NotesController')->only([
'index', 'store', 'update', 'destroy',
]);
Route::post('/people/{contact}/notes/{note}/toggle', 'Contacts\\NotesController@toggle');
// Food preferences
Route::name('food.')->group(function () {
Route::get('/people/{contact}/food', 'ContactsController@editFoodPreferences')->name('index');
Route::post('/people/{contact}/food/save', 'ContactsController@updateFoodPreferences')->name('update');
});
// Relationships
Route::resource('people/{contact}/relationships', 'Contacts\\RelationshipsController')->only([
'create', 'store', 'edit', 'update', 'destroy',
]);
// Pets
Route::resource('people/{contact}/pets', 'Contacts\\PetsController')->only([
'index', 'store', 'update', 'destroy',
]);
Route::get('/petcategories', 'Contacts\\PetsController@getPetCategories');
// Reminders
Route::resource('people/{contact}/reminders', 'Contacts\\RemindersController')->except(['index', 'show']);
// Tasks
Route::get('people/{contact}/tasks', 'Contacts\\TasksController@index')->name('tasks.get');
Route::resource('tasks', 'TasksController')->only([
'index', 'store', 'update', 'destroy',
]);
// Debt
Route::resource('people/{contact}/debts', 'Contacts\\DebtController')->except(['index', 'show']);
// Phone calls
Route::resource('people/{contact}/calls', 'Contacts\\CallsController')->except(['show']);
// Conversations
Route::resource('people/{contact}/conversations', 'Contacts\\ConversationsController')->except(['show']);
// Documents
Route::resource('people/{contact}/documents', 'Contacts\\DocumentsController')->only(['index', 'store', 'destroy']);
// Photos
Route::resource('people/{contact}/photos', 'Contacts\\PhotosController')->only(['index', 'store', 'destroy']);
// Search
Route::post('/people/search', 'ContactsController@search')->name('search');
// Stay in touch information
Route::post('/people/{contact}/stayintouch', 'ContactsController@stayInTouch');
// Set favorite
Route::post('/people/{contact}/favorite', 'ContactsController@favorite');
// Archive/Unarchive
Route::put('/people/{contact}/archive', 'ContactsController@archive');
// Activities
Route::get('/activityCategories', 'Contacts\\ActivitiesController@categories')->name('activities.categories');
Route::resource('people/{contact}/activities', 'Contacts\\ActivitiesController')->only(['index']);
Route::get('/people/{contact}/activities/contacts', 'Contacts\\ActivitiesController@contacts')->name('activities.contacts');
Route::get('/people/{contact}/activities/summary', 'Contacts\\ActivitiesController@summary')->name('activities.summary');
Route::get('/people/{contact}/activities/{year}', 'Contacts\\ActivitiesController@year')->name('activities.year');
// Audit logs
Route::get('/people/{contact}/auditlogs', 'Contacts\\ContactAuditLogController@index')->name('auditlogs');
});
Route::name('journal.')->group(function () {
Route::get('/journal', 'JournalController@index')->name('index');
Route::get('/journal/entries', 'JournalController@list')->name('list');
Route::get('/journal/entries/{journalEntry}', 'JournalController@get');
Route::get('/journal/hasRated', 'JournalController@hasRated');
Route::post('/journal/day', 'JournalController@storeDay');
Route::delete('/journal/day/{day}', 'JournalController@trashDay');
Route::get('/journal/add', 'JournalController@create')->name('create');
Route::post('/journal/create', 'JournalController@save')->name('save');
Route::get('/journal/entries/{entry}/edit', 'JournalController@edit')->name('edit');
Route::put('/journal/entries/{entry}', 'JournalController@update')->name('update');
Route::delete('/journal/{entry}', 'JournalController@deleteEntry');
});
Route::name('settings.')->group(function () {
Route::get('/settings', 'SettingsController@index')->name('index');
Route::post('/settings/delete', 'SettingsController@delete')->name('delete');
Route::post('/settings/reset', 'SettingsController@reset')->name('reset');
Route::post('/settings/save', 'SettingsController@save')->name('save');
Route::name('personalization.')->group(function () {
Route::get('/settings/personalization', 'Settings\\PersonalizationController@index')->name('index');
Route::get('/settings/personalization/contactfieldtypes', 'Settings\\PersonalizationController@getContactFieldTypes');
Route::post('/settings/personalization/contactfieldtypes', 'Settings\\PersonalizationController@storeContactFieldType');
Route::put('/settings/personalization/contactfieldtypes/{contactFieldType}', 'Settings\\PersonalizationController@editContactFieldType');
Route::delete('/settings/personalization/contactfieldtypes/{contactFieldType}', 'Settings\\PersonalizationController@destroyContactFieldType');
Route::apiResource('settings/personalization/genders', 'Settings\\GendersController');
Route::delete('/settings/personalization/genders/{gender}/replaceby/{genderToReplaceWith}', 'Settings\\GendersController@destroyAndReplaceGender');
Route::get('/settings/personalization/genderTypes', 'Settings\\GendersController@types');
Route::put('/settings/personalization/genders/default/{gender}', 'Settings\\GendersController@updateDefault');
Route::get('/settings/personalization/reminderrules', 'Settings\\ReminderRulesController@index');
Route::post('/settings/personalization/reminderrules/{reminderRule}', 'Settings\\ReminderRulesController@toggle');
Route::get('/settings/personalization/modules', 'Settings\\ModulesController@index');
Route::post('/settings/personalization/modules/{module}', 'Settings\\ModulesController@toggle');
Route::apiResource('settings/personalization/activitytypecategories', 'Account\\Activity\\ActivityTypeCategoriesController');
Route::apiResource('settings/personalization/activitytypes', 'Account\\Activity\\ActivityTypesController', ['except' => ['index']]);
Route::get('settings/personalization/lifeeventcategories', 'Account\\LifeEvent\\LifeEventCategoriesController@index');
Route::apiResource('settings/personalization/lifeeventtypes', 'Account\\LifeEvent\\LifeEventTypesController', ['except' => ['index']]);
});
Route::get('/settings/export', 'SettingsController@export')->name('export');
Route::post('/settings/exportToSql', 'SettingsController@exportToSQL')->name('sql');
Route::get('/settings/import', 'SettingsController@import')->name('import');
Route::get('/settings/import/report/{importjobid}', 'SettingsController@report')->name('report');
Route::get('/settings/import/upload', 'SettingsController@upload')->name('upload');
Route::post('/settings/import/storeImport', 'SettingsController@storeImport')->name('storeImport');
Route::name('users.')->group(function () {
Route::get('/settings/users', 'SettingsController@users')->name('index');
Route::get('/settings/users/create', 'SettingsController@addUser')->name('create');
Route::post('/settings/users', 'SettingsController@inviteUser')->name('store');
Route::delete('/settings/users/{user}', 'SettingsController@deleteAdditionalUser')->name('destroy');
Route::delete('/settings/users/invitations/{invitation}', 'SettingsController@destroyInvitation')->name('invitation.delete');
});
Route::name('storage.')->group(function () {
Route::get('/settings/storage', 'Settings\\StorageController@index')->name('index');
});
Route::name('subscriptions.')->group(function () {
Route::get('/settings/subscriptions', 'Settings\\SubscriptionsController@index')->name('index');
Route::get('/settings/subscriptions/upgrade', 'Settings\\SubscriptionsController@upgrade')->name('upgrade');
Route::get('/settings/subscriptions/upgrade/success', 'Settings\\SubscriptionsController@upgradeSuccess')->name('upgrade.success');
Route::get('/settings/subscriptions/confirmPayment/{id}', 'Settings\\SubscriptionsController@confirmPayment')->name('confirm');
Route::post('/settings/subscriptions/processPayment', 'Settings\\SubscriptionsController@processPayment')->name('payment');
Route::get('/settings/subscriptions/invoice/{invoice}', 'Settings\\SubscriptionsController@downloadInvoice')->name('invoice');
Route::get('/settings/subscriptions/downgrade', 'Settings\\SubscriptionsController@downgrade')->name('downgrade');
Route::post('/settings/subscriptions/downgrade', 'Settings\\SubscriptionsController@processDowngrade');
Route::get('/settings/subscriptions/archive', 'Settings\\SubscriptionsController@archive')->name('archive');
Route::post('/settings/subscriptions/archive', 'Settings\\SubscriptionsController@processArchive');
Route::get('/settings/subscriptions/downgrade/success', 'Settings\\SubscriptionsController@downgradeSuccess')->name('downgrade.success');
if (! App::environment('production')) {
Route::get('/settings/subscriptions/forceCompletePaymentOnTesting', 'Settings\\SubscriptionsController@forceCompletePaymentOnTesting')->name('forceCompletePaymentOnTesting');
}
});
Route::get('/settings/auditlogs', 'Settings\\AuditLogController@index')->name('auditlog.index');
Route::name('tags.')->group(function () {
Route::get('/settings/tags', 'SettingsController@tags')->name('index');
Route::get('/settings/tags/add', 'SettingsController@addUser')->name('add');
Route::delete('/settings/tags/{tag}', 'SettingsController@deleteTag')->name('delete');
});
Route::get('/settings/api', 'SettingsController@api')->name('api');
Route::get('/settings/dav', 'SettingsController@dav')->name('dav');
Route::post('/settings/updateDefaultProfileView', 'SettingsController@updateDefaultProfileView');
// Security
Route::name('security.')->group(function () {
Route::get('/settings/security', 'SettingsController@security')->name('index');
Route::post('/settings/security/passwordChange', 'Auth\\PasswordChangeController@passwordChange')->name('passwordChange');
Route::get('/settings/security/2fa-enable', 'Settings\\MultiFAController@enableTwoFactor')->name('2fa-enable');
Route::post('/settings/security/2fa-enable', 'Settings\\MultiFAController@validateTwoFactor');
Route::get('/settings/security/2fa-disable', 'Settings\\MultiFAController@disableTwoFactor')->name('2fa-disable');
Route::post('/settings/security/2fa-disable', 'Settings\\MultiFAController@deactivateTwoFactor');
Route::post('/settings/security/generate-recovery-codes', 'Settings\\RecoveryCodesController@store');
Route::post('/settings/security/recovery-codes', 'Settings\\RecoveryCodesController@index');
});
});
});