1 | <?php |
||
22 | class RouteServiceProvider extends ServiceProvider |
||
23 | { |
||
24 | /** |
||
25 | * This namespace is applied to the controller routes in your routes file. |
||
26 | * |
||
27 | * In addition, it is set as the URL generator's root namespace. |
||
28 | * |
||
29 | * @var string |
||
30 | */ |
||
31 | protected $namespace = 'Tinyissue\Http\Controllers'; |
||
32 | |||
33 | /** |
||
34 | * Define your route model bindings, pattern filters, etc. |
||
35 | * |
||
36 | * @param \Illuminate\Routing\Router $router |
||
37 | */ |
||
38 | 59 | public function boot(Router $router) |
|
42 | |||
43 | /** |
||
44 | * Define the routes for the application. |
||
45 | * |
||
46 | * @param Router $router |
||
47 | */ |
||
48 | 59 | public function map(Router $router) |
|
49 | { |
||
50 | $router->group(['namespace' => $this->namespace], function (Router $router) { |
||
51 | 59 | $router->get('/', 'HomeController@getIndex'); |
|
52 | 59 | $router->get('logout', 'HomeController@getLogout'); |
|
53 | 59 | $router->post('signin', 'HomeController@postSignin'); |
|
54 | |||
55 | 59 | if (app('tinyissue.settings')->isPublicProjectsEnabled()) { |
|
56 | 5 | $this->addPublicRoutes($router); |
|
57 | } |
||
58 | |||
59 | $router->group(['middleware' => 'auth'], function (Router $router) { |
||
60 | 59 | $router->get('dashboard', 'HomeController@getDashboard'); |
|
61 | |||
62 | // Login user area |
||
63 | 59 | $router->controller('user', 'UserController'); |
|
64 | |||
65 | // Projects area |
||
66 | 59 | if (!app('tinyissue.settings')->isPublicProjectsEnabled()) { |
|
67 | 56 | $this->addPublicProjectsRoutes($router); |
|
68 | } |
||
69 | 59 | $router->get('projects/new_issue', 'ProjectsController@getNewIssue'); |
|
70 | 59 | $router->post('projects/new_issue', 'ProjectsController@postNewIssue'); |
|
71 | $router->group(['middleware' => 'permission', 'permission' => 'project-create'], function (Router $router) { |
||
72 | 59 | $router->get('projects/new', 'ProjectsController@getNew'); |
|
73 | 59 | $router->post('projects/new', 'ProjectsController@postNew'); |
|
74 | 59 | }); |
|
75 | |||
76 | $router->group(['middleware' => 'project'], function (Router $router) { |
||
77 | 59 | $router->model('project', 'Tinyissue\Model\Project'); |
|
78 | 59 | $router->model('attachment', 'Tinyissue\Model\Project\Issue\Attachment'); |
|
79 | 59 | $router->pattern('comment', '[0-9]+'); |
|
80 | 59 | $router->pattern('issue', '[0-9]+'); |
|
81 | 59 | $router->pattern('limit', '[0-9]+'); |
|
82 | 59 | $router->model('comment', 'Tinyissue\Model\Project\Issue\Comment'); |
|
83 | 59 | $router->pattern('project', '[0-9]+'); |
|
84 | 59 | $router->pattern('attachment', '[0-9]+'); |
|
85 | 59 | $router->pattern('note', '[0-9]+'); |
|
86 | 59 | $router->pattern('term', '\w+'); |
|
87 | 59 | $router->model('note', 'Tinyissue\Model\Project\Note'); |
|
88 | |||
89 | 59 | if (!app('tinyissue.settings')->isPublicProjectsEnabled()) { |
|
90 | 56 | $this->addPublicProjectRoutes($router); |
|
91 | } |
||
92 | |||
93 | // View project |
||
94 | 59 | $router->get('project/{project}/assigned', 'ProjectController@getAssigned'); |
|
95 | |||
96 | // Edit project |
||
97 | $router->group(['middleware' => 'permission', 'permission' => 'project-modify'], function (Router $router) { |
||
98 | 59 | $router->get('project/{project}/edit', 'ProjectController@getEdit'); |
|
99 | 59 | $router->post('project/{project}/edit', 'ProjectController@postEdit'); |
|
100 | 59 | $router->get('project/inactive_users/{project?}', array('middleware' => 'ajax', 'uses' => 'ProjectController@getInactiveUsers')); |
|
101 | 59 | $router->post('project/{project}/unassign_user', array('middleware' => 'ajax', 'uses' => 'ProjectController@postUnassign')); |
|
102 | 59 | $router->post('project/{project}/assign_user', array('middleware' => 'ajax', 'uses' => 'ProjectController@postAssign')); |
|
103 | 59 | $router->post('project/{project}/export_issues', array('middleware' => 'ajax', 'uses' => 'ProjectController@postExportIssues')); |
|
104 | 59 | $router->get('project/{project}/download_export/{file}', array('uses' => 'ProjectController@getDownloadExport')); |
|
105 | |||
106 | // Edit project notes |
||
107 | 59 | $router->post('project/{project}/edit_note/{note}', ['middleware' => 'ajax', 'uses' => 'ProjectController@postEditNote']); |
|
108 | 59 | $router->get('project/{project}/delete_note/{note}', ['middleware' => 'ajax', 'uses' => 'ProjectController@getDeleteNote']); |
|
109 | 59 | $router->post('project/{project}/add_note', 'ProjectController@postAddNote'); |
|
110 | 59 | }); |
|
111 | |||
112 | // Add issue |
||
113 | $router->group(['middleware' => 'permission', 'permission' => 'issue-create'], function (Router $router) { |
||
114 | 59 | $router->get('project/{project}/issue/new', 'Project\IssueController@getNew'); |
|
115 | 59 | $router->post('project/{project}/issue/new', 'Project\IssueController@postNew'); |
|
116 | 59 | }); |
|
117 | |||
118 | // Edit issue |
||
119 | $router->group(array('middleware' => 'permission', 'permission' => 'issue-modify'), function (Router $router) { |
||
120 | 59 | $router->get('project/{project}/issue/{issue}/edit', 'Project\IssueController@getEdit'); |
|
121 | 59 | $router->post('project/{project}/issue/{issue}/edit', 'Project\IssueController@postEdit'); |
|
122 | 59 | $router->post('project/issue/{issue}/assign', ['middleware' => 'ajax', 'uses' => 'Project\IssueController@postAssign']); |
|
123 | 59 | $router->get('project/{project}/issue/{issue}/status/{status?}', 'Project\IssueController@getClose')->where('status', '[0-1]'); |
|
124 | 59 | $router->post('project/{project}/issue/upload_attachment', 'Project\IssueController@postUploadAttachment'); |
|
125 | 59 | $router->post('project/{project}/issue/remove_attachment', 'Project\IssueController@postRemoveAttachment'); |
|
126 | 59 | $router->post('project/issue/{issue}/change_project', 'Project\IssueController@postChangeProject'); |
|
127 | |||
128 | // Edit comment |
||
129 | 59 | $router->post('project/issue/edit_comment/{comment}', ['middleware' => 'ajax', 'uses' => 'Project\IssueController@postEditComment']); |
|
130 | 59 | $router->get('project/issue/delete_comment/{comment}', ['middleware' => 'ajax', 'uses' => 'Project\IssueController@getDeleteComment']); |
|
131 | 59 | $router->post('project/{project}/issue/{issue}/add_comment', 'Project\IssueController@getAddComment'); |
|
132 | 59 | }); |
|
133 | 59 | }); |
|
134 | |||
135 | // Admin area |
||
136 | $router->group(['middleware' => 'permission', 'permission' => 'administration'], function (Router $router) { |
||
137 | 59 | $router->model('user', 'Tinyissue\Model\User'); |
|
138 | 59 | $router->get('administration', 'AdministrationController@getIndex'); |
|
139 | 59 | $router->get('administration/users', 'Administration\UsersController@getIndex'); |
|
140 | 59 | $router->get('administration/users/add', 'Administration\UsersController@getAdd'); |
|
141 | 59 | $router->post('administration/users/add', 'Administration\UsersController@postAdd'); |
|
142 | 59 | $router->get('administration/users/edit/{user}', 'Administration\UsersController@getEdit'); |
|
143 | 59 | $router->post('administration/users/edit/{user}', 'Administration\UsersController@postEdit'); |
|
144 | 59 | $router->get('administration/users/delete/{user}', 'Administration\UsersController@getDelete'); |
|
145 | |||
146 | // Tags |
||
147 | 59 | $router->model('tag', 'Tinyissue\Model\Tag'); |
|
148 | 59 | $router->pattern('tag', '[0-9]+'); |
|
149 | 59 | $router->get('administration/tags', 'Administration\TagsController@getIndex'); |
|
150 | 59 | $router->get('administration/tag/new', 'Administration\TagsController@getNew'); |
|
151 | 59 | $router->post('administration/tag/new', 'Administration\TagsController@postNew'); |
|
152 | 59 | $router->get('administration/tag/{tag}/edit', 'Administration\TagsController@getEdit'); |
|
153 | 59 | $router->post('administration/tag/{tag}/edit', 'Administration\TagsController@postEdit'); |
|
154 | |||
155 | // Settings |
||
156 | 59 | $router->get('administration/settings', 'AdministrationController@getSettings'); |
|
157 | 59 | $router->post('administration/settings', 'AdministrationController@postSettings'); |
|
158 | 59 | }); |
|
159 | 59 | }); |
|
160 | 59 | }); |
|
161 | 59 | } |
|
162 | |||
163 | /** |
||
164 | * All of the routes that can be made public |
||
165 | * |
||
166 | * @param Router $router |
||
167 | * @return void |
||
168 | */ |
||
169 | 5 | protected function addPublicRoutes(Router $router) |
|
170 | { |
||
171 | // View issues |
||
172 | 5 | $router->get('issues', 'HomeController@getIssues'); |
|
173 | |||
174 | // View projects |
||
175 | 5 | $this->addPublicProjectsRoutes($router); |
|
176 | |||
177 | $router->group(['middleware' => 'project'], function (Router $router) { |
||
178 | 5 | $this->addPublicProjectRoutes($router); |
|
179 | 5 | }); |
|
180 | 5 | } |
|
181 | |||
182 | /** |
||
183 | * Routes related to projects controller that can be made public or private |
||
184 | * |
||
185 | * @param Router $router |
||
186 | * @return void |
||
187 | */ |
||
188 | 59 | protected function addPublicProjectsRoutes(Router $router) |
|
193 | |||
194 | /** |
||
195 | * Routes related to project (issue, comment, notes, etc..) that can be made public or private |
||
196 | * |
||
197 | * @param Router $router |
||
198 | * @return void |
||
199 | */ |
||
200 | 59 | protected function addPublicProjectRoutes(Router $router) |
|
219 | } |
||
220 |