Backend for songs.zachdecook.com
* Auth: Add auth
Zach DeCook 2018-12-26
parent 4a76e3a · commit b2459a5
-rw-r--r--laravel/app/Http/Controllers/HomeController.php28
-rw-r--r--laravel/resources/views/auth/login.blade.php73
-rw-r--r--laravel/resources/views/auth/passwords/email.blade.php47
-rw-r--r--laravel/resources/views/auth/passwords/reset.blade.php65
-rw-r--r--laravel/resources/views/auth/register.blade.php77
-rw-r--r--laravel/resources/views/auth/verify.blade.php24
-rw-r--r--laravel/resources/views/home.blade.php23
-rw-r--r--laravel/resources/views/layouts/app.blade.php80
-rw-r--r--laravel/resources/views/song.blade.php13
-rw-r--r--laravel/resources/views/welcome.blade.php5
-rw-r--r--laravel/routes/web.php4
11 files changed, 433 insertions, 6 deletions
diff --git a/laravel/app/Http/Controllers/HomeController.php b/laravel/app/Http/Controllers/HomeController.php
new file mode 100644
index 0000000..7cbc2c3
--- /dev/null
+++ b/laravel/app/Http/Controllers/HomeController.php
@@ -0,0 +1,28 @@
+<?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');
+ }
+}
diff --git a/laravel/resources/views/auth/login.blade.php b/laravel/resources/views/auth/login.blade.php
new file mode 100644
index 0000000..9edb920
--- /dev/null
+++ b/laravel/resources/views/auth/login.blade.php
@@ -0,0 +1,73 @@
+@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">{{ __('Login') }}</div>
+
+ <div class="card-body">
+ <form method="POST" action="{{ route('login') }}">
+ @csrf
+
+ <div class="form-group row">
+ <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
+
+ <div class="col-md-6">
+ <input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required autofocus>
+
+ @if ($errors->has('email'))
+ <span class="invalid-feedback" role="alert">
+ <strong>{{ $errors->first('email') }}</strong>
+ </span>
+ @endif
+ </div>
+ </div>
+
+ <div class="form-group row">
+ <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
+
+ <div class="col-md-6">
+ <input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>
+
+ @if ($errors->has('password'))
+ <span class="invalid-feedback" role="alert">
+ <strong>{{ $errors->first('password') }}</strong>
+ </span>
+ @endif
+ </div>
+ </div>
+
+ <div class="form-group row">
+ <div class="col-md-6 offset-md-4">
+ <div class="form-check">
+ <input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
+
+ <label class="form-check-label" for="remember">
+ {{ __('Remember Me') }}
+ </label>
+ </div>
+ </div>
+ </div>
+
+ <div class="form-group row mb-0">
+ <div class="col-md-8 offset-md-4">
+ <button type="submit" class="btn btn-primary">
+ {{ __('Login') }}
+ </button>
+
+ @if (Route::has('password.request'))
+ <a class="btn btn-link" href="{{ route('password.request') }}">
+ {{ __('Forgot Your Password?') }}
+ </a>
+ @endif
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+@endsection
diff --git a/laravel/resources/views/auth/passwords/email.blade.php b/laravel/resources/views/auth/passwords/email.blade.php
new file mode 100644
index 0000000..ccbee59
--- /dev/null
+++ b/laravel/resources/views/auth/passwords/email.blade.php
@@ -0,0 +1,47 @@
+@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">{{ __('Reset Password') }}</div>
+
+ <div class="card-body">
+ @if (session('status'))
+ <div class="alert alert-success" role="alert">
+ {{ session('status') }}
+ </div>
+ @endif
+
+ <form method="POST" action="{{ route('password.email') }}">
+ @csrf
+
+ <div class="form-group row">
+ <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
+
+ <div class="col-md-6">
+ <input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required>
+
+ @if ($errors->has('email'))
+ <span class="invalid-feedback" role="alert">
+ <strong>{{ $errors->first('email') }}</strong>
+ </span>
+ @endif
+ </div>
+ </div>
+
+ <div class="form-group row mb-0">
+ <div class="col-md-6 offset-md-4">
+ <button type="submit" class="btn btn-primary">
+ {{ __('Send Password Reset Link') }}
+ </button>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+@endsection
diff --git a/laravel/resources/views/auth/passwords/reset.blade.php b/laravel/resources/views/auth/passwords/reset.blade.php
new file mode 100644
index 0000000..bf27f4c
--- /dev/null
+++ b/laravel/resources/views/auth/passwords/reset.blade.php
@@ -0,0 +1,65 @@
+@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">{{ __('Reset Password') }}</div>
+
+ <div class="card-body">
+ <form method="POST" action="{{ route('password.update') }}">
+ @csrf
+
+ <input type="hidden" name="token" value="{{ $token }}">
+
+ <div class="form-group row">
+ <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
+
+ <div class="col-md-6">
+ <input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ $email ?? old('email') }}" required autofocus>
+
+ @if ($errors->has('email'))
+ <span class="invalid-feedback" role="alert">
+ <strong>{{ $errors->first('email') }}</strong>
+ </span>
+ @endif
+ </div>
+ </div>
+
+ <div class="form-group row">
+ <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
+
+ <div class="col-md-6">
+ <input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>
+
+ @if ($errors->has('password'))
+ <span class="invalid-feedback" role="alert">
+ <strong>{{ $errors->first('password') }}</strong>
+ </span>
+ @endif
+ </div>
+ </div>
+
+ <div class="form-group row">
+ <label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label>
+
+ <div class="col-md-6">
+ <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
+ </div>
+ </div>
+
+ <div class="form-group row mb-0">
+ <div class="col-md-6 offset-md-4">
+ <button type="submit" class="btn btn-primary">
+ {{ __('Reset Password') }}
+ </button>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+@endsection
diff --git a/laravel/resources/views/auth/register.blade.php b/laravel/resources/views/auth/register.blade.php
new file mode 100644
index 0000000..ad95f2c
--- /dev/null
+++ b/laravel/resources/views/auth/register.blade.php
@@ -0,0 +1,77 @@
+@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">{{ __('Register') }}</div>
+
+ <div class="card-body">
+ <form method="POST" action="{{ route('register') }}">
+ @csrf
+
+ <div class="form-group row">
+ <label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>
+
+ <div class="col-md-6">
+ <input id="name" type="text" class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" name="name" value="{{ old('name') }}" required autofocus>
+
+ @if ($errors->has('name'))
+ <span class="invalid-feedback" role="alert">
+ <strong>{{ $errors->first('name') }}</strong>
+ </span>
+ @endif
+ </div>
+ </div>
+
+ <div class="form-group row">
+ <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
+
+ <div class="col-md-6">
+ <input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required>
+
+ @if ($errors->has('email'))
+ <span class="invalid-feedback" role="alert">
+ <strong>{{ $errors->first('email') }}</strong>
+ </span>
+ @endif
+ </div>
+ </div>
+
+ <div class="form-group row">
+ <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
+
+ <div class="col-md-6">
+ <input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>
+
+ @if ($errors->has('password'))
+ <span class="invalid-feedback" role="alert">
+ <strong>{{ $errors->first('password') }}</strong>
+ </span>
+ @endif
+ </div>
+ </div>
+
+ <div class="form-group row">
+ <label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label>
+
+ <div class="col-md-6">
+ <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
+ </div>
+ </div>
+
+ <div class="form-group row mb-0">
+ <div class="col-md-6 offset-md-4">
+ <button type="submit" class="btn btn-primary">
+ {{ __('Register') }}
+ </button>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+@endsection
diff --git a/laravel/resources/views/auth/verify.blade.php b/laravel/resources/views/auth/verify.blade.php
new file mode 100644
index 0000000..c742cb4
--- /dev/null
+++ b/laravel/resources/views/auth/verify.blade.php
@@ -0,0 +1,24 @@
+@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">{{ __('Verify Your Email Address') }}</div>
+
+ <div class="card-body">
+ @if (session('resent'))
+ <div class="alert alert-success" role="alert">
+ {{ __('A fresh verification link has been sent to your email address.') }}
+ </div>
+ @endif
+
+ {{ __('Before proceeding, please check your email for a verification link.') }}
+ {{ __('If you did not receive the email') }}, <a href="{{ route('verification.resend') }}">{{ __('click here to request another') }}</a>.
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+@endsection
diff --git a/laravel/resources/views/home.blade.php b/laravel/resources/views/home.blade.php
new file mode 100644
index 0000000..05dfca9
--- /dev/null
+++ b/laravel/resources/views/home.blade.php
@@ -0,0 +1,23 @@
+@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
diff --git a/laravel/resources/views/layouts/app.blade.php b/laravel/resources/views/layouts/app.blade.php
new file mode 100644
index 0000000..ee7767c
--- /dev/null
+++ b/laravel/resources/views/layouts/app.blade.php
@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <!-- CSRF Token -->
+ <meta name="csrf-token" content="{{ csrf_token() }}">
+
+ <title>{{ config('app.name', 'Laravel') }}</title>
+
+ <!-- Scripts -->
+ <script src="{{ asset('js/app.js') }}" defer></script>
+
+ <!-- Fonts -->
+ <link rel="dns-prefetch" href="//fonts.gstatic.com">
+ <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet" type="text/css">
+
+ <!-- Styles -->
+ <link href="{{ asset('css/app.css') }}" rel="stylesheet">
+</head>
+<body>
+ <div id="app">
+ <nav class="navbar navbar-expand-md navbar-light navbar-laravel">
+ <div class="container">
+ <a class="navbar-brand" href="{{ url('/') }}">
+ {{ config('app.name', 'Laravel') }}
+ </a>
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
+ <!-- Left Side Of Navbar -->
+ <ul class="navbar-nav mr-auto">
+
+ </ul>
+
+ <!-- Right Side Of Navbar -->
+ <ul class="navbar-nav ml-auto">
+ <!-- Authentication Links -->
+ @guest
+ <li class="nav-item">
+ <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
+ </li>
+ @if (Route::has('register'))
+ <li class="nav-item">
+ <a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
+ </li>
+ @endif
+ @else
+ <li class="nav-item dropdown">
+ <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
+ {{ Auth::user()->name }} <span class="caret"></span>
+ </a>
+
+ <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
+ <a class="dropdown-item" href="{{ route('logout') }}"
+ onclick="event.preventDefault();
+ document.getElementById('logout-form').submit();">
+ {{ __('Logout') }}
+ </a>
+
+ <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
+ @csrf
+ </form>
+ </div>
+ </li>
+ @endguest
+ </ul>
+ </div>
+ </div>
+ </nav>
+
+ <main class="py-4">
+ @yield('content')
+ </main>
+ </div>
+</body>
+</html>
diff --git a/laravel/resources/views/song.blade.php b/laravel/resources/views/song.blade.php
index 2d8721c..daf2dd2 100644
--- a/laravel/resources/views/song.blade.php
+++ b/laravel/resources/views/song.blade.php
@@ -1,6 +1,9 @@
-@extends('main')
+@extends('layouts.app')
@section('content')
-<h2>{{$song['title']}}</h2>
-<pre>
-{{$song['text']}}
-</pre>
+<div class='container'>
+ <h2>{{$song['title']}}</h2>
+ <pre>
+ {{$song['text']}}
+ </pre>
+</div>
+@endsection
diff --git a/laravel/resources/views/welcome.blade.php b/laravel/resources/views/welcome.blade.php
index 004672f..4ed5f3f 100644
--- a/laravel/resources/views/welcome.blade.php
+++ b/laravel/resources/views/welcome.blade.php
@@ -1,5 +1,6 @@
-@extends('main')
+@extends('layouts.app')
@section('content')
+<div class='container'>
<h1>
Prosongsa Songs
</h1>
@@ -12,3 +13,5 @@
</a>
@endforeach
</ul>
+</div>
+@endsection
diff --git a/laravel/routes/web.php b/laravel/routes/web.php
index 9b2e466..c091d9c 100644
--- a/laravel/routes/web.php
+++ b/laravel/routes/web.php
@@ -15,3 +15,7 @@ Route::get('/', function () {
return view('welcome');
});
Route::get('/song/{song}', 'SongController@show')->name('song.show');
+
+Auth::routes();
+
+Route::get('/home', 'HomeController@index')->name('home');