mirror of
https://git.meshkee.com/cssd/cssd-back.git
synced 2026-10-12 08:01: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];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+4
-2
@@ -16,8 +16,9 @@ Route::group(['namespace' => 'Api'],function () {
|
||||
Route::post('/login', 'Auth\LoginController@login')->name('login');
|
||||
Route::post('/logout', 'Auth\LoginController@logout')->name('logout')->middleware('auth:api');
|
||||
Route::post('/register', 'Auth\RegisterController@register')->name('register');
|
||||
Route::post('/password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
|
||||
Route::post('/password/reset', 'Auth\ResetPasswordController@reset')->name('password.reset');
|
||||
Route::post('/password/phone', 'Auth\ForgotPasswordController@sendDisposablePassword');
|
||||
Route::post('/password/verifyCode', 'Auth\ForgotPasswordController@checkDisposablePassword');
|
||||
Route::post('/password/reset', 'Auth\ResetPasswordController@reset')->name('password.reset')->middleware('auth:api');
|
||||
|
||||
});
|
||||
|
||||
@@ -33,3 +34,4 @@ Route::post('Users/ChangeStatus/{User}', 'UserController@changeStatus')->middlew
|
||||
Route::post('Users/ChangeRole/{User}', 'UserController@changeRole')->middleware('auth:api');
|
||||
Route::post('UpdateInfo', 'UserController@updateInfo')->middleware('auth:api');
|
||||
Route::resource('Users', 'UserController');
|
||||
Route::post('/TestResults/Verify/{TestResult}', 'TestResultController@verifyTestResult');
|
||||
|
||||
+6
-7
@@ -10,8 +10,10 @@
|
||||
| contains the "web" middleware group. Now create something great!
|
||||
|
|
||||
*/
|
||||
|
||||
|
||||
//
|
||||
// app()->bind('messages', function() {
|
||||
// return new \App\Appended\Classes\Common\Response\MessageResponse;
|
||||
// });
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -42,9 +44,6 @@ Route::post('oauth/token/refresh', '\Laravel\Passport\Http\Controllers\Transient
|
||||
Route::get('oauth/tokens', '\Laravel\Passport\Http\Controllers\AuthorizedAccessTokenController@forUser')->middleware('auth:api');
|
||||
Route::delete('oauth/tokens/{token_id}', '\Laravel\Passport\Http\Controllers\AuthorizedAccessTokenController@destroy')->middleware('auth:api');
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Vue Router
|
||||
@@ -53,6 +52,6 @@ Route::delete('oauth/tokens/{token_id}', '\Laravel\Passport\Http\Controllers\Aut
|
||||
| Allows vue router to pick up all other URL's.
|
||||
|
|
||||
*/
|
||||
Route::any('{all}', function() {
|
||||
Route::any('{all}', function(){
|
||||
return view('welcome');
|
||||
})->where('all' ,'.*');
|
||||
})->where(['all' => '.*']);
|
||||
|
||||
Reference in New Issue
Block a user