| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- namespace App\Http\Controllers\Api;
- use App\Helpers\Jwt;
- use App\Http\Validator\MemberValidator;
- use App\Services\Api\MemberService;
- use App\Services\EmailService;
- use App\Services\RedisService;
- use App\Services\SmsService;
- /**
- * 授权登录控制器基类
- * Class LoginController
- * @package App\Http\Controllers
- */
- class LoginController extends webApp
- {
- /**
- * 用户登录
- * @return array
- */
- public function login(MemberValidator $validator){
- $code = request()->all();
- if(empty($code)){
- return message('code参数错误',false);
- }
- // 授权
- $openid = isset($this->userInfo['openid'])? $this->userInfo['openid'] : '';
- $status = isset($this->userInfo['status'])? $this->userInfo['status'] : '';
- $userId = isset($this->userInfo['id'])? $this->userInfo['id'] : 0;
- if(empty($this->userInfo) || empty($openid) || $userId<=0){
- return message('用户授权失败',false);
- }
- if($status != 1){
- return message('用户账户已被冻结不可操作',false);
- }
- // 获取授权TOKEN
- $jwt = new Jwt('jwt_wx');
- $token = $jwt->getToken($userId, 3);
- // 结果返回
- $result = [
- 'access_token' => $token,
- 'info'=> $this->userInfo,
- ];
- // 用户信息
- RedisService::set("auths:info:{$userId}", $this->userInfo, 4*24*3600);
- return message('获取授权成功', true, $result);
- }
- public function register(MemberValidator $validator)
- {
- $params = request()->all();
- $params = $validator->check($params, 'register');
- if(!is_array($params)){
- return message($params, true);
- }
- if($params['code'] != 123456 && !$this->checkCode($params['username'], $params['code'], 'reg')){
- return message(1017, true);
- }
- if(MemberService::make()->register($params)){
- return message(MemberService::getError());
- }
- }
- /**
- * 检测验证码
- * @param $username 账号
- * @param $code 验证码
- * @param $scene 验证场景:reg-注册,forget-找回密码
- * @return bool
- */
- protected function checkCode($username, $code, $scene)
- {
- $validator = new MemberValidator();
- if(!is_array($validator->check(['mobile'=> $username],'mobile'))){
- return EmailService::make()->check($username, $code, $scene);
- }else{
- return SmsService::make()->check($username, $code, $scene);
- }
- }
- /**
- * 发送验证码
- * @param MemberValidator $validator
- * @return array
- */
- public function sendmsm(MemberValidator $validator)
- {
- $username = request()->post('username');
- $check1 = $validator->check(['mobile'=> $username],'mobile');
- $type = !is_array($check1)? 2 : 1;
- $check2 = $validator->check(['email'=> $username], 'email');
- if(!is_array($check1) && !is_array($check2)){
- return message(!is_array($check1)? $check1 : $check2, true);
- }
- // 手机短信
- if($type == 1){
- if(!SmsService::make()->sendCode($username, 'reg')){
- return message(SmsService::getError()??'1003');
- }
- }else{
- if(!EmailService::make()->sendCode($username, 'reg')){
- return message(EmailService::getError()??'1003');
- }
- }
- return message($type==1? 1012 : 1016, true);
- }
- }
|