2016-05-19 15:01:28 +01:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|--------------------------------------------------------------------------
|
2016-09-06 16:40:39 +01:00
|
|
|
|
| Web Routes
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
|
|
2017-02-03 21:49:49 +00:00
|
|
|
|
| Here is where you can register web routes for your application. These
|
2023-02-18 09:34:57 +00:00
|
|
|
|
| routes are loaded by the RouteServiceProvider and all of them will
|
|
|
|
|
| be assigned to the "web" middleware group. Make something great!
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
2020-10-17 17:15:06 +01:00
|
|
|
|
use App\Http\Controllers\Admin\ArticlesController as AdminArticlesController;
|
2023-04-11 16:16:05 +01:00
|
|
|
|
use App\Http\Controllers\Admin\BioController;
|
2020-10-17 17:15:06 +01:00
|
|
|
|
use App\Http\Controllers\Admin\ClientsController;
|
|
|
|
|
use App\Http\Controllers\Admin\ContactsController as AdminContactsController;
|
|
|
|
|
use App\Http\Controllers\Admin\HomeController;
|
|
|
|
|
use App\Http\Controllers\Admin\LikesController as AdminLikesController;
|
|
|
|
|
use App\Http\Controllers\Admin\NotesController as AdminNotesController;
|
|
|
|
|
use App\Http\Controllers\Admin\PlacesController as AdminPlacesController;
|
2022-10-23 13:11:31 +01:00
|
|
|
|
use App\Http\Controllers\Admin\SyndicationTargetsController;
|
2020-10-17 17:15:06 +01:00
|
|
|
|
use App\Http\Controllers\ArticlesController;
|
|
|
|
|
use App\Http\Controllers\AuthController;
|
|
|
|
|
use App\Http\Controllers\BookmarksController;
|
|
|
|
|
use App\Http\Controllers\ContactsController;
|
|
|
|
|
use App\Http\Controllers\FeedsController;
|
|
|
|
|
use App\Http\Controllers\FrontPageController;
|
|
|
|
|
use App\Http\Controllers\LikesController;
|
|
|
|
|
use App\Http\Controllers\MicropubController;
|
|
|
|
|
use App\Http\Controllers\MicropubMediaController;
|
|
|
|
|
use App\Http\Controllers\NotesController;
|
|
|
|
|
use App\Http\Controllers\PlacesController;
|
|
|
|
|
use App\Http\Controllers\ShortURLsController;
|
|
|
|
|
use App\Http\Controllers\TokenEndpointController;
|
|
|
|
|
use App\Http\Controllers\WebMentionsController;
|
2019-10-19 15:34:49 +01:00
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
|
|
2016-05-19 15:01:28 +01:00
|
|
|
|
Route::group(['domain' => config('url.longurl')], function () {
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/', [FrontPageController::class, 'index']);
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
2019-03-23 09:35:07 +00:00
|
|
|
|
// Static project page
|
2017-09-07 15:40:45 +01:00
|
|
|
|
Route::view('projects', 'projects');
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
2019-03-23 09:35:07 +00:00
|
|
|
|
// Static colophon page
|
2017-09-07 15:40:45 +01:00
|
|
|
|
Route::view('colophon', 'colophon');
|
2016-11-22 20:24:12 +00:00
|
|
|
|
|
2020-09-13 13:58:50 +01:00
|
|
|
|
// The login routes to get auth’d for admin
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('login', [AuthController::class, 'showLogin'])->name('login');
|
|
|
|
|
Route::post('login', [AuthController::class, 'login']);
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
2019-03-23 09:35:07 +00:00
|
|
|
|
// And the logout routes
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('logout', [AuthController::class, 'showLogout'])->name('logout');
|
|
|
|
|
Route::post('logout', [AuthController::class, 'logout']);
|
2019-03-23 09:35:07 +00:00
|
|
|
|
|
|
|
|
|
// Admin pages grouped for filter
|
2017-02-27 22:08:42 +00:00
|
|
|
|
Route::group([
|
|
|
|
|
'middleware' => 'myauth',
|
|
|
|
|
'namespace' => 'Admin',
|
|
|
|
|
'prefix' => 'admin',
|
|
|
|
|
], function () {
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/', [HomeController::class, 'welcome']);
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
|
|
|
|
//Articles
|
2017-03-03 13:22:21 +00:00
|
|
|
|
Route::group(['prefix' => 'blog'], function () {
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/', [AdminArticlesController::class, 'index']);
|
|
|
|
|
Route::get('/create', [AdminArticlesController::class, 'create']);
|
|
|
|
|
Route::post('/', [AdminArticlesController::class, 'store']);
|
2021-08-31 12:28:00 +01:00
|
|
|
|
Route::get('/{article}/edit', [AdminArticlesController::class, 'edit']);
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::put('/{id}', [AdminArticlesController::class, 'update']);
|
|
|
|
|
Route::delete('/{id}', [AdminArticlesController::class, 'destroy']);
|
2017-02-27 22:08:42 +00:00
|
|
|
|
});
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
2019-03-23 09:35:07 +00:00
|
|
|
|
// Notes
|
2017-03-02 18:15:44 +00:00
|
|
|
|
Route::group(['prefix' => 'notes'], function () {
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/', [AdminNotesController::class, 'index']);
|
|
|
|
|
Route::get('/create', [AdminNotesController::class, 'create']);
|
|
|
|
|
Route::post('/', [AdminNotesController::class, 'store']);
|
|
|
|
|
Route::get('/{id}/edit', [AdminNotesController::class, 'edit']);
|
|
|
|
|
Route::put('/{id}', [AdminNotesController::class, 'update']);
|
|
|
|
|
Route::delete('/{id}', [AdminNotesController::class, 'destroy']);
|
2017-02-27 22:08:42 +00:00
|
|
|
|
});
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
2019-03-23 09:35:07 +00:00
|
|
|
|
// Micropub Clients
|
2017-02-27 22:08:42 +00:00
|
|
|
|
Route::group(['prefix' => 'clients'], function () {
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/', [ClientsController::class, 'index']);
|
|
|
|
|
Route::get('/create', [ClientsController::class, 'create']);
|
|
|
|
|
Route::post('/', [ClientsController::class, 'store']);
|
|
|
|
|
Route::get('/{id}/edit', [ClientsController::class, 'edit']);
|
|
|
|
|
Route::put('/{id}', [ClientsController::class, 'update']);
|
|
|
|
|
Route::delete('/{id}', [ClientsController::class, 'destroy']);
|
2017-02-27 22:08:42 +00:00
|
|
|
|
});
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
2019-03-23 09:35:07 +00:00
|
|
|
|
// Contacts
|
2017-02-27 22:08:42 +00:00
|
|
|
|
Route::group(['prefix' => 'contacts'], function () {
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/', [AdminContactsController::class, 'index']);
|
|
|
|
|
Route::get('/create', [AdminContactsController::class, 'create']);
|
|
|
|
|
Route::post('/', [AdminContactsController::class, 'store']);
|
|
|
|
|
Route::get('/{id}/edit', [AdminContactsController::class, 'edit']);
|
|
|
|
|
Route::put('/{id}', [AdminContactsController::class, 'update']);
|
|
|
|
|
Route::delete('/{id}', [AdminContactsController::class, 'destroy']);
|
|
|
|
|
Route::get('/{id}/getavatar', [AdminContactsController::class, 'getAvatar']);
|
2017-02-27 22:08:42 +00:00
|
|
|
|
});
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
2019-03-23 09:35:07 +00:00
|
|
|
|
// Places
|
2017-02-27 22:08:42 +00:00
|
|
|
|
Route::group(['prefix' => 'places'], function () {
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/', [AdminPlacesController::class, 'index']);
|
|
|
|
|
Route::get('/create', [AdminPlacesController::class, 'create']);
|
|
|
|
|
Route::post('/', [AdminPlacesController::class, 'store']);
|
|
|
|
|
Route::get('/{id}/edit', [AdminPlacesController::class, 'edit']);
|
|
|
|
|
Route::put('/{id}', [AdminPlacesController::class, 'update']);
|
|
|
|
|
Route::get('/{id}/merge', [AdminPlacesController::class, 'mergeIndex']);
|
|
|
|
|
Route::get('/{place1_id}/merge/{place2_id}', [AdminPlacesController::class, 'mergeEdit']);
|
|
|
|
|
Route::post('/merge', [AdminPlacesController::class, 'mergeStore']);
|
|
|
|
|
Route::delete('/{id}', [AdminPlacesController::class, 'destroy']);
|
2017-02-27 22:08:42 +00:00
|
|
|
|
});
|
2018-01-12 21:19:42 +00:00
|
|
|
|
|
2019-03-23 09:35:07 +00:00
|
|
|
|
// Likes
|
2018-01-12 21:19:42 +00:00
|
|
|
|
Route::group(['prefix' => 'likes'], function () {
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/', [AdminLikesController::class, 'index']);
|
|
|
|
|
Route::get('/create', [AdminLikesController::class, 'create']);
|
|
|
|
|
Route::post('/', [AdminLikesController::class, 'store']);
|
|
|
|
|
Route::get('/{id}/edit', [AdminLikesController::class, 'edit']);
|
|
|
|
|
Route::put('/{id}', [AdminLikesController::class, 'update']);
|
|
|
|
|
Route::delete('/{id}', [AdminLikesController::class, 'destroy']);
|
2018-01-12 21:19:42 +00:00
|
|
|
|
});
|
2022-10-23 13:11:31 +01:00
|
|
|
|
|
|
|
|
|
// Syndication Targets
|
|
|
|
|
Route::group(['prefix' => 'syndication'], function () {
|
|
|
|
|
Route::get('/', [SyndicationTargetsController::class, 'index']);
|
|
|
|
|
Route::get('/create', [SyndicationTargetsController::class, 'create']);
|
|
|
|
|
Route::post('/', [SyndicationTargetsController::class, 'store']);
|
|
|
|
|
Route::get('/{syndicationTarget}/edit', [SyndicationTargetsController::class, 'edit']);
|
|
|
|
|
Route::put('/{syndicationTarget}', [SyndicationTargetsController::class, 'update']);
|
|
|
|
|
Route::delete('/{syndicationTarget}', [SyndicationTargetsController::class, 'destroy']);
|
|
|
|
|
});
|
2023-04-11 16:16:05 +01:00
|
|
|
|
|
|
|
|
|
// Bio
|
|
|
|
|
Route::group(['prefix' => 'bio'], function () {
|
|
|
|
|
Route::get('/', [BioController::class, 'show'])->name('admin.bio.show');
|
|
|
|
|
Route::put('/', [BioController::class, 'update']);
|
|
|
|
|
});
|
2016-05-19 15:01:28 +01:00
|
|
|
|
});
|
|
|
|
|
|
2019-03-23 09:35:07 +00:00
|
|
|
|
// Blog pages using ArticlesController
|
2017-06-23 08:17:53 +01:00
|
|
|
|
Route::group(['prefix' => 'blog'], function () {
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/feed.rss', [FeedsController::class, 'blogRss']);
|
|
|
|
|
Route::get('/feed.atom', [FeedsController::class, 'blogAtom']);
|
|
|
|
|
Route::get('/feed.json', [FeedsController::class, 'blogJson']);
|
2022-09-24 18:28:05 +01:00
|
|
|
|
Route::get('/feed.jf2', [FeedsController::class, 'blogJf2']);
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/s/{id}', [ArticlesController::class, 'onlyIdInURL']);
|
|
|
|
|
Route::get('/{year?}/{month?}', [ArticlesController::class, 'index']);
|
|
|
|
|
Route::get('/{year}/{month}/{slug}', [ArticlesController::class, 'show']);
|
2017-06-23 08:17:53 +01:00
|
|
|
|
});
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
2019-03-23 09:35:07 +00:00
|
|
|
|
// Notes pages using NotesController
|
2017-06-23 08:17:53 +01:00
|
|
|
|
Route::group(['prefix' => 'notes'], function () {
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/', [NotesController::class, 'index']);
|
|
|
|
|
Route::get('/feed.rss', [FeedsController::class, 'notesRss']);
|
|
|
|
|
Route::get('/feed.atom', [FeedsController::class, 'notesAtom']);
|
|
|
|
|
Route::get('/feed.json', [FeedsController::class, 'notesJson']);
|
|
|
|
|
Route::get('/feed.jf2', [FeedsController::class, 'notesJf2']);
|
2022-08-13 16:00:06 +01:00
|
|
|
|
Route::get('/new', [NotesController::class, 'create']);
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/{id}', [NotesController::class, 'show']);
|
|
|
|
|
Route::get('/tagged/{tag}', [NotesController::class, 'tagged']);
|
2017-06-23 08:17:53 +01:00
|
|
|
|
});
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('note/{id}', [NotesController::class, 'redirect']); // for legacy note URLs
|
2017-06-23 08:17:53 +01:00
|
|
|
|
|
2017-09-19 16:07:32 +01:00
|
|
|
|
// Likes
|
|
|
|
|
Route::group(['prefix' => 'likes'], function () {
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/', [LikesController::class, 'index']);
|
|
|
|
|
Route::get('/{like}', [LikesController::class, 'show']);
|
2017-09-19 16:07:32 +01:00
|
|
|
|
});
|
|
|
|
|
|
2017-10-10 15:58:07 +01:00
|
|
|
|
// Bookmarks
|
|
|
|
|
Route::group(['prefix' => 'bookmarks'], function () {
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/', [BookmarksController::class, 'index']);
|
|
|
|
|
Route::get('/{bookmark}', [BookmarksController::class, 'show']);
|
2022-08-14 17:56:21 +01:00
|
|
|
|
Route::get('/tagged/{tag}', [BookmarksController::class, 'tagged']);
|
2017-10-10 15:58:07 +01:00
|
|
|
|
});
|
|
|
|
|
|
2017-05-18 15:15:53 +01:00
|
|
|
|
// Token Endpoint
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::post('api/token', [TokenEndpointController::class, 'create']);
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
2017-05-18 15:15:53 +01:00
|
|
|
|
// Micropub Endpoints
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('api/post', [MicropubController::class, 'get'])->middleware('micropub.token');
|
|
|
|
|
Route::post('api/post', [MicropubController::class, 'post'])->middleware('micropub.token');
|
|
|
|
|
Route::get('api/media', [MicropubMediaController::class, 'getHandler'])->middleware('micropub.token');
|
2022-07-09 10:08:26 +01:00
|
|
|
|
Route::post('api/media', [MicropubMediaController::class, 'media'])
|
2020-06-27 14:13:33 +01:00
|
|
|
|
->middleware('micropub.token', 'cors')
|
|
|
|
|
->name('media-endpoint');
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::options('/api/media', [MicropubMediaController::class, 'mediaOptionsResponse'])->middleware('cors');
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
2019-03-23 09:35:07 +00:00
|
|
|
|
// Webmention
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('webmention', [WebMentionsController::class, 'get']);
|
|
|
|
|
Route::post('webmention', [WebMentionsController::class, 'receive']);
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
2019-03-23 09:35:07 +00:00
|
|
|
|
// Contacts
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('contacts', [ContactsController::class, 'index']);
|
|
|
|
|
Route::get('contacts/{contact:nick}', [ContactsController::class, 'show']);
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
2019-03-23 09:35:07 +00:00
|
|
|
|
// Places
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('places', [PlacesController::class, 'index']);
|
|
|
|
|
Route::get('places/{place}', [PlacesController::class, 'show']);
|
2022-08-13 16:14:12 +01:00
|
|
|
|
|
|
|
|
|
// Micropub
|
|
|
|
|
Route::redirect('/micropub/create', '/notes/new');
|
2016-05-19 15:01:28 +01:00
|
|
|
|
});
|
|
|
|
|
|
2019-03-23 09:35:07 +00:00
|
|
|
|
// Short URL
|
2016-05-19 15:01:28 +01:00
|
|
|
|
Route::group(['domain' => config('url.shorturl')], function () {
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('/', [ShortURLsController::class, 'baseURL']);
|
|
|
|
|
Route::get('@', [ShortURLsController::class, 'twitter']);
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('{type}/{id}', [ShortURLsController::class, 'expandType'])->where(
|
2016-05-19 15:01:28 +01:00
|
|
|
|
[
|
|
|
|
|
'type' => '[bt]',
|
|
|
|
|
'id' => '[0-9A-HJ-NP-Z_a-km-z]+',
|
|
|
|
|
]
|
|
|
|
|
);
|
|
|
|
|
|
2020-10-17 17:15:06 +01:00
|
|
|
|
Route::get('h/{id}', [ShortURLsController::class, 'redirect']);
|
2016-05-19 15:01:28 +01:00
|
|
|
|
});
|