Files
shop-platform/src/app/platform/controller/Login.php

200 lines
6.0 KiB
PHP

<?php
namespace app\platform\controller;
use app\Controller;
use app\model\system\Site;
use app\model\system\User as UserModel;
use app\model\web\Config as ConfigModel;
use extend\QRcode as QRcodeExtend;
use think\App;
use think\captcha\facade\Captcha as ThinkCaptcha;
use think\facade\Cache;
use app\model\platform\Platform as platformModel;
/**
* 登录
* Class Login
* @package app\shop\controller
*/
class Login extends Controller
{
protected $app_module = "platform";
/**
* 模板布局
* @var string|bool
*/
protected $layout = 'layout/base';
public function __construct(App $app = null)
{
parent::__construct();
$this->app = $app;
//检测基础登录
$this->platformId = request()->platformId();
if (empty($this->platformId)) {
$this->platformId = input('platformid', 0);
request()->platformId($this->platformId);
}
// 设置模版布局
$this->app->view->engine()->layout($this->layout);
}
/**
* 登录首页
* @return mixed
*/
public function login()
{
// $config_model = new ConfigModel();
// $config_info = $config_model->getCaptchaConfig();
// $config = $config_info[ 'data' ][ 'value' ];
$platform_model = new platformModel();
if (request()->isAjax()) {
$username = input("username", '');
$password = input("password", '');
// if ($shop_login == 1) {
// $captcha_result = $this->checkCaptcha();
// //验证码
// if ($captcha_result[ "code" ] != 0) {
// return $captcha_result;
// }
// }
$result = $platform_model->login($username, $password, $this->app_module);
return $result;
} else {
// //平台配置信息
$platform_info = $platform_model->getWebSite([ [ 'platformid', '=', 0 ] ], '*');
$this->assign('platform_info', $platform_info[ 'data' ]);
// // 验证码
$captcha = $this->captcha();
$captcha = $captcha[ 'data' ];
$this->assign("captcha", $captcha);
return $this->fetch("login/login");
}
}
/**
* 退出操作
*/
public function logout()
{
$platform_model = new platformModel();
$uid = $platform_model->uid($this->app_module);
if ($uid > 0) {
//清除登录信息session
$platform_model->clearLogin($this->app_module);
$this->redirect(url("platform/login/login"));
} else {
$this->redirect(url("platform/login/login"));
}
}
/**
* 验证码
*/
public function captcha()
{
$captcha_data = ThinkCaptcha::create(null, true);
$captcha_id = md5(uniqid(null, true));
// 验证码10分钟有效
Cache::set($captcha_id, $captcha_data[ 'code' ], 600);
return success(0, '', [ 'id' => $captcha_id, 'img' => $captcha_data[ 'img' ] ]);
}
/**
* 验证码验证
*/
public function checkCaptcha()
{
$captcha = input('captcha', '');
$captcha_id = input('captcha_id', '');
if (empty($captcha)) return error(-1, '请输入验证码');
$captcha_data = Cache::pull($captcha_id);
if (empty($captcha_data)) return error('', '验证码已失效');
if ($captcha != $captcha_data) return error(-1, '验证码错误');
return success();
}
/**
* 用户注册
*/
public function register()
{
$config_model = new ConfigModel();
$config_info = $config_model->getCaptchaConfig();
$config = $config_info[ 'data' ][ 'value' ];
$this->assign('shop_login', $config[ 'shop_login' ]);
if (request()->isAjax()) {
$data[ 'username' ] = trim(input("username", ''));//账户
$data[ 'password' ] = trim(input("password", ''));//密码
if ($config[ "shop_login" ] == 1) {
$captcha_result = $this->checkCaptcha();
//验证码
if ($captcha_result[ "code" ] != 0) {
return $captcha_result;
}
}
$user_model = new UserModel();
$data[ 'app_module' ] = $this->app_module;
$data[ 'site_id' ] = 0;
$data[ 'is_admin' ] = 1;
$result = $user_model->addUser($data);
if ($result[ 'code' ] == 0) {
$user_model->login($data[ 'username' ], $data[ 'password' ], $this->app_module);
if ($result[ 'data' ] == 2) {
return success('0', '帐户已注册,登录成功');
} else {
return success('0', '帐户注册成功');
}
} else {
return $result;
}
}
$this->assign("menu_info", [ 'title' => "注册" ]);
$this->assign("shop_info", [ 'site_name' => "店铺端" ]);
//平台配置信息
$website_model = new WebsiteModel();
$website_info = $website_model->getWebSite([ [ 'site_id', '=', 0 ] ], 'web_phone,web_email,web_qrcode,web_qq,web_weixin,logo');
$this->assign('website_info', $website_info[ 'data' ]);
$this->assign("menu_info", [ 'title' => "账号申请" ]);
$this->assign("shop_info", [ 'site_name' => "店铺端" ]);
// 验证码
$captcha = $this->captcha();
$captcha = $captcha[ 'data' ];
$this->assign("captcha", $captcha);
return $this->fetch("login/register");
}
/**
* 修改密码
* */
public function modifyPassword()
{
if (request()->isAjax()) {
$user_model = new UserModel();
$uid = 2;
$old_pass = input('old_pass', '');
$new_pass = input('new_pass', '123456');
$res = $user_model->modifyAdminUserPassword(['uid'=>$uid,'app_module'=>'platform'], $new_pass);
return $res;
}
}
}