parent
							
								
									6e2040249b
								
							
						
					
					
						commit
						fd296e2d8f
					
				| @ -1,95 +1,17 @@ | ||||
| <!doctype html> | ||||
| <html lang="{{ app()->getLocale() }}"> | ||||
|     <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://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css"> | ||||
| 
 | ||||
|         <!-- Styles --> | ||||
|         <style> | ||||
|             html, body { | ||||
|                 background-color: #fff; | ||||
|                 color: #636b6f; | ||||
|                 font-family: 'Raleway', sans-serif; | ||||
|                 font-weight: 100; | ||||
|                 height: 100vh; | ||||
|                 margin: 0; | ||||
|             } | ||||
| 
 | ||||
|             .full-height { | ||||
|                 height: 100vh; | ||||
|             } | ||||
| 
 | ||||
|             .flex-center { | ||||
|                 align-items: center; | ||||
|                 display: flex; | ||||
|                 justify-content: center; | ||||
|             } | ||||
| 
 | ||||
|             .position-ref { | ||||
|                 position: relative; | ||||
|             } | ||||
| 
 | ||||
|             .top-right { | ||||
|                 position: absolute; | ||||
|                 right: 10px; | ||||
|                 top: 18px; | ||||
|             } | ||||
| 
 | ||||
|             .content { | ||||
|                 text-align: center; | ||||
|             } | ||||
| 
 | ||||
|             .title { | ||||
|                 font-size: 84px; | ||||
|             } | ||||
| 
 | ||||
|             .links > a { | ||||
|                 color: #636b6f; | ||||
|                 padding: 0 25px; | ||||
|                 font-size: 12px; | ||||
|                 font-weight: 600; | ||||
|                 letter-spacing: .1rem; | ||||
|                 text-decoration: none; | ||||
|                 text-transform: uppercase; | ||||
|             } | ||||
| 
 | ||||
|             .m-b-md { | ||||
|                 margin-bottom: 30px; | ||||
|             } | ||||
|         </style> | ||||
|     </head> | ||||
|     <body> | ||||
|         <div class="flex-center position-ref full-height"> | ||||
|             @if (Route::has('login')) | ||||
|                 <div class="top-right links"> | ||||
|                     @auth | ||||
|                         <a href="{{ url('/home') }}">Home</a> | ||||
|                     @else | ||||
|                         <a href="{{ route('login') }}">Login</a> | ||||
|                         <a href="{{ route('register') }}">Register</a> | ||||
|                     @endauth | ||||
|                 </div> | ||||
|             @endif | ||||
| 
 | ||||
|             <div class="content"> | ||||
|                 <div class="title m-b-md"> | ||||
|                     Laravel | ||||
|                 </div> | ||||
| 
 | ||||
|                 <div class="links"> | ||||
|                     <a href="https://laravel.com/docs">Documentation</a> | ||||
|                     <a href="https://laracasts.com">Laracasts</a> | ||||
|                     <a href="https://laravel-news.com">News</a> | ||||
|                     <a href="https://forge.laravel.com">Forge</a> | ||||
|                     <a href="https://github.com/laravel/laravel">GitHub</a> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
|     </body> | ||||
| </html> | ||||
| @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"> | ||||
| 						<h1>Welcome to the public landing page.</h1> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
| @endsection | ||||
|  | ||||
| @ -1,56 +1,58 @@ | ||||
| <?php namespace SocialNorm; | ||||
| 
 | ||||
| use SocialNorm\Exceptions\InvalidAuthorizationCodeException; | ||||
| use SocialNorm\State\StateManager; | ||||
| 
 | ||||
| class SocialNorm | ||||
| { | ||||
|     protected $providers; | ||||
|     protected $session; | ||||
|     protected $request; | ||||
|     protected $stateGenerator; | ||||
| 
 | ||||
|     public function __construct( | ||||
|         ProviderRegistry $providers, | ||||
|         Session $session, | ||||
|         Request $request, | ||||
|         StateGenerator $stateGenerator | ||||
|     ) | ||||
|     { | ||||
|         $this->providers = $providers; | ||||
|         $this->session = $session; | ||||
|         $this->request = $request; | ||||
|         $this->stateGenerator = $stateGenerator; | ||||
|     } | ||||
| 
 | ||||
|     public function registerProvider($alias, Provider $provider) | ||||
|     { | ||||
|         $this->providers->registerProvider($alias, $provider); | ||||
|     } | ||||
| 
 | ||||
|     public function authorize($providerAlias) | ||||
|     { | ||||
|         $state = $this->stateGenerator->generate(); | ||||
|         $this->session->put('oauth.state', $state); | ||||
|         return $this->getProvider($providerAlias)->authorizeUrl($state); | ||||
|     } | ||||
| 
 | ||||
|     public function getUser($providerAlias) | ||||
|     { | ||||
|         $this->verifyState(); | ||||
|         return $this->getProvider($providerAlias)->getUser(); | ||||
|     } | ||||
| 
 | ||||
|     protected function getProvider($providerAlias) | ||||
|     { | ||||
|         return $this->providers->getProvider($providerAlias); | ||||
|     } | ||||
| 
 | ||||
|     protected function verifyState() | ||||
|     { | ||||
|     	// FIXME this is broken, can't find why | ||||
| //        if ($this->session->get('oauth.state') !== $this->request->state()) { | ||||
| //            throw new InvalidAuthorizationCodeException; | ||||
| //        } | ||||
|     } | ||||
| 	protected $providers; | ||||
| 	protected $session; | ||||
| 	protected $request; | ||||
| 	protected $stateGenerator; | ||||
| 
 | ||||
| 	public function __construct( | ||||
| 		ProviderRegistry $providers, | ||||
| 		Session $session, | ||||
| 		Request $request, | ||||
| 		StateGenerator $stateGenerator | ||||
| 	) | ||||
| 	{ | ||||
| 		$this->providers = $providers; | ||||
| 		$this->session = $session; | ||||
| 		$this->request = $request; | ||||
| 		$this->stateGenerator = $stateGenerator; | ||||
| 	} | ||||
| 
 | ||||
| 	public function registerProvider($alias, Provider $provider) | ||||
| 	{ | ||||
| 		$this->providers->registerProvider($alias, $provider); | ||||
| 	} | ||||
| 
 | ||||
| 	public function authorize($providerAlias) | ||||
| 	{ | ||||
| 		$state = $this->stateGenerator->generate(); | ||||
| 
 | ||||
| 		// this is for some reason needed, plain put doesn't work across the redirect | ||||
| 		\Session::put('oauth.state', $state); | ||||
| 		\Session::save(); | ||||
| 
 | ||||
| 		return $this->getProvider($providerAlias)->authorizeUrl($state); | ||||
| 	} | ||||
| 
 | ||||
| 	public function getUser($providerAlias) | ||||
| 	{ | ||||
| 		$this->verifyState(); | ||||
| 		return $this->getProvider($providerAlias)->getUser(); | ||||
| 	} | ||||
| 
 | ||||
| 	protected function getProvider($providerAlias) | ||||
| 	{ | ||||
| 		return $this->providers->getProvider($providerAlias); | ||||
| 	} | ||||
| 
 | ||||
| 	protected function verifyState() | ||||
| 	{ | ||||
|         if (\Session::get('oauth.state') !== $this->request->state()) { | ||||
|             throw new InvalidAuthorizationCodeException; | ||||
|         } | ||||
| 	} | ||||
| } | ||||
|  | ||||
					Loading…
					
					
				
		Reference in new issue