李帅

1.重构模板和临境上传功能

<?php
namespace App\Http\Controllers\V1;
use App\Http\Controllers\Controller;
use App\Jobs\SendVerificationMessage;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Redis;
use Illuminate\Support\Facades\Validator;
use Jiannei\Response\Laravel\Support\Facades\Response;
class UserController extends Controller
{
//
public function login(Request $request)
{
$validator = Validator::make($request->all(), [
'email' => 'required|max:255',
'password' => 'required',
]);
if ($validator->fails()){
return Response::fail('',500,$validator->errors());
}
try{
$user = User::query()->where('email', $request->email)->first();
if (! $user || ! Hash::check($request->password, $user->password)) {
Response::errorUnauthorized();
}
$token = $user->createToken($request->email)->plainTextToken;
$response = ['token' => $token];
return Response::success($response);
}catch ( \Exception $exception ){
return Response::fail('账号或密码错误',500,$exception->getMessage());
}
}
public function register(Request $request)
{
$validator = Validator::make($request->all(), [
'email' => 'required|unique:users|max:255',
'password' => 'required',
'verify_code' => 'required'
]);
if ($validator->fails()){
return Response::fail('',500,$validator->errors());
}
try{
$redis = Redis::connection();
if ($redis->get($request->email) !== $request->verify_code){
return Response::fail('verify code failed',500);
}
$user = User::query()->create($validator->validated());
$token = $user->createToken($user->email)->plainTextToken;
$response = ['token' => $token];
return Response::success($response);
}catch ( \Exception $exception ){
return Response::fail('register failed',500,$exception->getMessage());
}
}
public function verify(Request $request)
{
$validator = Validator::make($request->all(), [
'email' => 'required|max:255',
]);
if ($validator->fails()){
return Response::fail('',500,$validator->errors());
}
SendVerificationMessage::dispatch($request->email);
return Response::success('','发送成功');
}
}
<?php
namespace App\Jobs;
use App\Mail\SendVerifyCode;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Redis;
class SendVerificationMessage implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $email;
/**
* Create a new job instance.
* @param $email
* @return void
*/
public function __construct($email)
{
//
$this->email = $email;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$code = mt_rand(100000, 999999);
$redis = Redis::connection();
$redis->setex($this->email,$code,1800); //过期时间30分钟
Mail::to($this->email)->send(new SendVerifyCode($code));
}
}
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class SendVerifyCode extends Mailable
{
use Queueable, SerializesModels;
public $subject = "[Parlando] Register Verify";
public $code;
/**
* Create a new message instance.
* @param $code
* @return void
*/
public function __construct($code)
{
//
$this->code = $code;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from('15731208870@163.com', 'Parlando')
->view('mail.verify_code', ['code' => $this->code]);
}
}
......@@ -19,6 +19,7 @@ class User extends Authenticatable
protected $fillable = [
'nickname',
'mobile',
'email',
'password',
'avatar',
'gender',
......
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AlterOneUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('email')->after('mobile')->nullable()->comment('邮箱');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropColumns('users', ['email']);
}
}
<body>
<h5>Set up your account verify code</h5>
<p>your code: {{$code}}</p>
<p>The code will expire in 30 minutes.</p>
</body>
\ No newline at end of file
......@@ -15,6 +15,12 @@ use Illuminate\Routing\Router;
*/
Route::prefix('v1')->namespace('App\Http\Controllers\V1')->group(function (Router $api){
/** 用户账密登录*/
$api->post('/login', 'UserController@login');
$api->post('/register', 'UserController@register');
});
Route::prefix('v1')->namespace('App\Http\Controllers\V1')->group(function (Router $api){
/** 移动端微信用户登录*/
$api->get('login/{service}/callback', 'AuthController@apiHandleProviderCallback');
});
......
......@@ -24,6 +24,10 @@ Route::get('/', function () {
return view('welcome');
});
Route::get('/phpinfo', function () {
phpinfo();
});
Route::get('/create_overlay', function () {
header ('Content-Type: image/png');
......@@ -41,4 +45,10 @@ Route::get('/create_overlay', function () {
imagedestroy($im);
dd($im);
});
/** 预览邮件发送效果 */
Route::get('/verify_page',function (){
return new \App\Mail\SendVerifyCode('1234');
});
\ No newline at end of file
......