summaryrefslogtreecommitdiff
path: root/routes/web.php
blob: 57e5ca6d991ce08c0de6dfe494d897754a4c3c4d (plain)
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
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
<?php
/**
 * webtrees: online genealogy
 * Copyright (C) 2018 webtrees development team
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
declare(strict_types=1);

namespace Fisharebest\Webtrees;

$routes = [];

// Admin routes.
if (Auth::isAdmin()) {
	$routes += [
		'GET:admin-blocks'                    => 'AdminController@blocks',
		'GET:admin-charts'                    => 'AdminController@charts',
		'GET:admin-control-panel'             => 'AdminController@controlPanel',
		'POST:admin-delete-module-settings'   => 'AdminController@deleteModuleSettings',
		'GET:admin-fix-level-0-media'         => 'AdminController@fixLevel0Media',
		'POST:admin-fix-level-0-media-action' => 'AdminController@fixLevel0MediaAction',
		'GET:admin-fix-level-0-media-data'    => 'AdminController@fixLevel0MediaData',
		'GET:admin-menus'                     => 'AdminController@menus',
		'GET:admin-modules'                   => 'AdminController@modules',
		'GET:admin-reports'                   => 'AdminController@reports',
		'GET:admin-sidebars'                  => 'AdminController@sidebars',
		'GET:admin-tabs'                      => 'AdminController@tabs',
		'POST:admin-update-module-access'     => 'AdminController@updateModuleAccess',
		'POST:admin-update-module-status'     => 'AdminController@updateModuleStatus',
		'GET:admin-webtrees1-thumbs'          => 'AdminController@webtrees1Thumbnails',
		'POST:admin-webtrees1-thumbs-action'  => 'AdminController@webtrees1ThumbnailsAction',
		'GET:admin-webtrees1-thumbs-data'     => 'AdminController@webtrees1ThumbnailsData',
		'GET:admin-media'                     => 'AdminMediaController@index',
		'GET:admin-media-data'                => 'AdminMediaController@data',
		'POST:admin-media-delete'             => 'AdminMediaController@delete',
		'GET:admin-media-upload'              => 'AdminMediaController@upload',
		'POST:admin-media-upload'             => 'AdminMediaController@uploadAction',
		'GET:admin-clean-data'                => 'AdminSiteController@cleanData',
		'POST:admin-clean-data'               => 'AdminSiteController@cleanDataAction',
		'GET:admin-site-preferences'          => 'AdminSiteController@preferencesForm',
		'POST:admin-site-preferences'         => 'AdminSiteController@preferencesSave',
		'GET:admin-site-mail'                 => 'AdminSiteController@mailForm',
		'POST:admin-site-mail'                => 'AdminSiteController@mailSave',
		'GET:admin-site-registration'         => 'AdminSiteController@registrationForm',
		'POST:admin-site-registration'        => 'AdminSiteController@registrationSave',
		'GET:admin-site-languages'            => 'AdminSiteController@languagesForm',
		'POST:admin-site-languages'           => 'AdminSiteController@languagesSave',
		'GET:admin-site-analytics'            => 'AdminSiteController@analyticsForm',
		'POST:admin-site-analytics'           => 'AdminSiteController@analyticsSave',
		'GET:admin-site-logs'                 => 'AdminSiteController@logs',
		'GET:admin-site-logs-data'            => 'AdminSiteController@logsData',
		'POST:admin-site-logs-delete'         => 'AdminSiteController@logsDelete',
		'GET:admin-site-logs-export'          => 'AdminSiteController@logsExport',
		'GET:admin-site-information'          => 'AdminSiteController@serverInformation',
		'GET:admin-trees-import'              => 'AdminTreesController@importForm',
		'POST:admin-trees-import'             => 'AdminTreesController@importAction',
		'POST:admin-trees-create'             => 'AdminTreesController@create',
		'POST:admin-trees-default'            => 'AdminTreesController@setDefault',
		'POST:admin-trees-delete'             => 'AdminTreesController@delete',
		'POST:admin-trees-sync'               => 'AdminTreesController@synchronize',
		'GET:admin-trees'                     => 'AdminTreesController@index',
		'GET:admin-trees-check'               => 'AdminTreesController@check',
		'GET:admin-trees-duplicates'          => 'AdminTreesController@duplicates',
		'GET:admin-trees-export'              => 'AdminTreesController@export',
		'GET:admin-trees-download'            => 'AdminTreesController@exportClient',
		'POST:admin-trees-export'             => 'AdminTreesController@exportServer',
		'GET:admin-trees-places'              => 'AdminTreesController@places',
		'POST:admin-trees-places'             => 'AdminTreesController@placesAction',
		'GET:admin-trees-preferences'         => 'AdminTreesController@preferences',
		'POST:admin-trees-preferences'        => 'AdminTreesController@preferencesUpdate',
		'GET:admin-trees-renumber'            => 'AdminTreesController@renumber',
		'POST:admin-trees-renumber'           => 'AdminTreesController@renumberAction',
		'GET:admin-trees-merge'               => 'AdminTreesController@merge',
		'POST:admin-trees-merge'              => 'AdminTreesController@mergeAction',
		'GET:admin-trees-unconnected'         => 'AdminTreesController@unconnected',
		'GET:admin-users'                     => 'AdminUsersController@index',
		'GET:admin-users-data'                => 'AdminUsersController@data',
		'GET:admin-users-create'              => 'AdminUsersController@create',
		'POST:admin-users-create'             => 'AdminUsersController@save',
		'GET:admin-users-edit'                => 'AdminUsersController@edit',
		'POST:admin-users-edit'               => 'AdminUsersController@update',
		'GET:admin-users-cleanup'             => 'AdminUsersController@cleanup',
		'POST:admin-users-cleanup'            => 'AdminUsersController@cleanupAction',
		'GET:tree-page-default-edit'          => 'HomePageController@treePageDefaultEdit',
		'POST:tree-page-default-update'       => 'HomePageController@treePageDefaultUpdate',
		'GET:user-page-default-edit'          => 'HomePageController@userPageDefaultEdit',
		'POST:user-page-default-update'       => 'HomePageController@userPageDefaultUpdate',
		'GET:user-page-user-edit'             => 'HomePageController@userPageUserEdit',
		'POST:user-page-user-update'          => 'HomePageController@userPageUserUpdate',
		'GET:unused-media-thumbnail'          => 'MediaFileController@unusedMediaThumbnail',
		'GET:broadcast'                       => 'MessageController@broadcastPage',
		'POST:broadcast'                      => 'MessageController@broadcastAction',
		'POST:select2-flag'                   => 'AutocompleteController@select2Flag',
		'GET:phpgedview-wizard'               => 'AdminPhpGedViewController@wizard',
		'POST:phpgedview-wizard'              => 'AdminPhpGedViewController@step',
		'GET:upgrade'                         => 'AdminUpgradeController@wizard',
		'POST:upgrade'                        => 'AdminUpgradeController@step',
	];
}

// Manager routes.
if ($tree instanceof Tree && Auth::isManager($tree)) {
	$routes += [
		'GET:admin-control-panel-manager' => 'AdminController@controlPanelManager',
		'GET:admin-changes-log'           => 'AdminController@changesLog',
		'GET:admin-changes-log-data'      => 'AdminController@changesLogData',
		'GET:admin-changes-log-download'  => 'AdminController@changesLogDownload',
		'GET:tree-page-edit'              => 'HomePageController@treePageEdit',
		'POST:import'                     => 'GedcomFileController@import',
		'POST:tree-page-update'           => 'HomePageController@treePageUpdate',
		'GET:merge-records'               => 'AdminController@mergeRecords',
		'POST:merge-records'              => 'AdminController@mergeRecordsAction',
		'GET:tree-page-block-edit'        => 'HomePageController@treePageBlockEdit',
		'POST:tree-page-block-edit'       => 'HomePageController@treePageBlockUpdate',
		'GET:tree-preferences'            => 'AdminController@treePreferencesEdit',
		'POST:tree-preferences'           => 'AdminController@treePreferencesUpdate',
		'GET:tree-privacy'                => 'AdminController@treePrivacyEdit',
		'POST:tree-privacy'               => 'AdminController@treePrivacyUpdate',
	];
}

// Moderator routes.
if ($tree instanceof Tree && $tree->getPreference('imported') === '1' && Auth::isModerator($tree)) {
	$routes += [
		'GET:show-pending'        => 'PendingChangesController@showChanges',
		'POST:accept-pending'     => 'PendingChangesController@acceptChange',
		'POST:reject-pending'     => 'PendingChangesController@rejectChange',
		'POST:accept-all-pending' => 'PendingChangesController@acceptAllChanges',
		'POST:reject-all-pending' => 'PendingChangesController@rejectAllChanges',
	];
}

// Editor routes.
if ($tree instanceof Tree && $tree->getPreference('imported') === '1' && Auth::isEditor($tree)) {
	$routes += [
		'GET:add-media-file'             => 'EditMediaController@addMediaFile',
		'POST:add-media-file'            => 'EditMediaController@addMediaFileAction',
		'GET:edit-media-file'            => 'EditMediaController@editMediaFile',
		'POST:edit-media-file'           => 'EditMediaController@editMediaFileAction',
		'GET:create-media-object'        => 'EditMediaController@createMediaObject',
		'POST:create-media-object'       => 'EditMediaController@createMediaObjectAction',
		'POST:create-media-from-file'    => 'EditMediaController@createMediaObjectFromFileAction',
		'GET:link-media-to-individual'   => 'EditMediaController@linkMediaToIndividual',
		'GET:link-media-to-family'       => 'EditMediaController@linkMediaToFamily',
		'GET:link-media-to-source'       => 'EditMediaController@linkMediaToSource',
		'POST:link-media-to-record'      => 'EditMediaController@linkMediaToRecordAction',
		'GET:create-note-object'         => 'EditNoteController@createNoteObject',
		'POST:create-note-object'        => 'EditNoteController@createNoteObjectAction',
		'GET:edit-note-object'           => 'EditNoteController@editNoteObject',
		'POST:edit-note-object'          => 'EditNoteController@updateNoteObject',
		'GET:create-repository'          => 'EditRepositoryController@createRepository',
		'POST:create-repository'         => 'EditRepositoryController@createRepositoryAction',
		'GET:create-source'              => 'EditSourceController@createSource',
		'POST:create-source'             => 'EditSourceController@createSourceAction',
		'GET:create-submitter'           => 'EditSubmitterController@createSubmitter',
		'POST:create-submitter'          => 'EditSubmitterController@createSubmitterAction',
		'GET:reorder-children'           => 'EditFamilyController@reorderChildren',
		'POST:reorder-children'          => 'EditFamilyController@reorderChildrenAction',
		'GET:reorder-media'              => 'EditIndividualController@reorderMedia',
		'POST:reorder-media'             => 'EditIndividualController@reorderMediaAction',
		'GET:reorder-names'              => 'EditIndividualController@reorderNames',
		'POST:reorder-names'             => 'EditIndividualController@reorderNamesAction',
		'GET:reorder-spouses'            => 'EditIndividualController@reorderSpouses',
		'POST:reorder-spouses'           => 'EditIndividualController@reorderSpousesAction',
		'GET:edit-raw-record'            => 'EditGedcomRecordController@editRawRecord',
		'POST:edit-raw-record'           => 'EditGedcomRecordController@editRawRecordAction',
		'GET:edit-raw-fact'              => 'EditGedcomRecordController@editRawFact',
		'POST:edit-raw-fact'             => 'EditGedcomRecordController@editRawFactAction',
		'POST:copy-fact'                 => 'EditGedcomRecordController@copyFact',
		'POST:delete-fact'               => 'EditGedcomRecordController@deleteFact',
		'POST:paste-fact'                => 'EditGedcomRecordController@pasteFact',
		'POST:delete-record'             => 'EditGedcomRecordController@deleteRecord',
		'GET:add-fact'                   => 'EditGedcomRecordController@addFact',
		'GET:edit-fact'                  => 'EditGedcomRecordController@editFact',
		'POST:update-fact'               => 'EditGedcomRecordController@updateFact',
		'GET:search-replace'             => 'SearchController@replace',
		'POST:search-replace'            => 'SearchController@replaceAction',
		'GET:add-child-to-family'        => 'EditFamilyController@addChild',
		'POST:add-child-to-family'       => 'EditFamilyController@addChildAction',
		'GET:add-spouse-to-family'       => 'EditFamilyController@addSpouse',
		'POST:add-spouse-to-family'      => 'EditFamilyController@addSpouseAction',
		'GET:change-family-members'      => 'EditFamilyController@changeFamilyMembers',
		'POST:change-family-members'     => 'EditFamilyController@changeFamilyMembersAction',
		'GET:add-child-to-individual'    => 'EditIndividualController@addChild',
		'POST:add-child-to-individual'   => 'EditIndividualController@addChildAction',
		'GET:add-parent-to-individual'   => 'EditIndividualController@addParent',
		'POST:add-parent-to-individual'  => 'EditIndividualController@addParentAction',
		'GET:add-spouse-to-individual'   => 'EditIndividualController@addSpouse',
		'POST:add-spouse-to-individual'  => 'EditIndividualController@addSpouseAction',
		'GET:add-unlinked-individual'    => 'EditIndividualController@addUnlinked',
		'POST:add-unlinked-individual'   => 'EditIndividualController@addUnlinkedAction',
		'GET:link-child-to-family'       => 'EditIndividualController@linkChildToFamily',
		'POST:link-child-to-family'      => 'EditIndividualController@linkChildToFamilyAction',
		'GET:link-spouse-to-individual'  => 'EditIndividualController@linkSpouseToIndividual',
		'POST:link-spouse-to-individual' => 'EditIndividualController@linkSpouseToIndividualAction',
		'GET:edit-name'                  => 'EditIndividualController@editName',
		'POST:edit-name'                 => 'EditIndividualController@editNameAction',
		'GET:add-name'                   => 'EditIndividualController@addName',
		'POST:add-name'                  => 'EditIndividualController@addNameAction',
	];
}

// Member routes.
if ($tree instanceof Tree && $tree->getPreference('imported') === '1' && Auth::isMember($tree)) {
	$routes += [
		'GET:user-page'             => 'HomePageController@userPage',
		'GET:user-page-block'       => 'HomePageController@userPageBlock',
		'GET:user-page-edit'        => 'HomePageController@userPageEdit',
		'POST:user-page-update'     => 'HomePageController@userPageUpdate',
		'GET:user-page-block-edit'  => 'HomePageController@userPageBlockEdit',
		'POST:user-page-block-edit' => 'HomePageController@userPageBlockUpdate',
		'GET:my-account'            => 'AccountController@edit',
		'POST:my-account'           => 'AccountController@update',
		'POST:delete-account'       => 'AccountController@delete',
	];
}

// Public routes (that need a tree).
if ($tree instanceof Tree && $tree->getPreference('imported') === '1') {
	$routes += [
		'GET:autocomplete-folder'    => 'AutocompleteController@folder',
		'GET:autocomplete-place'     => 'AutocompleteController@place',
		'GET:branches'               => 'BranchesController@page',
		'GET:branches-list'          => 'BranchesController@list',
		'GET:calendar'               => 'CalendarController@page',
		'GET:calendar-events'        => 'CalendarController@calendar',
		'POST:expand-chart-box'      => 'IndividualController@expandChartBox',
		'GET:help-text'              => 'HelpTextController@helpText',
		'GET:tree-page'              => 'HomePageController@treePage',
		'GET:tree-page-block'        => 'HomePageController@treePageBlock',
		'GET:media-thumbnail'        => 'MediaFileController@mediaThumbnail',
		'GET:media-download'         => 'MediaFileController@mediaDownload',
		'GET:family'                 => 'FamilyController@show',
		'GET:individual'             => 'IndividualController@show',
		'GET:individual-tab'         => 'IndividualController@tab',
		'GET:media'                  => 'MediaController@show',
		'GET:contact'                => 'MessageController@contactPage',
		'POST:contact'               => 'MessageController@contactAction',
		'GET:message'                => 'MessageController@messagePage',
		'POST:message'               => 'MessageController@messageAction',
		'GET:note'                   => 'NoteController@show',
		'GET:source'                 => 'SourceController@show',
		'GET:record'                 => 'GedcomRecordController@show',
		'GET:repository'             => 'RepositoryController@show',
		'GET:report-list'            => 'ReportEngineController@reportList',
		'GET:report-setup'           => 'ReportEngineController@reportSetup',
		'GET:report-run'             => 'ReportEngineController@reportRun',
		'GET:family-list'            => 'ListController@familyList',
		'GET:individual-list'        => 'ListController@individualList',
		'GET:media-list'             => 'ListController@mediaList',
		'GET:note-list'              => 'ListController@noteList',
		'GET:repository-list'        => 'ListController@repositoryList',
		'GET:source-list'            => 'ListController@sourceList',
		'GET:ancestors'              => 'AncestorsChartController@page',
		'GET:ancestors-chart'        => 'AncestorsChartController@chart',
		'GET:compact-tree'           => 'CompactTreeChartController@page',
		'GET:compact-tree-chart'     => 'CompactTreeChartController@chart',
		'GET:descendants'            => 'DescendantsChartController@page',
		'GET:descendants-chart'      => 'DescendantsChartController@chart',
		'GET:family-book'            => 'FamilyBookChartController@page',
		'GET:family-book-chart'      => 'FamilyBookChartController@chart',
		'GET:fan'                    => 'FanChartController@page',
		'GET:fan-chart'              => 'FanChartController@chart',
		'GET:hourglass'              => 'HourglassChartController@page',
		'GET:hourglass-chart'        => 'HourglassChartController@chart',
		'POST:hourglass-add-asc'     => 'HourglassChartController@chartAddAncestor',
		'POST:hourglass-add-desc'    => 'HourglassChartController@chartAddDescendant',
		'GET:interactive'            => 'InteractiveChartController@page',
		'GET:interactive-chart'      => 'InteractiveChartController@chart',
		'GET:lifespans'              => 'LifespansChartController@page',
		'GET:lifespans-chart'        => 'LifespansChartController@chart',
		'GET:pedigree'               => 'PedigreeChartController@page',
		'GET:pedigree-chart'         => 'PedigreeChartController@chart',
		'GET:relationships'          => 'RelationshipsChartController@page',
		'GET:relationships-chart'    => 'RelationshipsChartController@chart',
		'GET:statistics'             => 'StatisticsChartController@page',
		'GET:statistics-families'    => 'StatisticsChartController@chartFamilies',
		'GET:statistics-individuals' => 'StatisticsChartController@chartIndividuals',
		'GET:statistics-other'       => 'StatisticsChartController@chartOther',
		'GET:statistics-options'     => 'StatisticsChartController@chartCustomOptions',
		'GET:statistics-chart'       => 'StatisticsChartController@chartCustomChart',
		'GET:timeline'               => 'TimelineChartController@page',
		'GET:timeline-chart'         => 'TimelineChartController@chart',
		'POST:accept-changes'        => 'PendingChangesController@acceptChanges',
		'POST:reject-changes'        => 'PendingChangesController@rejectChanges',
		'POST:accept-all-changes'    => 'PendingChangesController@acceptAllChanges',
		'POST:reject-all-changes'    => 'PendingChangesController@rejectAllChanges',
		'POST:select2-family'        => 'AutocompleteController@select2Family',
		'POST:select2-individual'    => 'AutocompleteController@select2Individual',
		'POST:select2-media'         => 'AutocompleteController@select2MediaObject',
		'POST:select2-note'          => 'AutocompleteController@select2Note',
		'POST:select2-source'        => 'AutocompleteController@select2Source',
		'POST:select2-submitter'     => 'AutocompleteController@select2Submitter',
		'POST:select2-repository'    => 'AutocompleteController@select2Repository',
		'GET:search-quick'           => 'SearchController@quick',
		'GET:search-advanced'        => 'SearchController@advanced',
		'GET:search-general'         => 'SearchController@general',
		'GET:search-phonetic'        => 'SearchController@phonetic',
	];
}

// Public routes (that do not need a tree).
$routes += [
	'GET:login'            => 'Auth\\LoginController@loginPage',
	'POST:login'           => 'Auth\\LoginController@loginAction',
	'GET:logout'           => 'Auth\\LoginController@logoutAction',
	'POST:logout'          => 'Auth\\LoginController@logoutAction',
	'GET:register'         => 'Auth\\RegisterController@registerPage',
	'POST:register'        => 'Auth\\RegisterController@registerAction',
	'GET:verify'           => 'Auth\\VerifyEmailController@verify',
	'GET:forgot-password'  => 'Auth\\ForgotPasswordController@forgotPasswordPage',
	'POST:forgot-password' => 'Auth\\ForgotPasswordController@forgotPasswordAction',
	'POST:delete-user'     => 'UserController@delete',
	'POST:language'        => 'UserController@language',
	'POST:masquerade'      => 'UserController@masquerade',
	'POST:theme'           => 'UserController@theme',
	'GET:privacy-policy'   => 'StaticPageController@privacyPolicy',
	'GET:module'           => 'ModuleController@action',
	'POST:module'          => 'ModuleController@action',
];

return $routes;