修复php think min无法在Win下压缩的BUG

修复Auth.php类在数据表前缀配置为空情况下报错的BUG
修复网页端安装程序无法写入配置的BUG
pull/25/head
Karson 2017-11-18 13:05:49 +08:00
parent 2a00751b81
commit c129974c12
4 changed files with 40 additions and 34 deletions

View File

@ -51,16 +51,17 @@ class Min extends Command
$publicPath = ROOT_PATH . 'public' . DS; $publicPath = ROOT_PATH . 'public' . DS;
$tempFile = $minPath . 'temp.js'; $tempFile = $minPath . 'temp.js';
// Winsows下请手动配置配置该值 $nodeExec = '';
$nodeExec = "";
if (!$nodeExec) if (!$nodeExec)
{ {
if (IS_WIN) if (IS_WIN)
{ {
throw new Exception("node environment not found!please check http://doc.fastadmin.net/docs/faq.html !"); // Winsows下请手动配置配置该值,一般将该值配置为 '"C:/Program Files/nodejs/node.exe"'除非你的Node安装路径有变更
$nodeExec = '"C:/Program Files/nodejs/node.exe"';
} }
else
{
try try
{ {
$nodeExec = exec("which node"); $nodeExec = exec("which node");
@ -74,6 +75,7 @@ class Min extends Command
throw new Exception($e->getMessage()); throw new Exception($e->getMessage());
} }
} }
}
foreach ($moduleArr as $mod) foreach ($moduleArr as $mod)
{ {
@ -85,8 +87,8 @@ class Min extends Command
'jsBaseUrl' => $this->options['jsBaseUrl'], 'jsBaseUrl' => $this->options['jsBaseUrl'],
'cssBaseName' => str_replace('{module}', $mod, $this->options['cssBaseName']), 'cssBaseName' => str_replace('{module}', $mod, $this->options['cssBaseName']),
'cssBaseUrl' => $this->options['cssBaseUrl'], 'cssBaseUrl' => $this->options['cssBaseUrl'],
'jsBasePath' => str_replace('/', DS, ROOT_PATH . $this->options['jsBaseUrl']), 'jsBasePath' => str_replace(DS, '/', ROOT_PATH . $this->options['jsBaseUrl']),
'cssBasePath' => str_replace('/', DS, ROOT_PATH . $this->options['cssBaseUrl']), 'cssBasePath' => str_replace(DS, '/', ROOT_PATH . $this->options['cssBaseUrl']),
'ds' => DS, 'ds' => DS,
]; ];

View File

@ -37,7 +37,6 @@ class Ajax extends Frontend
*/ */
public function upload() public function upload()
{ {
$this->checkLogin();
$file = $this->request->file('file'); $file = $this->request->file('file');
//判断是否已经存在附件 //判断是否已经存在附件

View File

@ -172,16 +172,15 @@ class Auth
{ {
return $groups[$uid]; return $groups[$uid];
} }
// 转换表名
$auth_group_access = Loader::parseName($this->config['auth_group_access'], 1);
$auth_group = Loader::parseName($this->config['auth_group'], 1);
// 执行查询 // 执行查询
$user_groups = Db::view($auth_group_access, 'uid,group_id') $user_groups = Db::name($this->config['auth_group_access'])
->view($auth_group, 'id,pid,name,rules', "{$auth_group_access}.group_id={$auth_group}.id", 'LEFT') ->alias('aga')
->where("{$auth_group_access}.uid='{$uid}' and {$auth_group}.status='normal'") ->join('__' . strtoupper($this->config['auth_group']) . '__ ag', 'aga.group_id = ag.id', 'LEFT')
->field('aga.uid,aga.group_id,ag.id,ag.pid,ag.name,ag.rules')
->where("aga.uid='{$uid}' and ag.status='normal'")
->select(); ->select();
$groups[$uid] = $user_groups ?: []; $groups[$uid] = $user_groups ?: [];
return $groups[$uid]; return $groups[$uid];
} }

View File

@ -38,7 +38,7 @@ $sitename = "FastAdmin";
$link = array( $link = array(
'qqun' => "https://jq.qq.com/?_wv=1027&k=487PNBb", 'qqun' => "https://jq.qq.com/?_wv=1027&k=487PNBb",
'osc' => 'https://git.oschina.net/karson/fastadmin/attach_files', 'gitee' => 'https://gitee.com/karson/fastadmin/attach_files',
'home' => 'http://www.fastadmin.net?ref=install', 'home' => 'http://www.fastadmin.net?ref=install',
'forum' => 'http://forum.fastadmin.net?ref=install', 'forum' => 'http://forum.fastadmin.net?ref=install',
'doc' => 'http://doc.fastadmin.net?ref=install', 'doc' => 'http://doc.fastadmin.net?ref=install',
@ -84,7 +84,7 @@ else
{ {
if (!is_dir(ROOT_PATH . $v)) if (!is_dir(ROOT_PATH . $v))
{ {
$errInfo = '请先下载完整包覆盖后再安装,<a href="' . $link['qqun'] . '" target="_blank">群共享下载</a> <a href="' . $link['osc'] . '" target="_blank">码云下载</a>'; $errInfo = '请先下载完整包覆盖后再安装,<a href="' . $link['qqun'] . '" target="_blank">群共享下载</a> <a href="' . $link['gitee'] . '" target="_blank">码云下载</a>';
break; break;
} }
} }
@ -104,6 +104,7 @@ if (!$errInfo && isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']
$mysqlUsername = isset($_POST['mysqlUsername']) ? $_POST['mysqlUsername'] : 'root'; $mysqlUsername = isset($_POST['mysqlUsername']) ? $_POST['mysqlUsername'] : 'root';
$mysqlPassword = isset($_POST['mysqlPassword']) ? $_POST['mysqlPassword'] : ''; $mysqlPassword = isset($_POST['mysqlPassword']) ? $_POST['mysqlPassword'] : '';
$mysqlDatabase = isset($_POST['mysqlDatabase']) ? $_POST['mysqlDatabase'] : 'fastadmin'; $mysqlDatabase = isset($_POST['mysqlDatabase']) ? $_POST['mysqlDatabase'] : 'fastadmin';
$mysqlPrefix = isset($_POST['mysqlPrefix']) ? $_POST['mysqlPrefix'] : 'fa_';
$adminUsername = isset($_POST['adminUsername']) ? $_POST['adminUsername'] : 'admin'; $adminUsername = isset($_POST['adminUsername']) ? $_POST['adminUsername'] : 'admin';
$adminPassword = isset($_POST['adminPassword']) ? $_POST['adminPassword'] : '123456'; $adminPassword = isset($_POST['adminPassword']) ? $_POST['adminPassword'] : '123456';
$adminPasswordConfirmation = isset($_POST['adminPasswordConfirmation']) ? $_POST['adminPasswordConfirmation'] : '123456'; $adminPasswordConfirmation = isset($_POST['adminPasswordConfirmation']) ? $_POST['adminPasswordConfirmation'] : '123456';
@ -143,6 +144,7 @@ if (!$errInfo && isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']
{ {
throw new Exception("无法读取application/admin/command/Install/fastadmin.sql文件请检查是否有读权限"); throw new Exception("无法读取application/admin/command/Install/fastadmin.sql文件请检查是否有读权限");
} }
$sql = str_replace("`fa_", "`{$mysqlPrefix}", $sql);
$pdo = new PDO("mysql:host={$mysqlHostname};port={$mysqlHostport}", $mysqlUsername, $mysqlPassword, array( $pdo = new PDO("mysql:host={$mysqlHostname};port={$mysqlHostport}", $mysqlUsername, $mysqlPassword, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
@ -155,17 +157,16 @@ if (!$errInfo && isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']
$pdo->exec($sql); $pdo->exec($sql);
$config = @file_get_contents($dbConfigFile); $config = @file_get_contents($dbConfigFile);
$callback = function($matches) use($mysqlHostname, $mysqlHostport, $mysqlUsername, $mysqlPassword, $mysqlDatabase) { $callback = function($matches) use($mysqlHostname, $mysqlHostport, $mysqlUsername, $mysqlPassword, $mysqlDatabase, $mysqlPrefix) {
$field = ucfirst($matches[1]); $field = ucfirst($matches[1]);
$replace = ${"mysql{$field}"}; $replace = ${"mysql{$field}"};
if ($matches[1] == 'hostport' && $mysqlHostport == 3306) if ($matches[1] == 'hostport' && $mysqlHostport == 3306)
{ {
$replace = ''; $replace = '';
} }
return "'{$matches[1]}'{$matches[2]}=>{$matches[3]}'{$replace}',"; return "'{$matches[1]}'{$matches[2]}=>{$matches[3]}Env::get('database.{$matches[1]}', '{$replace}'),";
}; };
$config = preg_replace_callback("/'(hostname|database|username|password|hostport)'(\s+)=>(\s+)'(.*)'\,/", $callback, $config); $config = preg_replace_callback("/'(hostname|database|username|password|hostport|prefix)'(\s+)=>(\s+)Env::get\((.*)\)\,/", $callback, $config);
//检测能否成功写入数据库配置 //检测能否成功写入数据库配置
$result = @file_put_contents($dbConfigFile, $config); $result = @file_put_contents($dbConfigFile, $config);
if (!$result) if (!$result)
@ -181,7 +182,7 @@ if (!$errInfo && isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']
} }
$newSalt = substr(md5(uniqid(true)), 0, 6); $newSalt = substr(md5(uniqid(true)), 0, 6);
$newPassword = md5(md5($adminPassword) . $newSalt); $newPassword = md5(md5($adminPassword) . $newSalt);
$pdo->query("UPDATE fa_admin SET username = '{$adminUsername}', email = '{$adminEmail}',password = '{$newPassword}', salt = '{$newSalt}' WHERE username = 'admin'"); $pdo->query("UPDATE {$mysqlPrefix}admin SET username = '{$adminUsername}', email = '{$adminEmail}',password = '{$newPassword}', salt = '{$newSalt}' WHERE username = 'admin'");
echo "success"; echo "success";
} }
catch (Exception $e) catch (Exception $e)
@ -328,7 +329,7 @@ if (!$errInfo && isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']
<div> <div>
<p>若你在安装中遇到麻烦可点击 <a href="<?php echo $link['doc']; ?>" target="_blank">安装文档</a> <a href="<?php echo $link['forum']; ?>" target="_blank">交流论坛</a> <a href="<?php echo $link['qqun']; ?>">QQ交流群</a></p> <p>若你在安装中遇到麻烦可点击 <a href="<?php echo $link['doc']; ?>" target="_blank">安装文档</a> <a href="<?php echo $link['forum']; ?>" target="_blank">交流论坛</a> <a href="<?php echo $link['qqun']; ?>">QQ交流群</a></p>
<p><?php echo $sitename; ?>还支持在命令行php think install一键安装</p> <!--<p><?php echo $sitename; ?>还支持在命令行php think install一键安装</p>-->
<form method="post"> <form method="post">
<?php if ($errInfo): ?> <?php if ($errInfo): ?>
@ -342,23 +343,28 @@ if (!$errInfo && isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']
<div class="form-group"> <div class="form-group">
<div class="form-field"> <div class="form-field">
<label>MySQL 数据库地址</label> <label>MySQL 数据库地址</label>
<input name="mysqlHost" value="localhost" required=""> <input type="text" name="mysqlHost" value="localhost" required="">
</div> </div>
<div class="form-field"> <div class="form-field">
<label>MySQL 数据库名</label> <label>MySQL 数据库名</label>
<input name="mysqlDatabase" value="fastadmin" required=""> <input type="text" name="mysqlDatabase" value="fastadmin" required="">
</div> </div>
<div class="form-field"> <div class="form-field">
<label>MySQL 用户名</label> <label>MySQL 用户名</label>
<input name="mysqlUsername" value="root" required=""> <input type="text" name="mysqlUsername" value="root" required="">
</div> </div>
<div class="form-field"> <div class="form-field">
<label>MySQL 密码</label> <label>MySQL 密码</label>
<input type="password" name="mysqlPassword"> <input type="password" name="mysqlPassword">
</div> </div>
<div class="form-field">
<label>MySQL 数据表前缀</label>
<input type="text" name="mysqlPrefix" value="fa_">
</div>
</div> </div>
<div class="form-group"> <div class="form-group">