Remove social link items and update test email
This commit is contained in:
parent
df3f7e31be
commit
78a8f63ac9
@ -6,17 +6,20 @@ use Illuminate\Console\Command;
|
|||||||
use Illuminate\Support\Facades\Config;
|
use Illuminate\Support\Facades\Config;
|
||||||
use Illuminate\Support\Facades\Mail;
|
use Illuminate\Support\Facades\Mail;
|
||||||
|
|
||||||
use App\Mail\TestEmail as MailTest;
|
use App\Mail\Test;
|
||||||
use App\Models\{Site,User};
|
use App\Models\{Site,User};
|
||||||
|
|
||||||
class TestEmail extends Command
|
class EmailTest extends Command
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* The name and signature of the console command.
|
* The name and signature of the console command.
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $signature = 'test:email {site : Site ID} {id : User ID} {email? : Alternative Email}';
|
protected $signature = 'test-email'
|
||||||
|
.' {--s|site : Site ID}'
|
||||||
|
.' {id : User ID}'
|
||||||
|
.' {email? : Alternative Email}';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The console command description.
|
* The console command description.
|
||||||
@ -25,16 +28,6 @@ class TestEmail extends Command
|
|||||||
*/
|
*/
|
||||||
protected $description = 'Send a test email';
|
protected $description = 'Send a test email';
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new command instance.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the console command.
|
* Execute the console command.
|
||||||
*
|
*
|
||||||
@ -42,11 +35,20 @@ class TestEmail extends Command
|
|||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
Config::set('site',Site::findOrFail($this->argument('site')));
|
Config::set(
|
||||||
|
'site',
|
||||||
|
$this->option('site')
|
||||||
|
? Site::findOrFail($this->option('site'))
|
||||||
|
: Site::where('url',config('app.url'))->sole()
|
||||||
|
);
|
||||||
|
|
||||||
$uo = User::find($this->argument('id'));
|
$uo = User::find($this->argument('id'));
|
||||||
|
|
||||||
Mail::to($this->argument('email') ?? $uo->email)
|
$result = Mail::to($this->argument('email') ?? $uo->email)
|
||||||
->send(new MailTest($uo));
|
->send(new Test($uo));
|
||||||
|
|
||||||
|
$this->info($result->getMessageId());
|
||||||
|
|
||||||
|
return self::SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,14 +3,10 @@
|
|||||||
namespace App\Http\Controllers\Auth;
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Arr;
|
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\Mail;
|
|
||||||
use Laravel\Socialite\Facades\Socialite;
|
use Laravel\Socialite\Facades\Socialite;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Mail\SocialLink;
|
|
||||||
use App\Models\{ProviderOauth,ProviderToken,User,UserOauth};
|
use App\Models\{ProviderOauth,ProviderToken,User,UserOauth};
|
||||||
|
|
||||||
class SocialLoginController extends Controller
|
class SocialLoginController extends Controller
|
||||||
@ -105,46 +101,4 @@ class SocialLoginController extends Controller
|
|||||||
->intended('/home')
|
->intended('/home')
|
||||||
->with('success','Token refreshed.');
|
->with('success','Token refreshed.');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* We have identified the user and oauth, just need them to confirm the link
|
|
||||||
*
|
|
||||||
* @param $provider
|
|
||||||
* @param UserOauth $ao
|
|
||||||
* @param User $uo
|
|
||||||
* @return \Illuminate\View\View
|
|
||||||
*/
|
|
||||||
public function link($provider,UserOauth $ao,User $uo): \Illuminate\View\View
|
|
||||||
{
|
|
||||||
// @note If this is sent now (send()), it results in the caller to be executed a second time (handleProviderCallback()).
|
|
||||||
Mail::to($uo->email)->queue(new SocialLink($ao));
|
|
||||||
|
|
||||||
return view('auth.social_link')
|
|
||||||
->with('oauthid',$ao->id)
|
|
||||||
->with('provider',$provider);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function linkcomplete(Request $request,$provider)
|
|
||||||
{
|
|
||||||
// Load our oauth id
|
|
||||||
$aoo = UserOauth::findOrFail($request->post('oauthid'));
|
|
||||||
|
|
||||||
// Check our email matches
|
|
||||||
if (Arr::get($aoo->oauth_data,'email','invalid') !== $request->post('email'))
|
|
||||||
return redirect('/login')->with('error','Account details didnt match to make link.');
|
|
||||||
|
|
||||||
// Check our token matches
|
|
||||||
if ($aoo->link_token !== $request->post('token'))
|
|
||||||
return redirect('/login')->with('error','Token details didnt match to make link.');
|
|
||||||
|
|
||||||
// Load our email.
|
|
||||||
$uo = User::where('email',$request->post('email'))->firstOrFail();
|
|
||||||
|
|
||||||
$aoo->user_id = $uo->id;
|
|
||||||
$aoo->save();
|
|
||||||
Auth::login($uo);
|
|
||||||
|
|
||||||
return redirect()
|
|
||||||
->intended('/home');
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,48 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Mail;
|
|
||||||
|
|
||||||
use Illuminate\Bus\Queueable;
|
|
||||||
use Illuminate\Mail\Mailable;
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
|
||||||
use Illuminate\Support\Facades\Config;
|
|
||||||
|
|
||||||
use App\Models\{Site,User,UserOauth};
|
|
||||||
|
|
||||||
class SocialLink extends Mailable
|
|
||||||
{
|
|
||||||
use Queueable, SerializesModels;
|
|
||||||
|
|
||||||
public string $token;
|
|
||||||
public Site $site;
|
|
||||||
public ?User $user;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new message instance.
|
|
||||||
*
|
|
||||||
* @param UserOauth $o
|
|
||||||
*/
|
|
||||||
public function __construct(UserOauth $o)
|
|
||||||
{
|
|
||||||
$this->site = $o->site;
|
|
||||||
$this->token = $o->link_token;
|
|
||||||
$this->user = $o->user;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Build the message.
|
|
||||||
*
|
|
||||||
* @return $this
|
|
||||||
*/
|
|
||||||
public function build()
|
|
||||||
{
|
|
||||||
Config::set('site',$this->site);
|
|
||||||
|
|
||||||
return $this
|
|
||||||
->markdown('mail.system.social_link')
|
|
||||||
->subject('Link your Account')
|
|
||||||
->with([
|
|
||||||
'site'=>$this->site,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
@ -3,14 +3,12 @@
|
|||||||
namespace App\Mail;
|
namespace App\Mail;
|
||||||
|
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
||||||
use Illuminate\Mail\Mailable;
|
use Illuminate\Mail\Mailable;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
use Illuminate\Support\Facades\Config;
|
|
||||||
|
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
|
||||||
class TestEmail extends Mailable
|
class Test extends Mailable
|
||||||
{
|
{
|
||||||
use Queueable, SerializesModels;
|
use Queueable, SerializesModels;
|
||||||
|
|
||||||
@ -33,10 +31,8 @@ class TestEmail extends Mailable
|
|||||||
*/
|
*/
|
||||||
public function build()
|
public function build()
|
||||||
{
|
{
|
||||||
Config::set('site',$this->user->site);
|
|
||||||
|
|
||||||
return $this
|
return $this
|
||||||
->markdown('mail.system.test_email')
|
->markdown('mail.test')
|
||||||
->subject('Just a test...')
|
->subject('Just a test...')
|
||||||
->with([
|
->with([
|
||||||
'site'=>$this->user->site,
|
'site'=>$this->user->site,
|
@ -1,21 +0,0 @@
|
|||||||
@component('mail::message',['site'=>$site,'heading'=>'Link Your Account'])
|
|
||||||
Hi {{ isset($user) ? $user->name_full.',' : '' }}
|
|
||||||
|
|
||||||
A request was made to link your account to a social login.
|
|
||||||
If you didnt make this request, you can ignore this, and the request will be ignored.
|
|
||||||
If you did make the request, then please enter the code displayed below.
|
|
||||||
|
|
||||||
@component('mail::button')
|
|
||||||
{{ $token }}
|
|
||||||
@endcomponent
|
|
||||||
|
|
||||||
Once you've keyed in this code, you'll be able to login to your account using your social login instead of a username and a password.
|
|
||||||
|
|
||||||
Thanks,
|
|
||||||
|
|
||||||
{{ config('mail.from.name') }}
|
|
||||||
|
|
||||||
@component('mail::subcontent')
|
|
||||||
If you didnt make this request, you can safely ignore this email - no change was made to your account, nor was it accessed by an unauthorised person.
|
|
||||||
@endcomponent
|
|
||||||
@endcomponent
|
|
@ -1,80 +0,0 @@
|
|||||||
@extends('adminlte::layouts.auth')
|
|
||||||
|
|
||||||
@section('htmlheader_title')
|
|
||||||
Link Account
|
|
||||||
@endsection
|
|
||||||
|
|
||||||
@section('content')
|
|
||||||
<div class="login-box">
|
|
||||||
<div class="login-logo">
|
|
||||||
<a>{!! config('app.name_html_long') !!}</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="alert alert-success">
|
|
||||||
<strong>NOTE:</strong> Link your account.<br><br>
|
|
||||||
<ul>
|
|
||||||
<li>An email has been sent to you with a token, please use those details here:</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@if (count($errors) > 0)
|
|
||||||
<div class="alert alert-danger">
|
|
||||||
<strong>Whoops!</strong> {{ trans('adminlte_lang::message.someproblems') }}<br><br>
|
|
||||||
<ul>
|
|
||||||
@foreach ($errors->all() as $error)
|
|
||||||
<li>{{ $error }}</li>
|
|
||||||
@endforeach
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<!-- /.login-logo -->
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-body login-card-body">
|
|
||||||
<p class="login-box-msg">Link your account</p>
|
|
||||||
|
|
||||||
<form method="post" action="{{ url('/auth/'.$provider.'/linkcomplete') }}">
|
|
||||||
{{ csrf_field() }}
|
|
||||||
<input type="hidden" name="oauthid" value="{{ $oauthid }}">
|
|
||||||
|
|
||||||
<div class="input-group mb-3">
|
|
||||||
<input type="email" name="email" class="form-control" placeholder="Email">
|
|
||||||
<div class="input-group-append">
|
|
||||||
<span class="fa fa-envelope input-group-text"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-group mb-3">
|
|
||||||
<input type="password" name="token" class="form-control" placeholder="Token">
|
|
||||||
<div class="input-group-append">
|
|
||||||
<span class="fa fa-lock input-group-text"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-8">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /.col -->
|
|
||||||
<div class="col-4">
|
|
||||||
<button type="submit" name="submit" class="btn btn-primary btn-block btn-flat">Link</button>
|
|
||||||
</div>
|
|
||||||
<!-- /.col -->
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<p class="mb-1">
|
|
||||||
<a name="reset" href="{{ url('/password/reset') }}">{{ trans('adminlte_lang::message.forgotpassword') }}</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
@isset($register)
|
|
||||||
<p class="mb-0">
|
|
||||||
<a href="register.html" class="text-center">Register a new account</a>
|
|
||||||
</p>
|
|
||||||
@endisset
|
|
||||||
</div>
|
|
||||||
<!-- /.login-card-body -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.login-box -->
|
|
||||||
@endsection
|
|
@ -61,8 +61,6 @@ Route::get('pay/paypal/capture',[PaypalController::class,'capture']);
|
|||||||
Route::get('auth/{socialProvider}',[SocialLoginController::class,'redirectToProvider']);
|
Route::get('auth/{socialProvider}',[SocialLoginController::class,'redirectToProvider']);
|
||||||
Route::get('auth/{socialProvider}/callback',[SocialLoginController::class,'handleProviderCallback']);
|
Route::get('auth/{socialProvider}/callback',[SocialLoginController::class,'handleProviderCallback']);
|
||||||
Route::get('auth/{socialProvider}/token',[SocialLoginController::class,'handleBearerTokenCallback']);
|
Route::get('auth/{socialProvider}/token',[SocialLoginController::class,'handleBearerTokenCallback']);
|
||||||
Route::get('auth/{socialProvider}/link',[SocialLoginController::class,'link']);
|
|
||||||
Route::post('auth/{socialProvider}/linkcomplete',[SocialLoginController::class,'linkcomplete']);
|
|
||||||
|
|
||||||
// Return from user switch
|
// Return from user switch
|
||||||
Route::get('admin/switch/stop',[SwitchUserController::class,'switch_stop'])
|
Route::get('admin/switch/stop',[SwitchUserController::class,'switch_stop'])
|
||||||
|
Loading…
Reference in New Issue
Block a user