Merge social media login #98
@ -4,6 +4,7 @@ namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Facade\Theme;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\User;
|
||||
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
||||
use Illuminate\Http\Request;
|
||||
use Socialite;
|
||||
@ -78,11 +79,25 @@ class LoginController extends Controller
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function handleFacebookCallback()
|
||||
public function handleFacebookCallback(Request $request)
|
||||
{
|
||||
$user = Socialite::driver('facebook')->user();
|
||||
dd($user);
|
||||
$facebookUser = Socialite::driver('facebook')->user();
|
||||
$user = User::where('facebook_id', $facebookUser->id)->first();
|
||||
|
||||
// $user->token;
|
||||
if (is_null($user))
|
||||
{
|
||||
$request->getSession()->put('registerData', [
|
||||
'name' => $facebookUser->name,
|
||||
'email' => $facebookUser->email,
|
||||
'facebook_id' => $facebookUser->id,
|
||||
'is_activated' => true
|
||||
]);
|
||||
|
||||
return redirect(route('register'));
|
||||
}
|
||||
|
||||
$this->guard()->login($user);
|
||||
|
||||
return redirect(route('home'));
|
||||
}
|
||||
}
|
||||
|
@ -85,25 +85,22 @@ class RegisterController extends Controller
|
||||
*/
|
||||
protected function create(array $data)
|
||||
{
|
||||
$activationData = [
|
||||
'is_activated' => true
|
||||
];
|
||||
|
||||
if (UserConfig::get('require_email_verification'))
|
||||
if (!isset($data['is_activated']))
|
||||
{
|
||||
$activationData['is_activated'] = false;
|
||||
$activationData['activation_token'] = MiscHelper::randomString();
|
||||
$data['is_activated'] = true;
|
||||
|
||||
if (UserConfig::get('require_email_verification'))
|
||||
{
|
||||
$data['is_activated'] = false;
|
||||
$data['activation_token'] = MiscHelper::randomString();
|
||||
}
|
||||
}
|
||||
|
||||
return User::create(array_merge(
|
||||
[
|
||||
'name' => $data['name'],
|
||||
'email' => $data['email'],
|
||||
'password' => bcrypt($data['password']),
|
||||
'is_admin' => false
|
||||
],
|
||||
$activationData
|
||||
));
|
||||
$data['password'] = bcrypt($data['password']);
|
||||
$data['is_admin'] = false;
|
||||
unset($data['password_confirmation']);
|
||||
|
||||
return User::create($data);
|
||||
}
|
||||
|
||||
public function register(Request $request)
|
||||
@ -115,8 +112,17 @@ class RegisterController extends Controller
|
||||
|
||||
$this->validator($request)->validate();
|
||||
|
||||
$userData = $request->all();
|
||||
|
||||
// Social media login info
|
||||
$registerData = $request->getSession()->get('registerData');
|
||||
if (!is_null($registerData))
|
||||
{
|
||||
$userData = array_merge($registerData, $userData);
|
||||
}
|
||||
|
||||
/** @var User $user */
|
||||
$user = $this->create($request->all());
|
||||
$user = $this->create($userData);
|
||||
|
||||
if ($user->is_activated)
|
||||
{
|
||||
@ -137,15 +143,24 @@ class RegisterController extends Controller
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function showRegistrationForm()
|
||||
public function showRegistrationForm(Request $request)
|
||||
{
|
||||
if (!UserConfig::get('allow_self_registration'))
|
||||
{
|
||||
return redirect(route('home'));
|
||||
}
|
||||
|
||||
// Social media login info
|
||||
$registerData = $request->getSession()->get('registerData');
|
||||
if (is_null($registerData))
|
||||
{
|
||||
$registerData['name'] = '';
|
||||
$registerData['email'] = '';
|
||||
}
|
||||
|
||||
return Theme::render('auth.v2_unified', [
|
||||
'active_tab' => 'register'
|
||||
'active_tab' => 'register',
|
||||
'register_data' => $registerData
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ class User extends Authenticatable
|
||||
* @var array
|
||||
*/
|
||||
protected $fillable = [
|
||||
'name', 'email', 'password', 'is_admin', 'is_activated', 'activation_token', 'profile_alias'
|
||||
'name', 'email', 'password', 'is_admin', 'is_activated', 'activation_token', 'enable_profile_page', 'profile_alias', 'facebook_id'
|
||||
];
|
||||
|
||||
/**
|
||||
|
@ -17,7 +17,7 @@ return [
|
||||
'facebook' => [
|
||||
'client_id' => env('FACEBOOK_CLIENT_ID'),
|
||||
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
|
||||
'redirect' => url('login/facebook/callback')
|
||||
'redirect' => php_sapi_name() != 'cli' ? url('login/facebook/callback') : ''
|
||||
],
|
||||
|
||||
'gitea' => [
|
||||
|
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddUserFacebookIdColumn extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table)
|
||||
{
|
||||
$table->string('facebook_id')->nullable(true);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table)
|
||||
{
|
||||
$table->dropColumn('facebook_id');
|
||||
});
|
||||
}
|
||||
}
|
@ -22,6 +22,8 @@ return [
|
||||
'Please click the link in this e-mail to activate your account.',
|
||||
'change_password_action' => 'Change password',
|
||||
'change_password_title' => 'Change your password',
|
||||
'email_password_login' => 'Alternatively, login with your e-mail address and password:',
|
||||
'email_password_register' => 'Alternatively, create an account using your e-mail address and a password:',
|
||||
'forgot_password_action' => 'Send Reset E-mail',
|
||||
'forgot_password_link' => 'Forgotten your password?',
|
||||
'forgot_password_title' => 'Send password reset link',
|
||||
@ -29,5 +31,7 @@ return [
|
||||
'recaptcha_failed_message' => 'The reCAPTCHA verfication failed. Please ensure you have completed the reCAPTCHA challenge and try again.',
|
||||
'register_page_title' => 'Create an account',
|
||||
'reset_password_action' => 'Reset Password',
|
||||
'reset_password_title' => 'Reset your password'
|
||||
'reset_password_title' => 'Reset your password',
|
||||
'social_login' => 'Feeling sociable? Login with:',
|
||||
'social_register' => 'Feeling sociable? Register with:'
|
||||
];
|
||||
|
@ -1,3 +1,11 @@
|
||||
<p>@lang('auth.social_login')</p>
|
||||
<p class="text-center">
|
||||
<a href="{{ route('login.facebook') }}"><i class="fa fa-facebook fa-fw" style="font-size: xx-large;"></i></a>
|
||||
{{--<a href="{{ route('login.facebook') }}"><i class="fa fa-twitter fa-fw" style="font-size: xx-large;"></i></a>--}}
|
||||
</p>
|
||||
|
||||
<p class="mt-5 mb-4">@lang('auth.email_password_login')</p>
|
||||
|
||||
<form role="form" method="POST" action="{{ url('/login') }}">
|
||||
{{ csrf_field() }}
|
||||
|
||||
|
@ -1,3 +1,11 @@
|
||||
<p>@lang('auth.social_register')</p>
|
||||
<p class="text-center">
|
||||
<a href="{{ route('login.facebook') }}"><i class="fa fa-facebook fa-fw" style="font-size: xx-large;"></i></a>
|
||||
{{--<a href="{{ route('login.facebook') }}"><i class="fa fa-twitter fa-fw" style="font-size: xx-large;"></i></a>--}}
|
||||
</p>
|
||||
|
||||
<p class="mt-5 mb-4">@lang('auth.email_password_register')</p>
|
||||
|
||||
<form role="form" method="POST" action="{{ url('/register') }}">
|
||||
{{ csrf_field() }}
|
||||
|
||||
@ -5,7 +13,7 @@
|
||||
<label for="name" class="col-md-4 col-form-label text-md-right">@lang('forms.realname_label')</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="name" type="text" class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" name="name" value="{{ old('name') }}" autofocus>
|
||||
<input id="name" type="text" class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" name="name" value="{{ old('name', $register_data['name']) }}"{{ empty($register_data['name']) ? ' autofocus' : '' }}>
|
||||
|
||||
@if ($errors->has('name'))
|
||||
<div class="invalid-feedback">
|
||||
@ -19,7 +27,7 @@
|
||||
<label for="email" class="col-md-4 col-form-label text-md-right">@lang('forms.email_label')</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}">
|
||||
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email', $register_data['email']) }}">
|
||||
|
||||
@if ($errors->has('email'))
|
||||
<div class="invalid-feedback">
|
||||
@ -33,7 +41,7 @@
|
||||
<label for="password" class="col-md-4 col-form-label text-md-right">@lang('forms.password_label')</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password">
|
||||
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password"{{ !empty($register_data['name']) ? ' autofocus' : '' }}>
|
||||
|
||||
@if ($errors->has('password'))
|
||||
<div class="invalid-feedback">
|
||||
|
Loading…
Reference in New Issue
Block a user