diff options
author | Santo Cariotti <santo@dcariotti.me> | 2022-01-24 19:34:26 +0100 |
---|---|---|
committer | Santo Cariotti <santo@dcariotti.me> | 2022-01-24 19:34:26 +0100 |
commit | 710f54c0156c5fa081bc6af1a68e7cb44723939b (patch) | |
tree | 056a85c362b7b9c5439506a76e0802e57342cc10 /Year_3/TSDWL/LARAVEL/iBook/app/Http | |
parent | b69d50c415ef1571bd42bb3eb1a1b3b38eab43dd (diff) |
add example in laravel
Diffstat (limited to 'Year_3/TSDWL/LARAVEL/iBook/app/Http')
12 files changed, 439 insertions, 0 deletions
diff --git a/Year_3/TSDWL/LARAVEL/iBook/app/Http/Controllers/AuthorController.php b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Controllers/AuthorController.php new file mode 100644 index 0000000..242464c --- /dev/null +++ b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Controllers/AuthorController.php @@ -0,0 +1,85 @@ +<?php + +namespace App\Http\Controllers; + +use App\Models\Author; +use Illuminate\Http\Request; + +class AuthorController extends Controller +{ + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + // + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + // + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + // + } + + /** + * Display the specified resource. + * + * @param \App\Models\Author $author + * @return \Illuminate\Http\Response + */ + public function show(Author $author) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\Author $author + * @return \Illuminate\Http\Response + */ + public function edit(Author $author) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\Author $author + * @return \Illuminate\Http\Response + */ + public function update(Request $request, Author $author) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\Author $author + * @return \Illuminate\Http\Response + */ + public function destroy(Author $author) + { + // + } +} diff --git a/Year_3/TSDWL/LARAVEL/iBook/app/Http/Controllers/BookController.php b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Controllers/BookController.php new file mode 100644 index 0000000..39cf772 --- /dev/null +++ b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Controllers/BookController.php @@ -0,0 +1,103 @@ +<?php + +namespace App\Http\Controllers; + +use App\Models\Book; +use App\Models\Author; +use Illuminate\Http\Request; + +class BookController extends Controller +{ + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + $books = Book::all(); + + return view('books.index')->with('books', $books); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $authors = Author::all(); + return view('books.create')->with('authors', $authors); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $book = new Book(); + $book->name = $request['name']; + $book->published_at = $request['published_at']; + $book->is_online = $request['is_online'] ? 1: 0; + $book->author_id = $request['author_id']; + + $book->save(); + + return redirect('/books'); + } + + /** + * Display the specified resource. + * + * @param \App\Models\Book $book + * @return \Illuminate\Http\Response + */ + public function show(Book $book) + { + $authors = Author::all(); + return view('books.edit')->with('book', $book)->with('authors', $authors); + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\Book $book + * @return \Illuminate\Http\Response + */ + public function edit(Book $book) + { + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\Book $book + * @return \Illuminate\Http\Response + */ + public function update(Request $request, Book $book) + { + $book->name = $request['name']; + $book->published_at = $request['published_at']; + $book->is_online = $request['is_online'] ? 1: 0; + $book->author_id = $request['author_id']; + + $book->save(); + return redirect('/books/'.$book->id); + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\Book $book + * @return \Illuminate\Http\Response + */ + public function destroy(Book $book) + { + // + } +} diff --git a/Year_3/TSDWL/LARAVEL/iBook/app/Http/Controllers/Controller.php b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..a0a2a8a --- /dev/null +++ b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ +<?php + +namespace App\Http\Controllers; + +use Illuminate\Foundation\Auth\Access\AuthorizesRequests; +use Illuminate\Foundation\Bus\DispatchesJobs; +use Illuminate\Foundation\Validation\ValidatesRequests; +use Illuminate\Routing\Controller as BaseController; + +class Controller extends BaseController +{ + use AuthorizesRequests, DispatchesJobs, ValidatesRequests; +} diff --git a/Year_3/TSDWL/LARAVEL/iBook/app/Http/Kernel.php b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Kernel.php new file mode 100644 index 0000000..d3722c2 --- /dev/null +++ b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Kernel.php @@ -0,0 +1,67 @@ +<?php + +namespace App\Http; + +use Illuminate\Foundation\Http\Kernel as HttpKernel; + +class Kernel extends HttpKernel +{ + /** + * The application's global HTTP middleware stack. + * + * These middleware are run during every request to your application. + * + * @var array<int, class-string|string> + */ + protected $middleware = [ + // \App\Http\Middleware\TrustHosts::class, + \App\Http\Middleware\TrustProxies::class, + \Fruitcake\Cors\HandleCors::class, + \App\Http\Middleware\PreventRequestsDuringMaintenance::class, + \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, + \App\Http\Middleware\TrimStrings::class, + \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + ]; + + /** + * The application's route middleware groups. + * + * @var array<string, array<int, class-string|string>> + */ + protected $middlewareGroups = [ + 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + // \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, + 'throttle:api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + ]; + + /** + * The application's route middleware. + * + * These middleware may be assigned to groups or used individually. + * + * @var array<string, class-string|string> + */ + protected $routeMiddleware = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + ]; +} diff --git a/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/Authenticate.php b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..704089a --- /dev/null +++ b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/Authenticate.php @@ -0,0 +1,21 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Auth\Middleware\Authenticate as Middleware; + +class Authenticate extends Middleware +{ + /** + * Get the path the user should be redirected to when they are not authenticated. + * + * @param \Illuminate\Http\Request $request + * @return string|null + */ + protected function redirectTo($request) + { + if (! $request->expectsJson()) { + return route('login'); + } + } +} diff --git a/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/EncryptCookies.php b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..867695b --- /dev/null +++ b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Cookie\Middleware\EncryptCookies as Middleware; + +class EncryptCookies extends Middleware +{ + /** + * The names of the cookies that should not be encrypted. + * + * @var array<int, string> + */ + protected $except = [ + // + ]; +} diff --git a/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/PreventRequestsDuringMaintenance.php new file mode 100644 index 0000000..74cbd9a --- /dev/null +++ b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/PreventRequestsDuringMaintenance.php @@ -0,0 +1,17 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware; + +class PreventRequestsDuringMaintenance extends Middleware +{ + /** + * The URIs that should be reachable while maintenance mode is enabled. + * + * @var array<int, string> + */ + protected $except = [ + // + ]; +} diff --git a/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/RedirectIfAuthenticated.php b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/RedirectIfAuthenticated.php new file mode 100644 index 0000000..a2813a0 --- /dev/null +++ b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/RedirectIfAuthenticated.php @@ -0,0 +1,32 @@ +<?php + +namespace App\Http\Middleware; + +use App\Providers\RouteServiceProvider; +use Closure; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; + +class RedirectIfAuthenticated +{ + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next + * @param string|null ...$guards + * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse + */ + public function handle(Request $request, Closure $next, ...$guards) + { + $guards = empty($guards) ? [null] : $guards; + + foreach ($guards as $guard) { + if (Auth::guard($guard)->check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/TrimStrings.php b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..88cadca --- /dev/null +++ b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,19 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware; + +class TrimStrings extends Middleware +{ + /** + * The names of the attributes that should not be trimmed. + * + * @var array<int, string> + */ + protected $except = [ + 'current_password', + 'password', + 'password_confirmation', + ]; +} diff --git a/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/TrustHosts.php b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/TrustHosts.php new file mode 100644 index 0000000..7186414 --- /dev/null +++ b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/TrustHosts.php @@ -0,0 +1,20 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Http\Middleware\TrustHosts as Middleware; + +class TrustHosts extends Middleware +{ + /** + * Get the host patterns that should be trusted. + * + * @return array<int, string|null> + */ + public function hosts() + { + return [ + $this->allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/TrustProxies.php b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..3391630 --- /dev/null +++ b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,28 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Http\Middleware\TrustProxies as Middleware; +use Illuminate\Http\Request; + +class TrustProxies extends Middleware +{ + /** + * The trusted proxies for this application. + * + * @var array<int, string>|string|null + */ + protected $proxies; + + /** + * The headers that should be used to detect proxies. + * + * @var int + */ + protected $headers = + Request::HEADER_X_FORWARDED_FOR | + Request::HEADER_X_FORWARDED_HOST | + Request::HEADER_X_FORWARDED_PORT | + Request::HEADER_X_FORWARDED_PROTO | + Request::HEADER_X_FORWARDED_AWS_ELB; +} diff --git a/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/VerifyCsrfToken.php b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/VerifyCsrfToken.php new file mode 100644 index 0000000..9e86521 --- /dev/null +++ b/Year_3/TSDWL/LARAVEL/iBook/app/Http/Middleware/VerifyCsrfToken.php @@ -0,0 +1,17 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; + +class VerifyCsrfToken extends Middleware +{ + /** + * The URIs that should be excluded from CSRF verification. + * + * @var array<int, string> + */ + protected $except = [ + // + ]; +} |