added reset password method

This commit is contained in:
jack
2018-04-27 10:30:18 +08:00
parent b4c257b2d0
commit 838e5150a3
5 changed files with 111 additions and 2 deletions
+60 -2
View File
@@ -3,15 +3,22 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use App\UserVerification;
use App\PasswordResets;
use JWTAuth;
use Auth;
use Aloha\Twilio\Twilio;
use Tymon\JWTAuth\Exceptions\JWTException;
use Validator, DB, Hash, Mail, Illuminate\Support\Facades\Password;
use Illuminate\Auth\Passwords\TokenRepositoryInterface;
use Illuminate\Contracts\Hashing\Hasher as HasherContract;
class AuthController extends Controller
{
protected $hasher;
public function __construct(HasherContract $hasher)
{
$this->hasher = $hasher;
}
/**
* API Send verification code
*
@@ -133,7 +140,7 @@ class AuthController extends Controller
$credentials = $request->only('phone', 'password');
$rules = [
'phone' => 'required|digits:10|unique:users',
'phone' => 'required|digits:11',
'password' => 'required',
];
$validator = Validator::make($credentials, $rules);
@@ -183,6 +190,18 @@ class AuthController extends Controller
*/
public function recover(Request $request)
{
$credentials = $request->only('phone');
$rules = [
'phone'=> 'required',
];
$validator = Validator::make($credentials, $rules);
if($validator->fails()) {
return response()->json(['success'=> false, 'error'=> $validator->messages()]);
}
$user = User::where('phone', $request->phone)->first();
if ($user){
@@ -191,6 +210,9 @@ class AuthController extends Controller
'phone' => $user->phone,
'token' => $token
]);
return response()->json([
'success' => true, 'data'=> ['message'=> 'A reset link has been send to your mobile phone.']
]);
}
/*
@@ -200,8 +222,44 @@ class AuthController extends Controller
*/
return response()->json([
'success' => true, 'data'=> ['message'=> 'A reset link has been send to your mobile phone.']
'success' => false, 'data'=> ['message'=> 'Fail to recover your account.']
]);
}
/**
* Reset the given user's password.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function reset(Request $request)
{
$credentials = $request->only('token', 'password', 'password_confirmation');
$rules = [
'token' => 'required',
'password' => 'required|confirmed|min:6'
];
$validator = Validator::make($credentials, $rules);
if($validator->fails()) {
return response()->json(['success'=> false, 'error'=> $validator->messages()]);
}
$token = $request->get('token');
$password = $request->get('password');
$reset = PasswordResets::where('token', $token)->first();
if($reset) {
$user = User::where('phone', '=', $reset->phone)->first();
$user->password = Hash::make($password);
$user->save();
$reset->delete();
return response()->json([
'success' => false, 'data'=> ['message'=> 'Reset success']
]);
}
return response()->json([
'success' => false, 'data'=> ['message'=> 'Invalid token or email or expired code']
]);
}
}
@@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ForgotPasswordController extends Controller
{
//
}
+10
View File
@@ -0,0 +1,10 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class PasswordResets extends Model
{
//
}
@@ -0,0 +1,30 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddIdToPasswordReset extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('password_resets', function (Blueprint $table) {
$table->increments('id');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}
+1
View File
@@ -20,6 +20,7 @@ use Illuminate\Http\Request;
Route::post('register', 'AuthController@register');
Route::post('login', 'AuthController@login');
Route::post('password/recover', 'AuthController@recover');
Route::post('password/reset', 'AuthController@reset');
Route::post('send-verification', 'AuthController@sendVerification');