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