131 lines
3.9 KiB
PHP
131 lines
3.9 KiB
PHP
|
<?php
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Author: CRMEB Team <admin@crmeb.com>
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
namespace app\adminapi\controller;
|
|||
|
|
|||
|
use crmeb\services\CacheService;
|
|||
|
use think\facade\App;
|
|||
|
use crmeb\utils\Captcha;
|
|||
|
use app\services\system\admin\SystemAdminServices;
|
|||
|
|
|||
|
/**
|
|||
|
* 后台登陆
|
|||
|
* Class Login
|
|||
|
* @package app\adminapi\controller
|
|||
|
*/
|
|||
|
class Login extends AuthController
|
|||
|
{
|
|||
|
|
|||
|
/**
|
|||
|
* Login constructor.
|
|||
|
* @param App $app
|
|||
|
* @param SystemAdminServices $services
|
|||
|
*/
|
|||
|
public function __construct(App $app, SystemAdminServices $services)
|
|||
|
{
|
|||
|
parent::__construct($app);// 调用父类构造函数
|
|||
|
$this->services = $services;// 实例化系统管理员服务类
|
|||
|
}
|
|||
|
|
|||
|
protected function initialize()
|
|||
|
{
|
|||
|
// TODO: Implement initialize() method.
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 验证码
|
|||
|
* @return $this|\think\Response
|
|||
|
*/
|
|||
|
public function captcha()
|
|||
|
{
|
|||
|
return app()->make(Captcha::class)->create();// 生成验证码
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @return mixed
|
|||
|
*/
|
|||
|
public function ajcaptcha()
|
|||
|
{
|
|||
|
$captchaType = $this->request->get('captchaType');// 验证码类型
|
|||
|
return app('json')->success(aj_captcha_create($captchaType));// 生成验证码
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 一次验证
|
|||
|
* @return mixed
|
|||
|
*/
|
|||
|
public function ajcheck()
|
|||
|
{
|
|||
|
[$token, $pointJson, $captchaType] = $this->request->postMore([
|
|||
|
['token', ''],
|
|||
|
['pointJson', ''],
|
|||
|
['captchaType', ''],
|
|||
|
], true);
|
|||
|
try {
|
|||
|
aj_captcha_check_one($captchaType, $token, $pointJson);// 验证验证码
|
|||
|
return app('json')->success();
|
|||
|
} catch (\Throwable $e) {
|
|||
|
return app('json')->fail(400336);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 登陆
|
|||
|
* @return mixed
|
|||
|
* @throws \think\db\exception\DataNotFoundException
|
|||
|
* @throws \think\db\exception\DbException
|
|||
|
* @throws \think\db\exception\ModelNotFoundException
|
|||
|
*/
|
|||
|
public function login()
|
|||
|
{
|
|||
|
[$account, $password, $key, $captchaVerification, $captchaType] = $this->request->postMore([
|
|||
|
'account',
|
|||
|
'pwd',
|
|||
|
['key', ''],
|
|||
|
['captchaVerification', ''],
|
|||
|
['captchaType', '']
|
|||
|
], true);
|
|||
|
|
|||
|
if ($captchaVerification != '') {
|
|||
|
try {
|
|||
|
aj_captcha_check_two($captchaType, $captchaVerification);
|
|||
|
} catch (\Throwable $e) {
|
|||
|
return app('json')->fail(400336);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (strlen(trim($password)) < 6 || strlen(trim($password)) > 32) {
|
|||
|
return app('json')->fail(400762);
|
|||
|
}
|
|||
|
|
|||
|
$this->validate(['account' => $account, 'pwd' => $password], \app\adminapi\validate\setting\SystemAdminValidata::class, 'get');
|
|||
|
$result = $this->services->login($account, $password, 'admin', $key);
|
|||
|
if (!$result) {
|
|||
|
$num = CacheService::get('login_captcha', 1);
|
|||
|
if ($num > 1) {
|
|||
|
return app('json')->fail(400140, ['login_captcha' => 1]);
|
|||
|
}
|
|||
|
CacheService::set('login_captcha', $num + 1, 60);
|
|||
|
return app('json')->fail(400140, ['login_captcha' => 0]);
|
|||
|
}
|
|||
|
CacheService::delete('login_captcha');
|
|||
|
return app('json')->success($result);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取后台登录页轮播图以及LOGO
|
|||
|
* @return mixed
|
|||
|
*/
|
|||
|
public function info()
|
|||
|
{
|
|||
|
return app('json')->success($this->services->getLoginInfo());
|
|||
|
}
|
|||
|
}
|