Skip to content

Commit

Permalink
페이스북 소셜 로그인 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
appkr committed Mar 28, 2017
1 parent d19ffdc commit c226c15
Show file tree
Hide file tree
Showing 12 changed files with 307 additions and 71 deletions.
4 changes: 4 additions & 0 deletions .env.example
Expand Up @@ -31,3 +31,7 @@ MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=

FACEBOOK_APP_ID=YOURS
FACEBOOK_APP_SECRET=YOURS
FACEBOOK_CALLBACK=http://localhost:8000/customers/social/facebook
2 changes: 1 addition & 1 deletion _ide_helper.php
@@ -1,7 +1,7 @@
<?php
/**
* A helper file for Laravel 5, to provide autocomplete information to your IDE
* Generated for Laravel 5.4.15 on 2017-03-26.
* Generated for Laravel 5.4.15 on 2017-03-28.
*
* @author Barry vd. Heuvel <barryvdh@gmail.com>
* @see https://github.com/barryvdh/laravel-ide-helper
Expand Down
49 changes: 49 additions & 0 deletions app/Http/Controllers/Auth/Customer/SocialController.php
@@ -0,0 +1,49 @@
<?php

namespace App\Http\Controllers\Auth\Customer;

use App\Customer;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Laravel\Socialite\AbstractUser;
use Socialite;

class SocialController extends Controller
{
public function __construct()
{
$this->middleware('guest:customers');
}

public function execute(Request $request, string $provider)
{
if (! $request->has('code')) {
return $this->redirectToProvider($provider);
}

return $this->handleProviderCallback($provider);
}

protected function redirectToProvider(string $provider)
{
return Socialite::driver($provider)->redirect();
}

protected function handleProviderCallback(string $provider)
{
/** @var AbstractUser $socialUser */
$socialUser = Socialite::driver($provider)->user();
$nativeUser = Customer::whereEmail($socialUser->getEmail())->first();

if (! $nativeUser) {
return view('auth.customers.register', [
'name' => $socialUser->getName(),
'email' => $socialUser->getEmail(),
]);
}

auth('customers')->login($nativeUser);

return redirect(route('customers.dashboard'));
}
}
1 change: 1 addition & 0 deletions composer.json
Expand Up @@ -10,6 +10,7 @@
"doctrine/dbal": "^2.5",
"guzzlehttp/guzzle": "^6.0",
"laravel/framework": "5.4.*",
"laravel/socialite": "^3.0",
"laravel/tinker": "~1.0"
},
"require-dev": {
Expand Down
119 changes: 118 additions & 1 deletion composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions config/app.php
Expand Up @@ -167,6 +167,7 @@
* Package Service Providers...
*/
Laravel\Tinker\TinkerServiceProvider::class,
Laravel\Socialite\SocialiteServiceProvider::class,

/*
* Application Service Providers...
Expand Down Expand Up @@ -226,6 +227,8 @@
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,

'Socialite' => Laravel\Socialite\Facades\Socialite::class,

],

];
6 changes: 6 additions & 0 deletions config/services.php
Expand Up @@ -35,4 +35,10 @@
'secret' => env('STRIPE_SECRET'),
],

'facebook' => [
'client_id' => env('FACEBOOK_APP_ID'),
'client_secret' => env('FACEBOOK_APP_SECRET'),
'redirect' => env('FACEBOOK_CALLBACK'),
],

];
50 changes: 50 additions & 0 deletions resources/views/auth/customers/login.blade.php
@@ -1,5 +1,37 @@
@extends('layouts.app')

@section('style')
<style>
.login-or {
position: relative;
margin-top: 20px;
margin-bottom: 20px;
padding-top: 15px;
padding-bottom: 15px;
}
.span-or {
display: block;
position: absolute;
left: 50%;
top: 5px;
background-color: #fff;
margin-left: -25px;
width: 50px;
text-align: center;
}
.hr-or {
margin-top: 0px !important;
margin-bottom: 0px !important;
}
.fa-facebook {
margin-right: 10px;
}
</style>
@endsection

@section('content')
<div class="container">
<div class="row">
Expand All @@ -13,6 +45,24 @@
action="{{ route('customers.login.submit') }}">
{{ csrf_field() }}

<div class="form-group">
<div class="col-md-offset-4 col-md-6">
<a
class="btn btn-default btn-lg btn-block"
href="{{ route('customers.social.login', ['facebook']) }}">
<strong>
<i class="fa fa-facebook"></i>
페이스북으로 로그인
</strong>
</a>
</div>
</div>

<div class="login-or">
<hr class="hr-or">
<span class="span-or">or</span>
</div>

<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
<label for="email" class="col-md-4 control-label">
E-Mail Address
Expand Down
4 changes: 2 additions & 2 deletions resources/views/auth/customers/register.blade.php
Expand Up @@ -23,7 +23,7 @@
type="text"
class="form-control"
name="name"
value="{{ old('name') }}"
value="{{ old('name', $name) }}"
autofocus>
{!! $errors->first('name', '<span class="help-block">:message</span>') !!}
</div>
Expand All @@ -40,7 +40,7 @@ class="form-control"
type="email"
class="form-control"
name="email"
value="{{ old('email') }}">
value="{{ old('email', $email) }}">
{!! $errors->first('email', '<span class="help-block">:message</span>') !!}
</div>
</div>
Expand Down

0 comments on commit c226c15

Please sign in to comment.