diff --git a/app/Http/Controllers/AdminDashboardController.php b/app/Http/Controllers/AdminDashboardController.php new file mode 100644 index 0000000000000000000000000000000000000000..d287d2016acfa76ce221d78f6171107b081167b6 --- /dev/null +++ b/app/Http/Controllers/AdminDashboardController.php @@ -0,0 +1,15 @@ +<?php + +namespace App\Http\Controllers; + +use Illuminate\Http\Request; + +use App\Http\Requests; + +class AdminDashboardController extends Controller +{ + public function index() + { + return 'Admin'; + } +} diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php new file mode 100644 index 0000000000000000000000000000000000000000..cb060b6f1134048313eb82c2e7118025b909fdcc --- /dev/null +++ b/app/Http/Controllers/HomeController.php @@ -0,0 +1,29 @@ +<?php + +namespace App\Http\Controllers; + +use App\Http\Requests; +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\Http\Response + */ + public function index() + { + return view('home'); + } +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index 67abcaea917c61a1f7c1864386be2930ed2de80c..7ddc5c3a687dfcf07b8a6fbf922c589f948a3ca5 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -19,7 +19,7 @@ class Authenticate { if (Auth::guard($guard)->guest()) { if ($request->ajax() || $request->wantsJson()) { - return response('Unauthorized.', 401); + return response('Unauthorized.', 403); } else { return redirect()->guest('login'); } diff --git a/app/Http/Middleware/PermissionsRequiredMiddleware.php b/app/Http/Middleware/PermissionsRequiredMiddleware.php index 946af05d9a23c7425dbf35b4c4063c4e565af844..fd328f0d2000b25594bb251696c7fcecd76b6099 100644 --- a/app/Http/Middleware/PermissionsRequiredMiddleware.php +++ b/app/Http/Middleware/PermissionsRequiredMiddleware.php @@ -15,10 +15,11 @@ class PermissionsRequiredMiddleware */ public function handle($request, Closure $next) { + return \Auth::user(); // Check if a user is logged in. if (!$user = $request->user()) { - return $next($request); + return redirect()->guest('login'); } // Get the current route. @@ -28,10 +29,10 @@ class PermissionsRequiredMiddleware $actions = $route->getAction(); // Check if we have any permissions to check the user has. - if (!$permissions = isset($actions['permissons']) ? $actions['permissons'] : null) + if (!$permissions = isset($actions['permissions']) ? $actions['permissions'] : null) { // No permissions to check, allow access. - return $next($request); + return abort(403); } // Fetch all of the matching user permissions. @@ -59,6 +60,6 @@ class PermissionsRequiredMiddleware } // If we reach this far, the user does not have the required permissions. - return abort(403); + return abort(404); } } diff --git a/app/Http/routes.php b/app/Http/routes.php index 1ad35497d06084c91497e2233e85af8a556ca7cf..808bf88403376ede0bcaef8eaf04eb284503c419 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -14,3 +14,9 @@ Route::get('/', function () { return view('welcome'); }); + +Route::group(['middleware' => 'web'], function () { + Route::auth(); + + Route::get('/home', 'HomeController@index'); +}); diff --git a/resources/views/auth/emails/password.blade.php b/resources/views/auth/emails/password.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..1b53830a8046867e20792c572c6adbb624731228 --- /dev/null +++ b/resources/views/auth/emails/password.blade.php @@ -0,0 +1 @@ +Click here to reset your password: <a href="{{ $link = url('password/reset', $token).'?email='.urlencode($user->getEmailForPasswordReset()) }}"> {{ $link }} </a> diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..bfaf37541df87a229b27556d4170596217d4ba92 --- /dev/null +++ b/resources/views/auth/login.blade.php @@ -0,0 +1,66 @@ +@extends('layouts.app') + +@section('content') +<div class="container"> + <div class="row"> + <div class="col-md-8 col-md-offset-2"> + <div class="panel panel-default"> + <div class="panel-heading">Login</div> + <div class="panel-body"> + <form class="form-horizontal" role="form" method="POST" action="{{ url('/login') }}"> + {!! csrf_field() !!} + + <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}"> + <label class="col-md-4 control-label">E-Mail Address</label> + + <div class="col-md-6"> + <input type="email" class="form-control" name="email" value="{{ old('email') }}"> + + @if ($errors->has('email')) + <span class="help-block"> + <strong>{{ $errors->first('email') }}</strong> + </span> + @endif + </div> + </div> + + <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}"> + <label class="col-md-4 control-label">Password</label> + + <div class="col-md-6"> + <input type="password" class="form-control" name="password"> + + @if ($errors->has('password')) + <span class="help-block"> + <strong>{{ $errors->first('password') }}</strong> + </span> + @endif + </div> + </div> + + <div class="form-group"> + <div class="col-md-6 col-md-offset-4"> + <div class="checkbox"> + <label> + <input type="checkbox" name="remember"> Remember Me + </label> + </div> + </div> + </div> + + <div class="form-group"> + <div class="col-md-6 col-md-offset-4"> + <button type="submit" class="btn btn-primary"> + <i class="fa fa-btn fa-sign-in"></i>Login + </button> + + <a class="btn btn-link" href="{{ url('/password/reset') }}">Forgot Your Password?</a> + </div> + </div> + </form> + </div> + </div> + </div> + </div> +</div> +@endsection diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..9833600abdbe04833e10e3ff6779ed46ccbc4c1d --- /dev/null +++ b/resources/views/auth/passwords/email.blade.php @@ -0,0 +1,47 @@ +@extends('layouts.app') + +<!-- Main Content --> +@section('content') +<div class="container"> + <div class="row"> + <div class="col-md-8 col-md-offset-2"> + <div class="panel panel-default"> + <div class="panel-heading">Reset Password</div> + <div class="panel-body"> + @if (session('status')) + <div class="alert alert-success"> + {{ session('status') }} + </div> + @endif + + <form class="form-horizontal" role="form" method="POST" action="{{ url('/password/email') }}"> + {!! csrf_field() !!} + + <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}"> + <label class="col-md-4 control-label">E-Mail Address</label> + + <div class="col-md-6"> + <input type="email" class="form-control" name="email" value="{{ old('email') }}"> + + @if ($errors->has('email')) + <span class="help-block"> + <strong>{{ $errors->first('email') }}</strong> + </span> + @endif + </div> + </div> + + <div class="form-group"> + <div class="col-md-6 col-md-offset-4"> + <button type="submit" class="btn btn-primary"> + <i class="fa fa-btn fa-envelope"></i>Send Password Reset Link + </button> + </div> + </div> + </form> + </div> + </div> + </div> + </div> +</div> +@endsection diff --git a/resources/views/auth/passwords/reset.blade.php b/resources/views/auth/passwords/reset.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..3e7d960b93b51da491453d393260a9f8c3c21a82 --- /dev/null +++ b/resources/views/auth/passwords/reset.blade.php @@ -0,0 +1,70 @@ +@extends('layouts.app') + +@section('content') +<div class="container"> + <div class="row"> + <div class="col-md-8 col-md-offset-2"> + <div class="panel panel-default"> + <div class="panel-heading">Reset Password</div> + + <div class="panel-body"> + <form class="form-horizontal" role="form" method="POST" action="{{ url('/password/reset') }}"> + {!! csrf_field() !!} + + <input type="hidden" name="token" value="{{ $token }}"> + + <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}"> + <label class="col-md-4 control-label">E-Mail Address</label> + + <div class="col-md-6"> + <input type="email" class="form-control" name="email" value="{{ $email or old('email') }}"> + + @if ($errors->has('email')) + <span class="help-block"> + <strong>{{ $errors->first('email') }}</strong> + </span> + @endif + </div> + </div> + + <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}"> + <label class="col-md-4 control-label">Password</label> + + <div class="col-md-6"> + <input type="password" class="form-control" name="password"> + + @if ($errors->has('password')) + <span class="help-block"> + <strong>{{ $errors->first('password') }}</strong> + </span> + @endif + </div> + </div> + + <div class="form-group{{ $errors->has('password_confirmation') ? ' has-error' : '' }}"> + <label class="col-md-4 control-label">Confirm Password</label> + <div class="col-md-6"> + <input type="password" class="form-control" name="password_confirmation"> + + @if ($errors->has('password_confirmation')) + <span class="help-block"> + <strong>{{ $errors->first('password_confirmation') }}</strong> + </span> + @endif + </div> + </div> + + <div class="form-group"> + <div class="col-md-6 col-md-offset-4"> + <button type="submit" class="btn btn-primary"> + <i class="fa fa-btn fa-refresh"></i>Reset Password + </button> + </div> + </div> + </form> + </div> + </div> + </div> + </div> +</div> +@endsection diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..d7015e715c559c856db9ed5dfc517c3bfc7bb270 --- /dev/null +++ b/resources/views/auth/register.blade.php @@ -0,0 +1,82 @@ +@extends('layouts.app') + +@section('content') +<div class="container"> + <div class="row"> + <div class="col-md-8 col-md-offset-2"> + <div class="panel panel-default"> + <div class="panel-heading">Register</div> + <div class="panel-body"> + <form class="form-horizontal" role="form" method="POST" action="{{ url('/register') }}"> + {!! csrf_field() !!} + + <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}"> + <label class="col-md-4 control-label">Name</label> + + <div class="col-md-6"> + <input type="text" class="form-control" name="name" value="{{ old('name') }}"> + + @if ($errors->has('name')) + <span class="help-block"> + <strong>{{ $errors->first('name') }}</strong> + </span> + @endif + </div> + </div> + + <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}"> + <label class="col-md-4 control-label">E-Mail Address</label> + + <div class="col-md-6"> + <input type="email" class="form-control" name="email" value="{{ old('email') }}"> + + @if ($errors->has('email')) + <span class="help-block"> + <strong>{{ $errors->first('email') }}</strong> + </span> + @endif + </div> + </div> + + <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}"> + <label class="col-md-4 control-label">Password</label> + + <div class="col-md-6"> + <input type="password" class="form-control" name="password"> + + @if ($errors->has('password')) + <span class="help-block"> + <strong>{{ $errors->first('password') }}</strong> + </span> + @endif + </div> + </div> + + <div class="form-group{{ $errors->has('password_confirmation') ? ' has-error' : '' }}"> + <label class="col-md-4 control-label">Confirm Password</label> + + <div class="col-md-6"> + <input type="password" class="form-control" name="password_confirmation"> + + @if ($errors->has('password_confirmation')) + <span class="help-block"> + <strong>{{ $errors->first('password_confirmation') }}</strong> + </span> + @endif + </div> + </div> + + <div class="form-group"> + <div class="col-md-6 col-md-offset-4"> + <button type="submit" class="btn btn-primary"> + <i class="fa fa-btn fa-user"></i>Register + </button> + </div> + </div> + </form> + </div> + </div> + </div> + </div> +</div> +@endsection diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..7adf5c2243ab83d31706fabaf71c1bb6af596652 --- /dev/null +++ b/resources/views/home.blade.php @@ -0,0 +1,17 @@ +@extends('layouts.app') + +@section('content') +<div class="container"> + <div class="row"> + <div class="col-md-10 col-md-offset-1"> + <div class="panel panel-default"> + <div class="panel-heading">Dashboard</div> + + <div class="panel-body"> + You are logged in! + </div> + </div> + </div> + </div> +</div> +@endsection diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..dfc60a41e40d386b7b5214ecbe0eb1b830cc80f2 --- /dev/null +++ b/resources/views/layouts/app.blade.php @@ -0,0 +1,82 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <title>Laravel</title> + + <!-- Fonts --> + <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.min.css" rel='stylesheet' type='text/css'> + <link href="https://fonts.googleapis.com/css?family=Lato:100,300,400,700" rel='stylesheet' type='text/css'> + + <!-- Styles --> + <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"> + {{-- <link href="{{ elixir('css/app.css') }}" rel="stylesheet"> --}} + + <style> + body { + font-family: 'Lato'; + } + + .fa-btn { + margin-right: 6px; + } + </style> +</head> +<body id="app-layout"> + <nav class="navbar navbar-default navbar-static-top"> + <div class="container"> + <div class="navbar-header"> + + <!-- Collapsed Hamburger --> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse"> + <span class="sr-only">Toggle Navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + + <!-- Branding Image --> + <a class="navbar-brand" href="{{ url('/') }}"> + Laravel + </a> + </div> + + <div class="collapse navbar-collapse" id="app-navbar-collapse"> + <!-- Left Side Of Navbar --> + <ul class="nav navbar-nav"> + <li><a href="{{ url('/home') }}">Home</a></li> + </ul> + + <!-- Right Side Of Navbar --> + <ul class="nav navbar-nav navbar-right"> + <!-- Authentication Links --> + @if (Auth::guest()) + <li><a href="{{ url('/login') }}">Login</a></li> + <li><a href="{{ url('/register') }}">Register</a></li> + @else + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"> + {{ Auth::user()->name }} <span class="caret"></span> + </a> + + <ul class="dropdown-menu" role="menu"> + <li><a href="{{ url('/logout') }}"><i class="fa fa-btn fa-sign-out"></i>Logout</a></li> + </ul> + </li> + @endif + </ul> + </div> + </div> + </nav> + + @yield('content') + + <!-- JavaScripts --> + <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> + <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> + {{-- <script src="{{ elixir('js/app.js') }}"></script> --}} +</body> +</html> diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index 87710acead3f9d3981326d82486a9d109829c86c..06e2217c24047128c531fef8496659659c11190c 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -1,45 +1,17 @@ -<!DOCTYPE html> -<html> - <head> - <title>Laravel</title> +@extends('layouts.app') - <link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css"> +@section('content') +<div class="container"> + <div class="row"> + <div class="col-md-10 col-md-offset-1"> + <div class="panel panel-default"> + <div class="panel-heading">Welcome</div> - <style> - html, body { - height: 100%; - } - - body { - margin: 0; - padding: 0; - width: 100%; - display: table; - font-weight: 100; - font-family: 'Lato'; - } - - .container { - text-align: center; - display: table-cell; - vertical-align: middle; - } - - .content { - text-align: center; - display: inline-block; - } - - .title { - font-size: 96px; - } - </style> - </head> - <body> - <div class="container"> - <div class="content"> - <div class="title">Laravel 5</div> + <div class="panel-body"> + Your Application's Landing Page. + </div> </div> </div> - </body> -</html> + </div> +</div> +@endsection