Files
cssd-back/app/Appended/Traites/Auth/Verification.php
T
2019-04-18 20:18:13 +04:30

122 lines
3.8 KiB
PHP

<?php
namespace App\Appended\Traites\Auth;
use Illuminate\Support\Facades\Cache;
use Carbon\Carbon;
use Illuminate\Support\Facades\Mail;
use Illuminate\Http\Request;
use App\Mail\RegistrationMailer;
use App\Jobs\SendVerificationSMS;
trait Verification
{
private function setVerified($user_id, $verification)
{
$verify_number = $verification === 'email' ? 1 : 2;
$user = is_numeric($user_id) ? \App\User::select('id', 'verified')->findOrFail($user_id) : $user_id;
$user->verified = $user->verified | $verify_number;
$user->save();
return $user;
}
/**
*--------------------------------------------------------------------------
* farid saravi
* This function checks confirmation email and set user in the database as verified. lsb
*--------------------------------------------------------------------------
*/
public function confirm($token)
{
$user_id = Cache::pull($token);
if ($user_id) {
$user = $this->setVerified($user_id, 'email');
if (! \Auth::check()) {
$this->guard()->login($user);
}
}
return redirect('/');
}
/**
*--------------------------------------------------------------------------
* farid saravi
* This function checks confirmation sms and set user in the database as verified sms. msb
*--------------------------------------------------------------------------
*/
public function confirm_phone(Request $request)
{
$user_id = Cache::pull('phone_number_' . $request->number);
if ($user_id)
{
$user = $this->setVerified($user_id, 'phone_number');
if (! \Auth::check())
{
$this->guard()->login($user);
}
return response()->json(['status' => 'success']);
}
return response()->json(['status' => 'fail'], 422);
}
/**
*--------------------------------------------------------------------------
* farid saravi
* This function sends confirmation email to a user.
* @param \App\User
* @return void
*--------------------------------------------------------------------------
*/
public function mail_confirmation($user, $Type=null)
{
$Type = ($Type == null) ? 'VerifyUser' : $Type;
$email_token = str_random(30);
Cache::put($email_token, $user->id, Carbon::now()->addDays(2));
Mail::to($user->email)->send(new RegistrationMailer($user, $email_token, $Type));
}
/**
*--------------------------------------------------------------------------
* farid saravi
* This function sends confirmation sms to a user.
* @param \App\User
* @return void
*--------------------------------------------------------------------------
*/
public function phone_confirmation($user)
{
$rand_number = rand(100000, 999999);
Cache::put('phone_number_' . $rand_number, $user->id, 60);
if( $user->cell_number != '' && $user->cell_number != null ) {
$MessageText = ' کد فعالسازی شما :'. $rand_number;
$this->sendSMS($user->cell_number, $MessageText);
}
}
protected function sendSMS($phone_number, $message)
{
$options = array(
'login' => 'hs-harmony-istore',
'password' => 'WillaSMS47CD47'
);
$client = new \SoapClient('http://sms.sms-bartar.com/webservice/?WSDL', $options);
try {
$messageId = $client->send($phone_number, $message);
} catch (SoapFault $sf) {
print $sf->faultcode . "\n";
print $sf->faultstring . "\n";
return ['code' => $sf->faultcode, 'message' => $sf->faultstring];
}
}
}