97 lines
3.6 KiB
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');
|
|
});
|