作者 Karson

新增命令行插件管理的uid和token参数

修复后台更新内容过长导致无法操作的BUG
修复后台插件管理查看插件信息错误的BUG
修复注册时验证码判断错误的BUG
移除User.php控制器中的third方法
... ... @@ -24,6 +24,8 @@ class Addon extends Command
->addOption('action', 'c', Option::VALUE_REQUIRED, 'action(create/enable/disable/install/uninstall/refresh/upgrade/package)', 'create')
->addOption('force', 'f', Option::VALUE_OPTIONAL, 'force override', null)
->addOption('release', 'r', Option::VALUE_OPTIONAL, 'addon release version', null)
->addOption('uid', 'u', Option::VALUE_OPTIONAL, 'fastadmin uid', null)
->addOption('token', 't', Option::VALUE_OPTIONAL, 'fastadmin token', null)
->setDescription('Addon manager');
}
... ... @@ -35,6 +37,10 @@ class Addon extends Command
$force = $input->getOption('force');
//版本
$release = $input->getOption('release') ?: '';
//uid
$uid = $input->getOption('uid') ?: '';
//token
$token = $input->getOption('token') ?: '';
include dirname(__DIR__) . DS . 'common.php';
... ... @@ -80,7 +86,7 @@ class Addon extends Command
}
catch (PDOException $e)
{
}
$data = [
... ... @@ -171,7 +177,7 @@ class Addon extends Command
{
throw new Exception("Operation is aborted!");
}
Service::install($name, 1, ['version' => $release]);
Service::install($name, 1, ['version' => $release, 'uid' => $uid, 'token' => $token]);
}
catch (Exception $e)
{
... ... @@ -222,7 +228,7 @@ class Addon extends Command
$output->info("Refresh Successed!");
break;
case 'upgrade':
Service::upgrade($name, ['version' => $release]);
Service::upgrade($name, ['version' => $release, 'uid' => $uid, 'token' => $token]);
$output->info("Upgrade Successed!");
break;
case 'package':
... ...
... ... @@ -212,8 +212,8 @@
<span class="fa fa-caret-down"></span>
</a>
<ul class="dropdown-menu">
<% for(var i=0;i< item.releaselist.length;i++){ %>
<li><a href="javascript:;" class="btn-install" data-type="<%=item.price<=0?'free':'price';%>" data-donateimage="<%=item.donateimage%>" data-version="<%=item.releaselist[i].version%>"><%=item.releaselist[i].version%></a></li>
<% for(var j=0;j< item.releaselist.length;j++){ %>
<li><a href="javascript:;" class="btn-install" data-type="<%=item.price<=0?'free':'price';%>" data-donateimage="<%=item.donateimage%>" data-version="<%=item.releaselist[j].version%>"><%=item.releaselist[j].version%></a></li>
<% } %>
</ul>
</span>
... ... @@ -244,8 +244,8 @@
<span class="fa fa-caret-down"></span>
</a>
<ul class="dropdown-menu">
<% for(var i=0;i< item.releaselist.length;i++){ %>
<li><a href="javascript:;" class="btn-upgrade" data-version="<%=item.releaselist[i].version%>"><%=item.releaselist[i].version%></a></li>
<% for(var j=0;j< item.releaselist.length;j++){ %>
<li><a href="javascript:;" class="btn-upgrade" data-version="<%=item.releaselist[j].version%>"><%=item.releaselist[j].version%></a></li>
<% } %>
</ul>
</span>
... ...
... ... @@ -128,7 +128,7 @@ class Auth
* @param string $password 密码
* @param string $email 邮箱
* @param string $mobile 手机号
* @param string $extend 扩展参数
* @param array $extend 扩展参数
* @return boolean
*/
public function register($username, $password, $email = '', $mobile = '', $extend = [])
... ... @@ -224,7 +224,7 @@ class Auth
*
* @param string $account 账号,用户名、邮箱、手机号
* @param string $password 密码
* @return array
* @return boolean
*/
public function login($account, $password)
{
... ... @@ -256,7 +256,7 @@ class Auth
/**
* 注销
*
* @return bool
* @return boolean
*/
public function logout()
{
... ... @@ -476,6 +476,7 @@ class Auth
/**
* 删除一个指定会员
* @param int $user_id 会员ID
* @return boolean
*/
public function delete($user_id)
{
... ... @@ -528,6 +529,7 @@ class Auth
* 检测当前控制器和方法是否匹配传递的数组
*
* @param array $arr 需要验证权限的数组
* @return boolean
*/
public function match($arr = [])
{
... ... @@ -600,6 +602,7 @@ class Auth
* 设置错误信息
*
* @param $error 错误信息
* @return Auth
*/
public function setError($error)
{
... ...
... ... @@ -204,57 +204,6 @@ class User extends Frontend
}
/**
* 第三方登录跳转和回调处理
*/
public function third()
{
$url = url('user/index');
$action = $this->request->param('action');
$platform = $this->request->param('platform');
$config = get_addon_config('third');
if (!$config || !isset($config[$platform]))
{
$this->error(__('Invalid parameters'));
}
foreach ($config as $k => &$v)
{
$v['callback'] = url('user/third', ['action' => 'callback', 'platform' => $k], false, true);
}
unset($v);
$app = new \addons\third\library\Application($config);
if ($action == 'redirect')
{
// 跳转到登录授权页面
$this->redirect($app->{$platform}->getAuthorizeUrl());
}
else if ($action == 'callback')
{
// 授权成功后的回调
$result = $app->{$platform}->getUserInfo();
if ($result)
{
$loginret = \addons\third\library\Service::connect($platform, $result);
if ($loginret)
{
$synchtml = '';
////////////////同步到Ucenter////////////////
if (defined('UC_STATUS') && UC_STATUS)
{
$uc = new \addons\ucenter\library\client\Client();
$synchtml = $uc->uc_user_synlogin($this->auth->id);
}
$this->success(__('Logged in successful') . $synchtml, $url);
}
}
$this->error(__('Operation failed'), $url);
}
else
{
$this->error(__('Invalid parameters'));
}
}
/**
* 个人信息
*/
public function profile()
... ...
... ... @@ -36,7 +36,7 @@
<label class="control-label">{:__('Captcha')}</label>
<div class="controls">
<div class="input-group input-group-lg">
<input type="text" name="captcha" class="form-control" placeholder="{:__('Captcha')}" data-rule="required;length(4);integer[+]" style="border-radius: 0;" />
<input type="text" name="captcha" class="form-control" placeholder="{:__('Captcha')}" data-rule="required;length(4)" style="border-radius: 0;" />
<span class="input-group-addon" style="padding:0;border:none;">
<img src="{:captcha_src()}" width="140" height="42" onclick="this.src = '{:captcha_src()}?r=' + Math.random();"/>
</span>
... ...
... ... @@ -90,7 +90,7 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'adminlte', 'form'], functi
if (ret.data && ignoreversion !== ret.data.newversion) {
Layer.open({
title: '发现新版本',
area: ["500px", "auto"],
maxHeight: 400,
content: '<h5 style="background-color:#f7f7f7; font-size:14px; padding: 10px;">你的版本是:' + ret.data.version + ',新版本:' + ret.data.newversion + '</h5><span class="label label-danger">更新说明</span><br/>' + ret.data.upgradetext,
btn: ['去下载更新', '忽略此次更新', '不再提示'],
btn2: function (index, layero) {
... ...