// +---------------------------------------------------------------------- declare (strict_types=1); namespace app\api\controller; use app\api\service\passport\Login as LoginService; use think\facade\Cookie; use think\facade\Session; /** * 用户认证模块 * Class Passport * @package app\api\controller */ class Passport extends Controller { /** * 登录接口 (需提交手机号、短信验证码、第三方用户信息) * @return \think\response\Json|\think\response\View * @throws \app\common\exception\BaseException * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function login() { // 执行登录 $LoginService = new LoginService; if (!$LoginService->login($this->postForm())) { return $this->renderError($LoginService->getError()); } // 用户信息 $userInfo = $LoginService->getUserInfo(); return $this->renderSuccess([ 'userId' => (int)$userInfo['user_id'], 'token' => $LoginService->getToken((int)$userInfo['user_id']) ], '登录成功'); } /** * 微信小程序快捷登录 (需提交wx.login接口返回的code、微信用户公开信息) * 业务流程:判断openid是否存在 -> 存在: 更新用户登录信息 -> 返回userId和token * -> 不存在: 返回false, 跳转到注册页面 * @return array|\think\response\Json * @throws \app\common\exception\BaseException * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function loginMpWx() { // 微信小程序一键登录 $LoginService = new LoginService; if (!$LoginService->loginMpWx($this->postForm())) { return $this->renderError($LoginService->getError()); } // 获取登录成功后的用户信息 $userInfo = $LoginService->getUserInfo(); return $this->renderSuccess([ 'userId' => (int)$userInfo['user_id'], 'token' => $LoginService->getToken((int)$userInfo['user_id']) ], '登录成功'); } /** * 快捷登录: 微信小程序授权手机号登录 * @return array|\think\response\Json * @throws \app\common\exception\BaseException * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function loginMpWxMobile() { // 微信小程序一键登录 $LoginService = new LoginService; if (!$LoginService->loginMpWxMobile($this->postForm())) { return $this->renderError($LoginService->getError()); } // 获取登录成功后的用户信息 $userInfo = $LoginService->getUserInfo(); return $this->renderSuccess([ 'userId' => (int)$userInfo['user_id'], 'token' => $LoginService->getToken((int)$userInfo['user_id']) ], '登录成功'); } }