Basic routes and BeerListController methods

This commit is contained in:
2021-09-04 23:54:41 +02:00
parent 1b8e76b183
commit 26dbfeb94a
20 changed files with 146 additions and 64 deletions

View File

@@ -26,7 +26,7 @@ class ConfirmPasswordController extends Controller
* *
* @var string * @var string
*/ */
protected $redirectTo = RouteServiceProvider::HOME; protected $redirectTo = RouteServiceProvider::PROFILE;
/** /**
* Create a new controller instance. * Create a new controller instance.

View File

@@ -26,7 +26,7 @@ class LoginController extends Controller
* *
* @var string * @var string
*/ */
protected $redirectTo = RouteServiceProvider::HOME; protected $redirectTo = RouteServiceProvider::PROFILE;
/** /**
* Create a new controller instance. * Create a new controller instance.

View File

@@ -29,7 +29,7 @@ class RegisterController extends Controller
* *
* @var string * @var string
*/ */
protected $redirectTo = RouteServiceProvider::HOME; protected $redirectTo = RouteServiceProvider::PROFILE;
/** /**
* Create a new controller instance. * Create a new controller instance.

View File

@@ -26,5 +26,5 @@ class ResetPasswordController extends Controller
* *
* @var string * @var string
*/ */
protected $redirectTo = RouteServiceProvider::HOME; protected $redirectTo = RouteServiceProvider::PROFILE;
} }

View File

@@ -26,7 +26,7 @@ class VerificationController extends Controller
* *
* @var string * @var string
*/ */
protected $redirectTo = RouteServiceProvider::HOME; protected $redirectTo = RouteServiceProvider::PROFILE;
/** /**
* Create a new controller instance. * Create a new controller instance.

View File

@@ -2,9 +2,35 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\BeerList;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class BeerListController extends Controller class BeerListController extends Controller
{ {
// public function show(BeerList $list)
{
return view('list.show', compact('list'));
}
public function create()
{
return view('list.create');
}
public function store(Request $request)
{
$this->validate($request, [
'title' => 'required',
]);
$list = new BeerList;
$list->title = $request->title;
$list->user_id = auth()->user()->id;
$list->save();
return redirect('/profile');
}
} }

View File

@@ -1,28 +0,0 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function index()
{
return view('home');
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index(User $user)
{
return view('profile', compact('user'));
}
}

View File

@@ -23,7 +23,7 @@ class RedirectIfAuthenticated
foreach ($guards as $guard) { foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) { if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME); return redirect(RouteServiceProvider::PROFILE);
} }
} }

View File

@@ -9,9 +9,14 @@ class BeerList extends Model
{ {
use HasFactory; use HasFactory;
protected $fillable = [
'title',
'user_id'
];
public function user() public function user()
{ {
return $this->belongsTo(User::class); return $this->belongsTo(User::class, 'user_id');
} }
public function beer() public function beer()

View File

@@ -42,7 +42,7 @@ class User extends Authenticatable
'email_verified_at' => 'datetime', 'email_verified_at' => 'datetime',
]; ];
public function list() public function lists()
{ {
return $this->hasMany(BeerList::class); return $this->hasMany(BeerList::class);
} }

View File

@@ -17,7 +17,7 @@ class RouteServiceProvider extends ServiceProvider
* *
* @var string * @var string
*/ */
public const HOME = '/home'; public const PROFILE = '/profile';
/** /**
* The controller namespace for the application. * The controller namespace for the application.

View File

@@ -14,7 +14,8 @@ class CreateBeerListsTable extends Migration
public function up() public function up()
{ {
Schema::create('beer_lists', function (Blueprint $table) { Schema::create('beer_lists', function (Blueprint $table) {
$table->unsignedBigInteger('id'); $table->id();
$table->string('title')->nullable();
$table->integer('user_id'); $table->integer('user_id');
$table->timestamps(); $table->timestamps();
}); });

View File

@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class ListBeersPivotTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('list_beers_pivot', function (Blueprint $table) {
$table->unsignedBigInteger('id');
$table->unsignedBigInteger('beer_id');
$table->unsignedBigInteger('list_id');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('list_beers_pivot');
}
}

View File

@@ -1,23 +0,0 @@
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Dashboard') }}</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
{{ __('You are logged in!') }}
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,20 @@
@extends('layouts.app')
@section('content')
Add list
<form method="POST" action="{{ route('list.store') }}">
@csrf
<label for="title">
List Name
</label>
<input class="bg-gray-300 border-black border-1" type="text" name="title">
@if ($errors->has('title'))
<span class="text-red-600" role="alert">
<strong>{{ $errors->first('title') }}</strong>
</span>
@endif
<button type="submit">
Add List
</button>
</form>
@endsection

View File

@@ -0,0 +1,6 @@
@extends('layouts.app')
@section('content')
{{ $list->title }}
@endsection

View File

@@ -0,0 +1,15 @@
@extends('layouts.app')
@section('content')
<div class="container">
Profile
</div>
<a href="{{ route('list.create') }}">
Add Beer list
</a>
@foreach (Auth::user()->lists as $list)
<a href="{{ route('list.show', $list->id) }}">
{{ $list->title }}
</a>
@endforeach
@endsection

View File

@@ -25,7 +25,7 @@
@if (Route::has('login')) @if (Route::has('login'))
<div class="hidden fixed top-0 right-0 px-6 py-4 sm:block"> <div class="hidden fixed top-0 right-0 px-6 py-4 sm:block">
@auth @auth
<a href="{{ url('/home') }}" class="text-sm text-gray-700 underline">Home</a> <a href="{{ url('/profile') }}" class="text-sm text-gray-700 underline">Profile</a>
@else @else
<a href="{{ route('login') }}" class="text-sm text-gray-700 underline">Log in</a> <a href="{{ route('login') }}" class="text-sm text-gray-700 underline">Log in</a>

View File

@@ -1,5 +1,9 @@
<?php <?php
use App\Http\Controllers\BeerListController;
use App\Http\Controllers\UserController;
use App\Models\BeerList;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
/* /*
@@ -19,4 +23,9 @@ Route::get('/', function () {
Auth::routes(); Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home'); Route::get('/profile', [UserController::class, 'index']);
//List Routes
Route::get('/create-list', [BeerListController::class, 'create'])->name('list.create');
Route::get('/list/{list}', [BeerListController::class, 'show'])->name('list.show');
Route::post('/create-list', [BeerListController::class, 'store'])->name('list.store');