word-salad/routes/web.php

97 lines
3.6 KiB
PHP

<?php
use App\Http\Controllers\ReaderController;
use App\Http\Controllers\WriterController;
use App\Models\Article;
use Illuminate\Http\Request;
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 and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/
Route::get('/', function () {
$articles = Article::with(['author'])->where('published_at', '<', now())->latest()->limit(5)->get();
return view('guest.home', ['articles' => $articles, 'showSubscribeForm' => true]);
});
Route::get('/test-insert', function () {
return view('test-insert');
})->name('test-insert');
Route::get('/all-articles', function () {
$all_articles = Article::where('published_at', '<', now())->paginate(25);
return view('guest.all-articles', ['all_articles' => $all_articles, 'showSubscribeForm' => true]);
})->name('all-articles');
Route::get('/post/{article_slug}', function ($article_slug) {
$active_article = Article::with('author')
->where('published_at', '<', now())
->where('slug', $article_slug)
->first();
if(empty($active_article)) {
return abort(404);
}
return view('guest.article', ['article' => $active_article, 'showSubscribeForm' => true]);
})->name('article');
Route::get('/writer/login', function () {
if (auth()->check()) {
return redirect(route('dashboard'));
}
return view('writer.login');
})->name('login');
Route::post('/subscribe', [ReaderController::class, 'subscribe'])->name('subscribe');
Route::get('/subscribe-success', function() {
return view('guest.subscribe-success');
})->name('subscribe-success');
Route::get('/subscribe-fail', function() {
return view('guest.subscribe-fail');
})->name('subscribe-fail');
Route::get('/unsubscribe', function(Request $request) {
return view('guest.unsubscribe', ['email' => $request->query('email')]);
})->name('unsubscribe');
Route::post('/unsubscribe', [ReaderController::class, 'unsubscribe'])->name('unsubscribe-save');
Route::get('/unsubscribe-success', function() {
return view('guest.unsubscribe-success');
})->name('unsubscribe-success');
Route::get('/unsubscribe-fail', function() {
return view('guest.unsubscribe-fail');
})->name('unsubscribe-fail');
/**
* ----------------
* WRITER ENDPOINTS
* ----------------
*/
Route::post('/writer/authenticate', [WriterController::class, 'authenticate'])->name('authenticate');
Route::middleware('auth')->group(function () {
Route::get('/writer', [WriterController::class, 'dashboard'])->name('dashboard');
Route::post('/logout', [WriterController::class, 'logout'])->name('logout');
Route::get('writer/new-article', [WriterController::class, 'newArticle'])->name('new_article');
Route::post('writer/live-preview', [WriterController::class, 'livePreview'])->name('live_preview');
Route::post('writer/save-article', [WriterController::class, 'saveArticle'])->name('save-article');
Route::post('writer/unpublish-article/{article:id}', [WriterController::class, 'unpublishArticle'])->name('unpublish-article');
Route::post('writer/articles/{article:id}', [WriterController::class, 'deleteArticle'])->name('delete-article');
Route::get('writer/edit-article/{article:id}', [WriterController::class, 'editArticle'])->name('edit-article');
Route::post('writer/edit-article/{article:id}', [WriterController::class, 'persistArticleEdits'])->name('save-article-edits');
});