0
0
Files
Babyclass/app/Api/Controllers/AuthController.php
2020-08-04 10:09:42 +08:00

132 lines
3.7 KiB
PHP

<?php
namespace App\Api\Controllers;
use App\User;
use Auth;
use Illuminate\Http\Request;
use RuLong\Sms\Models\Sms as SmsModel;
use Validator;
class AuthController extends Controller
{
public function __construct()
{
$this->middleware('auth.api', ['except' => ['login','smsCode']]);
}
/**
* 用户登录
* @param Request $request [description]
* @return [type] [description]
*/
public function login(Request $request)
{
// $info = $request->userInfo;
$code = $request->code;
$app = app('wechat.mini_program');
$jscode = $app->auth->session($code);
$user = User::where('unionid', $jscode->unionid)->first();
$token = Auth::guard('api')->login($user);
return $this->success([
'access_token' => $token,
'access_type' => 'Bearer',
'expires_in' => Auth::guard('api')->factory()->getTTL() * 60,
'userInfo' => [
'uid' => $user->id ?? '',
'avatar' => $user->info->headimgurl ?? '',
'nickname' => $user->info->nickname ?? '',
'openid' => $jscode->openid ?? ''
]
]);
}
/**
* 刷新TOKEN
* @return [type] [description]
*/
public function refresh()
{
return $this->success([
'access_token' => Auth::guard('api')->refresh(true),
'access_type' => 'Bearer',
'expires_in' => Auth::guard('api')->factory()->getTTL() * 60,
]);
}
/**
* 退出登录
* @return [type] [description]
*/
public function logout()
{
Auth::guard('api')->logout(true);
return $this->message('退出登录成功');
}
/**
* 发送验证码
* @return
*/
public function smsCode(Request $request)
{
$channel = $request->channel;
$mobile = $request->mobile;
switch ($channel) {
case 'BYCODE':
case 'FORGOT':
// 验证码登录,必须要手机号存在才行
$validator = Validator::make($request->all(), [
'mobile' => 'required|mobile|exists:users',
], [
'mobile.required' => '手机号码必须填写',
'mobile.mobile' => '手机号码格式不正确',
'mobile.exists' => '手机号码不存在',
]);
break;
case 'BIND':
// 绑定手机号,要不存在才可以
$validator = Validator::make($request->all(), [
'mobile' => 'required|mobile|unique:users',
], [
'mobile.required' => '手机号码必须填写',
'mobile.mobile' => '手机号码格式不正确',
'mobile.unique' => '手机号码已经绑定',
]);
break;
default:
$validator = Validator::make($request->all(), [
'mobile' => 'required|mobile',
], [
'mobile.required' => '手机号码必须填写',
'mobile.mobile' => '手机号码格式不正确',
]);
break;
}
if ($validator->fails()) {
return $this->failed($validator->errors()->first());
}
$res = SmsModel::verify_code($request->mobile);
if ($res !== true) {
return $this->failed($res);
}
try {
\Sms::send($mobile, $channel);
return $this->success('验证码发送成功');
} catch (\Exception $e) {
return $this->failed($e->getMessage());
}
}
}