mirror of
https://git.meshkee.com/cssd/cssd-back.git
synced 2026-10-13 14:41:06 +03:30
Forgot Password BackEnd
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace Packages\Auth;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\User;
|
||||
use App\Http\Controller\Api\Auth\LoginController;
|
||||
|
||||
trait SendsPasswordResetEmails
|
||||
{
|
||||
|
||||
/**
|
||||
* Send a Disposable Password to the given user.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function sendDisposablePassword(Request $request)
|
||||
{
|
||||
$this->validatePhone($request);
|
||||
|
||||
// We will send the Disposable Password
|
||||
// to send the Disposable Password , we will examine the response then see the message we
|
||||
// need to show to the user. Finally, we'll send out a proper response.
|
||||
return $this->generateAndSendCode($request);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check Disposable Password And Login
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function checkDisposablePassword(Request $request)
|
||||
{
|
||||
if ( \Cache::has($request->code) ) {
|
||||
$userid = \Cache::pull($request->code);
|
||||
$user = User::where('id', $userid)->first();
|
||||
if($user) {
|
||||
|
||||
$password = rand(10000000, 999999999);
|
||||
$user->password = Hash::make($password);
|
||||
$user->save();
|
||||
|
||||
$request->merge([ 'cell_number' => $user->cell_number, 'password' => $password ]);
|
||||
|
||||
return (new LoginController())->login($request);
|
||||
}
|
||||
return \MessageResponse::error('User Not Found');
|
||||
}
|
||||
return \MessageResponse::error('Error');
|
||||
}
|
||||
|
||||
|
||||
protected function generateAndSendCode($request)
|
||||
{
|
||||
$user = User::where('cell_number', $request->cell_number)->where('verified', 'Verified')->first();
|
||||
if ($user) {
|
||||
$code = rand(100000, 999999);
|
||||
\Cache::put($code, $user->id, Carbon::now()->addMinutes(30));
|
||||
SMSSender::instance()->patternSend($request->cell_number, '121', ["activate-code" => $code]);
|
||||
return \MessageResponse::success('Send Disposable Password');
|
||||
}
|
||||
return \MessageResponse::error('User Not Found');
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate the email for the given request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return void
|
||||
*/
|
||||
protected function validatePhone(Request $request)
|
||||
{
|
||||
$request->validate(['cell_number' => 'required|digits:11']);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
namespace Packages\SMSSender;
|
||||
|
||||
class SMSSender
|
||||
{
|
||||
private $userName = null;
|
||||
private $password = null;
|
||||
private $webService = null;
|
||||
private $fromNumber = null;
|
||||
private $messageFee = 15;
|
||||
private $type = 'Other';
|
||||
private static $panel = null;
|
||||
private $pattern = [
|
||||
'121' => 'کد فعال سازی: %activate-code%',
|
||||
];
|
||||
|
||||
private function __construct() { }
|
||||
|
||||
public static function instance() {
|
||||
if (static::$panel === null) {
|
||||
static::$panel = new static();
|
||||
}
|
||||
return static::$panel;
|
||||
}
|
||||
|
||||
public function setUserName ($userName)
|
||||
{
|
||||
$this->userName = $userName;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setPassword ($password)
|
||||
{
|
||||
$this->password = $password;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setWebService ($webService)
|
||||
{
|
||||
$this->webService = $webService;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getUserName ()
|
||||
{
|
||||
return ($this->userName) ? $this->userName : env('SMS_USERNAME', '');
|
||||
}
|
||||
|
||||
public function getPassword ()
|
||||
{
|
||||
return ($this->password) ? $this->password : env('SMS_PASSWORD', '');
|
||||
}
|
||||
|
||||
public function getFromNumber ()
|
||||
{
|
||||
return ($this->fromNumber) ? $this->fromNumber : env('SMS_FROM_NUMBER', '');
|
||||
}
|
||||
|
||||
public function getWebService ()
|
||||
{
|
||||
return ($this->webService) ? $this->webService : env('SMS_WEBSERVICE', '');
|
||||
}
|
||||
|
||||
public function patternSend($cellNumber, $pattern_code, $input_data)
|
||||
{
|
||||
if (is_string($cellNumber)) {
|
||||
$cellNumber = [$cellNumber];
|
||||
}
|
||||
try {
|
||||
$user = $this->getUserName();
|
||||
$pass = $this->getPassword();
|
||||
$fromNum = $this->getFromNumber();
|
||||
|
||||
$client = new \SoapClient($this->getWebService());
|
||||
$client->sendPatternSms($fromNum, $cellNumber, $user, $pass, $pattern_code, $input_data);
|
||||
|
||||
} catch (\SoapFault $sf) {
|
||||
print $sf->faultcode . "\n";
|
||||
print $sf->faultstring . "\n";
|
||||
return ['code' => $sf->faultcode, 'message' => $sf->faultstring];
|
||||
}
|
||||
}
|
||||
|
||||
public function send($cellNumber, $messageContent)
|
||||
{
|
||||
if (is_string($cellNumber)) {
|
||||
$cellNumber = [$cellNumber];
|
||||
}
|
||||
ini_set("soap.wsdl_cache_enabled", "0");
|
||||
try {
|
||||
$user = $this->getUserName();
|
||||
$pass = $this->getPassword();
|
||||
$fromNum = $this->getFromNumber();
|
||||
//If you want to send in the future ==> $time = '2016-07-30' //$time = '2016-07-30 12:50:50'
|
||||
$client = new \SoapClient($this->getWebService());
|
||||
$client->SendSMS($fromNum, $cellNumber, $messageContent, $user, $pass, '', 'send');
|
||||
return true;
|
||||
} catch (\SoapFault $sf) {
|
||||
print $sf->faultcode . "\n";
|
||||
print $sf->faultstring . "\n";
|
||||
return ['code' => $sf->faultcode, 'message' => $sf->faultstring];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user