admin/app/frontend/modules/member/controllers/LoginController.php

288 lines
11 KiB
PHP

<?php
/**
* Created by PhpStorm.
* Author:
* Date: 17/2/22
* Time: 上午11:56
*/
namespace app\frontend\modules\member\controllers;
use app\common\components\ApiController;
use app\common\events\member\MemberLoginEvent;
use app\common\facades\RichText;
use app\common\helpers\Client;
use app\common\helpers\Url;
use app\common\models\Member;
use app\common\models\Protocol;
use app\common\services\Session;
use app\frontend\models\MemberShopInfo;
use app\frontend\modules\member\services\factory\MemberFactory;
use app\frontend\modules\member\services\MemberOfficeAccountService;
use app\frontend\modules\member\services\MemberService;
use Illuminate\Contracts\Encryption\DecryptException;
class LoginController extends ApiController
{
protected $publicController = ['Login'];
protected $publicAction = ['index', 'phoneSetGet', 'chekAccount', 'loginMode','newLoginMode'];
protected $ignoreAction = ['index', 'phoneSetGet', 'chekAccount', 'loginMode','newLoginMode'];
public function index()
{
$type = request()->input('type');
$uniacid = \YunShop::app()->uniacid;
$mid = Member::getMid();
//判断是否开启微信登录
if (\YunShop::request()->show_wechat_login) {
return $this->init_login();
}
$code = request()->input('code');
if (request()->input('iscode') == 1 || ($code !=1 && !empty($code))) {
$className = new MemberOfficeAccountService();
$res = $className->getWechatOpenid();
return $this->errorJson($res['json'], ['status' => $res['status']]);
}
if (!empty($type)) {
$member = MemberFactory::create($type);
if ($member !== null) {
$msg = $member->login();
if (!empty($msg)) {
if ($msg['status'] == 1 || $msg['status'] == 11) {
$url = Url::absoluteApp('member', ['i' => $uniacid, 'mid' => $mid]);
if (isset($msg['json']['redirect_url'])) {
$url = $msg['json']['redirect_url'];
}
if (isset($msg['variable']['url'])) {
$url = $msg['variable']['url'];
}
$data = $msg['variable'];
$data['status'] = $msg['status'];
$data['url'] = $url;
$this->updateLastLoginTime($msg['json']['uid']);
return $this->successJson($msg['json'], $data);
} else {
return $this->errorJson($msg['json'], ['status' => $msg['status']]);
}
} else {
return $this->errorJson('登录失败', ['status' => 3]);
}
} else {
return $this->errorJson('登录异常', ['status' => 2]);
}
} else {
return $this->errorJson('客户端类型错误', ['status' => 0]);
}
}
/**
* 初始化登录,判断是否开启微信登录
*
* @return \Illuminate\Http\JsonResponse
*/
private function init_login()
{
$weixin_oauth = \Setting::get('shop_app.pay.weixin_oauth');
return $this->successJson('', ['status' => 1, 'wetach_login' => $weixin_oauth]);
}
public function updateLastLoginTime($uid)
{
event(new MemberLoginEvent($uid));
MemberShopInfo::where('member_id', $uid)->update(['last_login_time' => time()]);
}
public function phoneSetGet()
{
$phone_oauth = \Setting::get('shop_app.pay.phone_oauth');
if (empty($phone_oauth)) {
$phone_oauth = '0';
}
return $this->successJson('ok', ['phone_oauth' => $phone_oauth]);
}
public function chekAccount()
{
$type = \YunShop::request()->type;
if (1 == $type) {
$member = MemberFactory::create($type);
$member->chekAccount();
}
}
public function checkLogin()
{
return $this->successJson('已登录');
}
public function loginMode()
{
$data = [];
//增加验证码功能
$status = \Setting::get('shop.sms.status');
if (extension_loaded('fileinfo')) {
if ($status == 1) {
$captcha = self::captcha();
$result['captcha'] = $captcha;
$result['captcha']['status'] = $status;
} else {
$result['captcha']['status'] = $status;
}
}
$data['yun_sign'] = [];
if (app('plugins')->isEnabled('yun-sign')) {
$yun_sign = [
'login_type' => 5,
'redirect_url' => '',
'tel' => ''
];
$redirect_url = Session::get('ys_short_url_redirect_url');
$redirect_tel = intval(Session::get('ys_short_url_redirect_tel'));
if ($redirect_url && $redirect_tel) {
$yun_sign = [
'login_type' => 10,
'redirect_url' => $redirect_url,
'tel' => $redirect_tel
];
}
$data['yun_sign'] = $yun_sign;
}
$data['sms'] = $result;
$registerSet = \Setting::get('shop.register');
$data['mobile_login_code'] = !$registerSet['login_mode'] || in_array('mobile_code',$registerSet['login_mode']) ? 1 : 0;
$data['mobile_code_login'] = !$registerSet['login_mode'] || in_array('mobile_code',$registerSet['login_mode']) ? 1 : 0;//开启手机验证码登录
$data['password_login'] = !$registerSet['login_mode'] || in_array('password',$registerSet['login_mode']) ? 1 : 0;//开启密码登录
$data['logo'] = !empty(\Setting::get('shop.shop')['logo']) ? yz_tomedia(\Setting::get('shop.shop')['logo']) : 0;
$data['protocol_title'] = Protocol::uniacid()->value('title') ?: '平台用户协议';
$data['country_code'] = \Setting::get('shop.sms')['country_code']?1:0;
if (!is_null(\app\common\modules\shop\ShopConfig::current()->get('wechat_qrcode_config'))) {
$class = array_get(\app\common\modules\shop\ShopConfig::current()->get('wechat_qrcode_config'), 'class');
$function = array_get(\app\common\modules\shop\ShopConfig::current()->get('wechat_qrcode_config'), 'function');
$wechat_qrcode_config = $class::$function();
$data['wechat_qrcode_config'] = [
'is_open' => $wechat_qrcode_config['is_open'],
'is_wechat_login' => $wechat_qrcode_config['is_wechat_login'],
'callback' => $wechat_qrcode_config['callback'],
'wechat_login_type' => $wechat_qrcode_config['wechat_login_type'],
];
unset($wechat_qrcode_config);
}
return $this->successJson('ok', $data);
}
/**
* 新版登录页接口
* @return \Illuminate\Http\JsonResponse
*/
public function newLoginMode()
{
//增加验证码功能
$status = \Setting::get('shop.sms.status');
if (extension_loaded('fileinfo')) {
if ($status == 1) {
$captcha = self::captcha();
$result['captcha'] = $captcha;
$result['captcha']['status'] = $status;
} else {
$result['captcha']['status'] = $status;
}
}
$data['yun_sign'] = [];
if (app('plugins')->isEnabled('yun-sign')) {
$yun_sign = [
'login_type' => 5,
'redirect_url' => '',
'tel' => ''
];
$redirect_url = Session::get('ys_short_url_redirect_url');
$redirect_tel = intval(Session::get('ys_short_url_redirect_tel'));
if ($redirect_url && $redirect_tel) {
$yun_sign = [
'login_type' => 10,
'redirect_url' => $redirect_url,
'tel' => $redirect_tel
];
}
$data['yun_sign'] = $yun_sign;
}
$data['is_wallet_log'] = 0;
if (app('plugins')->isEnabled('love-speed-pool')) {
//钱包登录入口
$data['is_wallet_log'] = \Setting::get('plugin.love_speed_pool.is_wallet_log');
}
$data['sms'] = $result ? : [];
$shopSet = \Setting::get('shop.shop');
$registerSet = \Setting::get('shop.register');
$memberSet = \Setting::get('shop.member');
$data['get_register'] = $memberSet['get_register'] ? 1 : 0;
$data['shop_name'] = $shopSet['name']?:'商城';
$data['logo'] = $shopSet['logo'] ? yz_tomedia($shopSet['logo']) : "";
$data['title1'] = $registerSet['title1'] ? : '欢迎来到['.($shopSet['name']?:'商城').']';
$data['title2'] = $registerSet['title2'] ? : '登录尽享各种优惠权益!';
$data['login_page_mode'] = $registerSet['login_page_mode'] ? : 0;
$data['login_banner_url'] = $registerSet['login_banner'] ? yz_tomedia($registerSet['login_banner']): '';
$data['login_diy_url'] = $registerSet['login_diy_url'] ? : '';
$registerSet['login_mode'] || $registerSet['login_mode'] = [];
$data['mobile_code_login'] = !$registerSet['login_mode'] || in_array('mobile_code',$registerSet['login_mode']) ? 1 : 0;//开启手机验证码登录
$data['register_status'] = $registerSet['get_register'] == 1 ? 1 : 0;//注册状态/
$data['password_login'] = !$registerSet['login_mode'] || in_array('password',$registerSet['login_mode']) ? 1 : 0;//开启密码登录
$data['country_code'] = \Setting::get('shop.sms')['country_code']?1:0;
$agreement = RichText::get('shop.agreement');
$data['platform_agreement'] = [
'status' => $shopSet['is_agreement'] ? 1 : 0,
'title' => $shopSet['agreement_name'] ? : "平台协议",
'content' => $agreement ? : ""
];
$protocol = Protocol::uniacid()->first();
$data['register_agreement'] = [
'status' => $protocol->status ? : 0,
'title' => $protocol->title ? : "会员注册协议",
'default_tick' => $protocol->default_tick ? : 0,
'content' => $protocol->content ? : ""
];
if (!is_null(\app\common\modules\shop\ShopConfig::current()->get('wechat_qrcode_config'))) {
$class = array_get(\app\common\modules\shop\ShopConfig::current()->get('wechat_qrcode_config'), 'class');
$function = array_get(\app\common\modules\shop\ShopConfig::current()->get('wechat_qrcode_config'), 'function');
$wechat_qrcode_config = $class::$function();
$data['wechat_qrcode_config'] = [
'is_open' => $wechat_qrcode_config['is_open'],
'is_wechat_login' => $wechat_qrcode_config['is_wechat_login'],
'callback' => $wechat_qrcode_config['callback'],
'wechat_login_type' => $wechat_qrcode_config['wechat_login_type'],
];
unset($wechat_qrcode_config);
}
return $this->successJson('ok', $data);
}
//增加验证码功能
public function captcha()
{
$captcha = app('captcha');
$captcha_base64 = $captcha->create('default', true);
return $captcha_base64;
}
}