mirror of
https://gitee.com/apiadmin/ApiAdmin.git
synced 2025-04-06 03:58:00 +08:00
modified 全项目调整,适配安装脚本,完成安装脚本的数据初始化和配置初始化
This commit is contained in:
parent
c0191452f1
commit
583e4490bb
@ -19,7 +19,7 @@
|
||||
|
||||
**项目构成**
|
||||
|
||||
- ThinkPHP V5
|
||||
- ThinkPHP v5.0.2
|
||||
- AdminLTE v2.3.7
|
||||
- fastClick
|
||||
- jQuery v3.1.1
|
||||
@ -32,6 +32,7 @@
|
||||
|
||||
1. 拥有高可用的菜单系统。
|
||||
2. 拥有强大的权限管理系统。
|
||||
2. 页面实现纯JS加载。
|
||||
3. 拥有易懂的项目使用手册。(未完成)
|
||||
4. 拥有优雅的项目对接机制。(未完成)
|
||||
5. 拥有漂亮的接口文档自动生成机制。(未完成)
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?php
|
||||
//配置文件
|
||||
return [
|
||||
'auth_key' => 'mbvUenPqbpxT5WTAXXkFVPHF})0AOGfsMIN01XLu52SgS<R]DQDfj6TlThl897Qd',
|
||||
'online_time' => 3600
|
||||
];
|
@ -18,8 +18,8 @@ class User extends Model {
|
||||
return $this->getPwdHash($value);
|
||||
}
|
||||
|
||||
public function getPwdHash( $pwd ){
|
||||
$hashKey = config('auth_key');
|
||||
public function getPwdHash( $pwd, $authKey = '' ){
|
||||
$hashKey = empty($authKey)?config('base')['auth_key']:$authKey;
|
||||
$newPwd = $pwd.$hashKey;
|
||||
return md5(sha1($newPwd).$hashKey);
|
||||
}
|
||||
|
@ -15,25 +15,26 @@
|
||||
* @return bool
|
||||
*/
|
||||
function isAdministrator( $uid = '' ){
|
||||
$adminConf = config('base')['USER_ADMINISTRATOR'];
|
||||
$uid = empty($uid) ? session('uid') : $uid;
|
||||
if( is_array(config('USER_ADMINISTRATOR')) ){
|
||||
if( is_array($adminConf) ){
|
||||
if( is_array( $uid ) ){
|
||||
$m = array_intersect( config('USER_ADMINISTRATOR'), $uid );
|
||||
$m = array_intersect( $adminConf, $uid );
|
||||
if( count($m) ){
|
||||
return TRUE;
|
||||
}
|
||||
}else{
|
||||
if( in_array( $uid, config('USER_ADMINISTRATOR') ) ){
|
||||
if( in_array( $uid, $adminConf ) ){
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if( is_array( $uid ) ){
|
||||
if( in_array(config('USER_ADMINISTRATOR'),$uid) ){
|
||||
if( in_array($adminConf,$uid) ){
|
||||
return TRUE;
|
||||
}
|
||||
}else{
|
||||
if( $uid == config('USER_ADMINISTRATOR')){
|
||||
if( $uid == $adminConf){
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -15,127 +15,11 @@ return [
|
||||
'WEBSITE_DOMAIN' => 'http://zxblog.our-dream.cn', //官方网址
|
||||
'COMPANY_NAME' => 'ApiAdmin开发维护团队', //公司名称
|
||||
'SQL_PRIMARY_KEY' => 'id',
|
||||
'USER_ADMINISTRATOR' => 4,
|
||||
|
||||
// +----------------------------------------------------------------------
|
||||
// | 应用设置
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
// 应用命名空间
|
||||
'app_namespace' => 'app',
|
||||
// 应用调试模式
|
||||
'app_debug' => true,
|
||||
// 应用Trace
|
||||
'app_trace' => false,
|
||||
// 应用模式状态
|
||||
'app_status' => '',
|
||||
// 是否支持多模块
|
||||
'app_multi_module' => true,
|
||||
// 入口自动绑定模块
|
||||
'auto_bind_module' => false,
|
||||
// 注册的根命名空间
|
||||
'root_namespace' => [],
|
||||
// 扩展函数文件
|
||||
'extra_file_list' => [THINK_PATH . 'helper' . EXT],
|
||||
// 默认输出类型
|
||||
'default_return_type' => 'html',
|
||||
// 默认AJAX 数据返回格式,可选json xml ...
|
||||
'default_ajax_return' => 'json',
|
||||
// 默认JSONP格式返回的处理方法
|
||||
'default_jsonp_handler' => 'jsonpReturn',
|
||||
// 默认JSONP处理方法
|
||||
'var_jsonp_handler' => 'callback',
|
||||
// 默认时区
|
||||
'default_timezone' => 'PRC',
|
||||
// 是否开启多语言
|
||||
'lang_switch_on' => false,
|
||||
// 默认全局过滤方法 用逗号分隔多个
|
||||
'default_filter' => '',
|
||||
// 默认语言
|
||||
'default_lang' => 'zh-cn',
|
||||
// 应用类库后缀
|
||||
'class_suffix' => false,
|
||||
// 控制器类后缀
|
||||
'controller_suffix' => false,
|
||||
|
||||
// +----------------------------------------------------------------------
|
||||
// | 模块设置
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
// 默认模块名
|
||||
'default_module' => 'index',
|
||||
// 禁止访问模块
|
||||
'deny_module_list' => ['common'],
|
||||
// 默认控制器名
|
||||
'default_controller' => 'Index',
|
||||
// 默认操作名
|
||||
'default_action' => 'index',
|
||||
// 默认验证器
|
||||
'default_validate' => '',
|
||||
// 默认的空控制器名
|
||||
'empty_controller' => 'Error',
|
||||
// 操作方法后缀
|
||||
'action_suffix' => '',
|
||||
// 自动搜索控制器
|
||||
'controller_auto_search' => false,
|
||||
|
||||
// +----------------------------------------------------------------------
|
||||
// | URL设置
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
// PATHINFO变量名 用于兼容模式
|
||||
'var_pathinfo' => 's',
|
||||
// 兼容PATH_INFO获取
|
||||
'pathinfo_fetch' => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL'],
|
||||
// pathinfo分隔符
|
||||
'pathinfo_depr' => '/',
|
||||
// URL伪静态后缀
|
||||
'url_html_suffix' => 'html',
|
||||
// URL普通方式参数 用于自动生成
|
||||
'url_common_param' => false,
|
||||
// URL参数方式 0 按名称成对解析 1 按顺序解析
|
||||
'url_param_type' => 0,
|
||||
// 是否开启路由
|
||||
'url_route_on' => true,
|
||||
// 路由使用完整匹配
|
||||
'route_complete_match' => false,
|
||||
// 路由配置文件(支持配置多个)
|
||||
'route_config_file' => ['route'],
|
||||
// 是否强制使用路由
|
||||
'url_route_must' => false,
|
||||
// 域名部署
|
||||
'url_domain_deploy' => false,
|
||||
// 域名根,如thinkphp.cn
|
||||
'url_domain_root' => '',
|
||||
// 是否自动转换URL中的控制器和操作名
|
||||
'url_convert' => true,
|
||||
// 默认的访问控制器层
|
||||
'url_controller_layer' => 'controller',
|
||||
// 表单请求类型伪装变量
|
||||
'var_method' => '_method',
|
||||
|
||||
// +----------------------------------------------------------------------
|
||||
// | 模板设置
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
'template' => [
|
||||
// 模板引擎类型 支持 php think 支持扩展
|
||||
'type' => 'Think',
|
||||
// 模板路径
|
||||
'view_path' => '',
|
||||
// 模板后缀
|
||||
'view_suffix' => 'html',
|
||||
// 模板文件名分隔符
|
||||
'view_depr' => DS,
|
||||
// 模板引擎普通标签开始标记
|
||||
'tpl_begin' => '{',
|
||||
// 模板引擎普通标签结束标记
|
||||
'tpl_end' => '}',
|
||||
// 标签库标签开始标记
|
||||
'taglib_begin' => '{',
|
||||
// 标签库标签结束标记
|
||||
'taglib_end' => '}',
|
||||
],
|
||||
|
||||
// 视图输出字符串内容替换
|
||||
'view_replace_str' => [
|
||||
@ -148,97 +32,4 @@ return [
|
||||
// 默认跳转页面对应的模板文件
|
||||
'dispatch_success_tmpl' => 'public/jump',
|
||||
'dispatch_error_tmpl' => 'public/jump',
|
||||
|
||||
// +----------------------------------------------------------------------
|
||||
// | 异常及错误设置
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
// 异常页面的模板文件
|
||||
'exception_tmpl' => THINK_PATH . 'tpl' . DS . 'think_exception.tpl',
|
||||
|
||||
// 错误显示信息,非调试模式有效
|
||||
'error_message' => '页面错误!请稍后再试~',
|
||||
// 显示错误信息
|
||||
'show_error_msg' => false,
|
||||
// 异常处理handle类 留空使用 \think\exception\Handle
|
||||
'exception_handle' => '',
|
||||
|
||||
// +----------------------------------------------------------------------
|
||||
// | 日志设置
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
'log' => [
|
||||
// 日志记录方式,内置 file socket 支持扩展
|
||||
'type' => 'File',
|
||||
// 日志保存目录
|
||||
'path' => LOG_PATH,
|
||||
// 日志记录级别
|
||||
'level' => [],
|
||||
],
|
||||
|
||||
// +----------------------------------------------------------------------
|
||||
// | Trace设置 开启 app_trace 后 有效
|
||||
// +----------------------------------------------------------------------
|
||||
'trace' => [
|
||||
// 内置Html Console 支持扩展
|
||||
'type' => 'Html',
|
||||
],
|
||||
|
||||
// +----------------------------------------------------------------------
|
||||
// | 缓存设置
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
'cache' => [
|
||||
// 驱动方式
|
||||
'type' => 'File',
|
||||
// 缓存保存目录
|
||||
'path' => CACHE_PATH,
|
||||
// 缓存前缀
|
||||
'prefix' => '',
|
||||
// 缓存有效期 0表示永久缓存
|
||||
'expire' => 0,
|
||||
],
|
||||
|
||||
// +----------------------------------------------------------------------
|
||||
// | 会话设置
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
'session' => [
|
||||
'id' => '',
|
||||
// SESSION_ID的提交变量,解决flash上传跨域
|
||||
'var_session_id' => '',
|
||||
// SESSION 前缀
|
||||
'prefix' => 'think',
|
||||
// 驱动方式 支持redis memcache memcached
|
||||
'type' => '',
|
||||
// 是否自动开启 SESSION
|
||||
'auto_start' => true,
|
||||
],
|
||||
|
||||
// +----------------------------------------------------------------------
|
||||
// | Cookie设置
|
||||
// +----------------------------------------------------------------------
|
||||
'cookie' => [
|
||||
// cookie 名称前缀
|
||||
'prefix' => '',
|
||||
// cookie 保存时间
|
||||
'expire' => 0,
|
||||
// cookie 保存路径
|
||||
'path' => '/',
|
||||
// cookie 有效域名
|
||||
'domain' => '',
|
||||
// cookie 启用安全传输
|
||||
'secure' => false,
|
||||
// httponly设置
|
||||
'httponly' => '',
|
||||
// 是否使用 setcookie
|
||||
'setcookie' => true,
|
||||
],
|
||||
|
||||
//分页配置
|
||||
'paginate' => [
|
||||
'type' => 'bootstrap',
|
||||
'var_page' => 'page',
|
||||
'list_rows' => 15,
|
||||
],
|
||||
];
|
||||
|
@ -1,51 +0,0 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
return [
|
||||
// 数据库类型
|
||||
'type' => 'mysql',
|
||||
// 服务器地址
|
||||
'hostname' => '127.0.0.1',
|
||||
// 数据库名
|
||||
'database' => 'admin',
|
||||
// 用户名
|
||||
'username' => 'root',
|
||||
// 密码
|
||||
'password' => '123456',
|
||||
// 端口
|
||||
'hostport' => '',
|
||||
// 连接dsn
|
||||
'dsn' => '',
|
||||
// 数据库连接参数
|
||||
'params' => [],
|
||||
// 数据库编码默认采用utf8
|
||||
'charset' => 'utf8',
|
||||
// 数据库表前缀
|
||||
'prefix' => '',
|
||||
// 数据库调试模式
|
||||
'debug' => true,
|
||||
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
|
||||
'deploy' => 0,
|
||||
// 数据库读写是否分离 主从式有效
|
||||
'rw_separate' => false,
|
||||
// 读写分离后 主服务器数量
|
||||
'master_num' => 1,
|
||||
// 指定从服务器序号
|
||||
'slave_no' => '',
|
||||
// 是否严格检查字段是否存在
|
||||
'fields_strict' => true,
|
||||
// 数据集返回类型 array 数组 collection Collection对象
|
||||
'resultset_type' => 'array',
|
||||
// 是否自动写入时间戳字段
|
||||
'auto_timestamp' => false,
|
||||
// 是否需要进行SQL性能分析
|
||||
'sql_explain' => false,
|
||||
];
|
0
application/extra/index.html
Normal file
0
application/extra/index.html
Normal file
@ -66,17 +66,23 @@ function checkEnv(){
|
||||
*/
|
||||
function checkDirFile(){
|
||||
$items = [
|
||||
'0' => [
|
||||
[
|
||||
'type' => 'file',
|
||||
'path' => ROOT_PATH . 'application/database.php',
|
||||
'path' => APP_PATH . 'database.php',
|
||||
'title' => '可写',
|
||||
'icon' => 'fa fa-check text-success',
|
||||
],
|
||||
'2' => [
|
||||
[
|
||||
'type' => 'dir',
|
||||
'path' => RUNTIME_PATH,
|
||||
'title' => '可写',
|
||||
'icon' => 'fa fa-check text-success',
|
||||
],
|
||||
[
|
||||
'type' => 'dir',
|
||||
'path' => APP_PATH . 'extra' . DS,
|
||||
'title' => '可写',
|
||||
'icon' => 'fa fa-check text-success',
|
||||
]
|
||||
];
|
||||
|
||||
@ -289,39 +295,13 @@ function baseCheck($items){
|
||||
return $items;
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入配置文件
|
||||
* @param $config
|
||||
* @param $type string 配置类型
|
||||
* @return bool
|
||||
*/
|
||||
function write_config($config, $type){
|
||||
if(is_array($config)){
|
||||
show_msg('开始写入'.$type.'配置文件');
|
||||
//读取配置内容
|
||||
$conf = file_get_contents(MODULE_PATH . 'Data/'.$type.'.tpl');
|
||||
//替换配置项
|
||||
foreach ($config as $name => $value) {
|
||||
$conf = str_replace("[{$name}]", $value, $conf);
|
||||
}
|
||||
//写入应用配置文件
|
||||
if(file_put_contents(APP_PATH . 'Common/Conf/'.$type.'.php', $conf)){
|
||||
show_msg('配置文件'.$type.'写入成功', 'bg-success');
|
||||
}else{
|
||||
show_msg('配置文件'.$type.'写入失败!', 'bg-danger');
|
||||
session('error', true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $msg
|
||||
* @param string $class
|
||||
*/
|
||||
function show_msg($msg, $class = ''){
|
||||
function showMsg($msg, $class = ''){
|
||||
usleep(20000);
|
||||
echo "<script type=\"text/javascript\">showmsg(\"{$msg}\", \"{$class}\")</script>";
|
||||
echo "<script type=\"text/javascript\">showMsg(\"{$msg}\", \"{$class}\")</script>";
|
||||
ob_flush();
|
||||
flush();
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
<?php
|
||||
namespace app\install\controller;
|
||||
|
||||
use app\admin\model\User;
|
||||
use think\Controller;
|
||||
use think\Db;
|
||||
|
||||
class Index extends Controller {
|
||||
public function index(){
|
||||
@ -96,36 +96,111 @@ class Index extends Controller {
|
||||
$this->error('环境检测没有通过,请调整环境后重试!', url('step3'));
|
||||
}else{
|
||||
$step = session('step');
|
||||
if( $step != 3){
|
||||
$this->error("请按顺序安装", url('index'));
|
||||
}else{
|
||||
// if( $step != 3){
|
||||
// $this->error("请按顺序安装", url('index'));
|
||||
// }else{
|
||||
session('step', 4);
|
||||
session('error', false);
|
||||
$dbConfig = session('dbConfig');
|
||||
$cacheConfig = session('cacheConfig');
|
||||
$adminConfig = session('adminConfig');
|
||||
//暂不生效
|
||||
$isCover = session('isCover');
|
||||
$extraConfPath = APP_PATH.'extra'.DS;
|
||||
|
||||
//检测数据库连接
|
||||
//生成加密秘钥
|
||||
$addChars = '`~!@#$%^&*()_+-=[]{};:"|,.<>/?';
|
||||
$baseConfig['AUTH_KEY'] = $auth = \StrOrg::randString(64, '', $addChars);
|
||||
//处理管理员密码
|
||||
$adminPass = (new User())->getPwdHash($adminConfig['pass'], $auth);
|
||||
$regIp = $this->request->ip(1);
|
||||
//检测数据库连接,并且初始化数据
|
||||
if( $dbConfig['DB_TYPE'] == 0 ){
|
||||
$dbConfig['DB_TYPE'] = 'mysql';
|
||||
$dsn = "mysql:dbname={$dbConfig['DB_NAME']};host={$dbConfig['DB_HOST']};port={$dbConfig['DB_PORT']}";
|
||||
try {
|
||||
new \PDO($dsn, $dbConfig['DB_USER'], $dbConfig['DB_PWD']);
|
||||
$db = new \PDO($dsn, $dbConfig['DB_USER'], $dbConfig['DB_PWD']);
|
||||
} catch (\PDOException $e) {
|
||||
$this->error($e->getMessage(), url('step2'));
|
||||
}
|
||||
$this->writeConfig($dbConfig, 'database', APP_PATH);
|
||||
$this->executeSQL($db, $dbConfig['DB_PREFIX']);
|
||||
$adminSql = "INSERT INTO `{$dbConfig['DB_PREFIX']}user` (`username`, `nickname`, `password`, `regTime`, `regIp`, `status`) ".
|
||||
"VALUES ('{$adminConfig['name']}','系统管理员','{$adminPass}',".time().",{$regIp},1);";
|
||||
$db->exec($adminSql);
|
||||
$baseConfig['ADMIN_ID'] = $db->lastInsertId();
|
||||
}
|
||||
//检测Redis链接状态
|
||||
//检测Redis链接状态,并且初始化配置
|
||||
if( $cacheConfig['type'] == 1 ){
|
||||
try {
|
||||
(new \Redis())->connect($cacheConfig['ip'],$cacheConfig['port']);
|
||||
} catch (\RedisException $e) {
|
||||
$this->error($e->getMessage(), url('step2'));
|
||||
}
|
||||
$this->writeConfig($cacheConfig, 'cache', $extraConfPath);
|
||||
}
|
||||
|
||||
$this->writeConfig($baseConfig, 'base', $extraConfPath);
|
||||
return $this->fetch();
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入配置文件
|
||||
* @param $config
|
||||
* @param $type string 配置类型
|
||||
* @param $path string 配置文件存储路径
|
||||
* @return bool
|
||||
*/
|
||||
private function writeConfig($config, $type, $path){
|
||||
if(is_array($config)){
|
||||
showMsg('开始写入'.$type.'配置文件');
|
||||
//读取配置内容
|
||||
$conf = file_get_contents(APP_PATH . $this->request->module(). DS . 'data'. DS .$type.'.tpl');
|
||||
//替换配置项
|
||||
foreach ($config as $name => $value) {
|
||||
$conf = str_replace("[{$name}]", $value, $conf);
|
||||
}
|
||||
//写入应用配置文件
|
||||
if(file_put_contents($path.$type.'.php', $conf)){
|
||||
showMsg('配置文件'.$type.'写入成功', 'bg-success');
|
||||
}else{
|
||||
showMsg('配置文件'.$type.'写入失败!', 'bg-danger');
|
||||
session('error', true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行sql文件,初始化数据
|
||||
* @param $db
|
||||
* @param $prefix
|
||||
*/
|
||||
private function executeSQL($db, $prefix = '') {
|
||||
//读取SQL文件
|
||||
$sql = file_get_contents(APP_PATH . $this->request->module(). DS . 'data'. DS .'install.sql');
|
||||
$sql = str_replace("\r", "\n", $sql);
|
||||
$sql = explode(";\n", $sql);
|
||||
|
||||
//开始安装
|
||||
showMsg('开始安装数据库...');
|
||||
foreach ($sql as $value) {
|
||||
$value = trim($value);
|
||||
if (empty($value)) continue;
|
||||
if (substr($value, 0, 12) == 'CREATE TABLE') {
|
||||
$name = preg_replace('/^CREATE TABLE `(\w+)` .*/s', "\\1", $value);
|
||||
$value = str_replace(" `{$name}", " `{$prefix}{$name}", $value);
|
||||
$msg = "创建数据表{$name}";
|
||||
if (false !== $db->exec($value)) {
|
||||
showMsg($msg . '...成功');
|
||||
} else {
|
||||
showMsg($msg . '...失败!', 'error');
|
||||
session('error', true);
|
||||
}
|
||||
} else {
|
||||
$db->exec($value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
8
application/install/data/base.tpl
Normal file
8
application/install/data/base.tpl
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
/**
|
||||
* ApiAdmin基础配置模板【由系统自动生成】
|
||||
*/
|
||||
return [
|
||||
'auth_key' => '[AUTH_KEY]',
|
||||
'USER_ADMINISTRATOR' => '[ADMIN_ID]',
|
||||
];
|
16
application/install/data/cache.tpl
Normal file
16
application/install/data/cache.tpl
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* ApiAdmin缓存配置文件【由系统自动生成】
|
||||
*/
|
||||
return [
|
||||
'cache' => [
|
||||
// 驱动方式
|
||||
'type' => 'File',
|
||||
// 缓存保存目录
|
||||
'path' => CACHE_PATH,
|
||||
// 缓存前缀
|
||||
'prefix' => '',
|
||||
// 缓存有效期 0表示永久缓存
|
||||
'expire' => 0,
|
||||
]
|
||||
];
|
22
application/install/data/database.tpl
Normal file
22
application/install/data/database.tpl
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
/**
|
||||
* ApiAdmin数据库连接配置文件【由系统自动生成】
|
||||
*/
|
||||
return [
|
||||
// 数据库类型
|
||||
'type' => '[DB_TYPE]',
|
||||
// 服务器地址
|
||||
'hostname' => '[DB_HOST]',
|
||||
// 数据库名
|
||||
'database' => '[DB_NAME]',
|
||||
// 用户名
|
||||
'username' => '[DB_USER]',
|
||||
// 密码
|
||||
'password' => '[DB_PWD]',
|
||||
// 端口
|
||||
'hostport' => '[DB_PORT]',
|
||||
// 数据库编码默认采用utf8
|
||||
'charset' => 'utf8',
|
||||
// 数据库表前缀
|
||||
'prefix' => '[DB_PREFIX]',
|
||||
];
|
153
application/install/data/install.sql
Normal file
153
application/install/data/install.sql
Normal file
@ -0,0 +1,153 @@
|
||||
# ************************************************************
|
||||
# Sequel Pro SQL dump
|
||||
# Version 4541
|
||||
#
|
||||
# http://www.sequelpro.com/
|
||||
# https://github.com/sequelpro/sequelpro
|
||||
#
|
||||
# Host: 127.0.0.1 (MySQL 5.7.14-log)
|
||||
# Database: admin
|
||||
# Generation Time: 2016-11-20 12:17:44 +0000
|
||||
# ************************************************************
|
||||
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
|
||||
# Dump of table auth_group
|
||||
# ------------------------------------------------------------
|
||||
|
||||
DROP TABLE IF EXISTS `auth_group`;
|
||||
|
||||
CREATE TABLE `auth_group` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL COMMENT '组名称',
|
||||
`description` varchar(50) NOT NULL COMMENT '组描述',
|
||||
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '组状态:为1正常,为0禁用',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限组';
|
||||
|
||||
|
||||
# Dump of table auth_group_access
|
||||
# ------------------------------------------------------------
|
||||
|
||||
DROP TABLE IF EXISTS `auth_group_access`;
|
||||
|
||||
CREATE TABLE `auth_group_access` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`uid` mediumint(8) unsigned NOT NULL,
|
||||
`group_id` mediumint(8) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `uid` (`uid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户和组的对应关系';
|
||||
|
||||
# Dump of table auth_rule
|
||||
# ------------------------------------------------------------
|
||||
|
||||
DROP TABLE IF EXISTS `auth_rule`;
|
||||
|
||||
CREATE TABLE `auth_rule` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`url` char(80) NOT NULL DEFAULT '' COMMENT '规则唯一标识',
|
||||
`group_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '权限所属组的ID',
|
||||
`auth` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '权限数值',
|
||||
`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态:为1正常,为0禁用',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `name` (`url`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限细节';
|
||||
|
||||
# Dump of table menu
|
||||
# ------------------------------------------------------------
|
||||
|
||||
DROP TABLE IF EXISTS `menu`;
|
||||
|
||||
CREATE TABLE `menu` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '菜单名',
|
||||
`fid` int(11) NOT NULL COMMENT '父级菜单ID',
|
||||
`url` varchar(50) NOT NULL DEFAULT '' COMMENT '链接',
|
||||
`auth` tinyint(2) NOT NULL DEFAULT '0' COMMENT '访客权限',
|
||||
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
|
||||
`hide` tinyint(2) NOT NULL DEFAULT '0' COMMENT '是否显示',
|
||||
`icon` varchar(50) NOT NULL DEFAULT '' COMMENT '菜单图标',
|
||||
`level` tinyint(2) NOT NULL DEFAULT '0' COMMENT '菜单认证等级',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='目录信息';
|
||||
|
||||
LOCK TABLES `menu` WRITE;
|
||||
/*!40000 ALTER TABLE `menu` DISABLE KEYS */;
|
||||
|
||||
INSERT INTO `menu` (`id`, `name`, `fid`, `url`, `auth`, `sort`, `hide`, `icon`, `level`)
|
||||
VALUES
|
||||
(1,'系统维护',0,'',0,1,0,'fa-institution',1),
|
||||
(2,'菜单管理',1,'Menu/index',0,1,0,'fa-navicon',0),
|
||||
(3,'用户管理',1,'User/index',0,2,0,'fa-users',0),
|
||||
(4,'权限管理',1,'Auth/index',0,3,0,'fa-bolt',0),
|
||||
(5,'操作日志',1,'UserLog/index',0,4,0,'fa-suitcase',0),
|
||||
(6,'首页',0,'Index/index',0,0,1,'',0),
|
||||
(7,'新增菜单',2,'Menu/add',0,0,0,'',0),
|
||||
(8,'编辑菜单',2,'Menu/edit',0,0,0,'',0),
|
||||
(9,'删除菜单',2,'Menu/del',0,0,0,'',0),
|
||||
(10,'新增用户',3,'User/add',0,0,0,'',0),
|
||||
(11,'删除用户',3,'User/del',0,0,0,'',0),
|
||||
(12,'启用用户',3,'User/open',0,0,0,'',0),
|
||||
(13,'禁用用户',3,'User/close',0,0,0,'',0),
|
||||
(14,'修改用户',3,'User/edit',0,0,0,'',0),
|
||||
(15,'新增用户组',4,'Auth/add',0,0,0,'',0),
|
||||
(16,'删除用户组',4,'Auth/del',0,0,0,'',0),
|
||||
(17,'编辑用户组',4,'Auth/edit',0,0,0,'',0),
|
||||
(18,'启用用户组',4,'Auth/open',0,0,0,'',0),
|
||||
(19,'禁用用户组',4,'Auth/close',0,0,0,'',0),
|
||||
(20,'获取组权限',4,'Auth/access',0,0,0,'',0),
|
||||
(21,'组用户管理',4,'Auth/userAuth',0,0,0,'',0),
|
||||
(22,'用户赋权',4,'Auth/group',0,0,0,'',0);
|
||||
|
||||
/*!40000 ALTER TABLE `menu` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
||||
# Dump of table user
|
||||
# ------------------------------------------------------------
|
||||
|
||||
DROP TABLE IF EXISTS `user`;
|
||||
|
||||
CREATE TABLE `user` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(64) NOT NULL DEFAULT '' COMMENT '用户名',
|
||||
`nickname` varchar(64) NOT NULL DEFAULT '' COMMENT '用户昵称',
|
||||
`password` char(32) NOT NULL DEFAULT '' COMMENT '用户密码',
|
||||
`regTime` int(10) NOT NULL DEFAULT '0' COMMENT '注册时间',
|
||||
`regIp` varchar(11) NOT NULL DEFAULT '' COMMENT '注册IP',
|
||||
`updateTime` int(10) NOT NULL DEFAULT '0' COMMENT '更新时间',
|
||||
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '账号状态 0封号 1正常',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员认证信息';
|
||||
|
||||
# Dump of table user_data
|
||||
# ------------------------------------------------------------
|
||||
|
||||
DROP TABLE IF EXISTS `user_data`;
|
||||
|
||||
CREATE TABLE `user_data` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`loginTimes` int(11) NOT NULL COMMENT '账号登录次数',
|
||||
`lastLoginIp` varchar(11) NOT NULL DEFAULT '' COMMENT '最后登录IP',
|
||||
`lastLoginTime` int(11) NOT NULL COMMENT '最后登录时间',
|
||||
`uid` varchar(11) NOT NULL DEFAULT '' COMMENT '用户ID',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员数据表';
|
||||
|
||||
|
||||
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
0
application/install/model/index.html
Normal file
0
application/install/model/index.html
Normal file
31
application/install/view/index/step4.html
Normal file
31
application/install/view/index/step4.html
Normal file
@ -0,0 +1,31 @@
|
||||
{extend name="public/base" /}
|
||||
{block name="title"}系统安装Step4{/block}
|
||||
{block name="nav"}
|
||||
<li><a href="javascript:;">安装协议</a></li>
|
||||
<li><a href="javascript:;">参数设置</a></li>
|
||||
<li><a href="javascript:;">环境检测</a></li>
|
||||
<li class="active"><a href="javascript:;">开始安装</a></li>
|
||||
<li><a href="javascript:;">安装完成</a></li>
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">{:config('PRODUCT_NAME')} 开始安装</div>
|
||||
<div class="panel-body" style="font-size: 14px">
|
||||
<div id="show-list" class="install-database">
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var list = document.getElementById('show-list');
|
||||
function showMsg(msg, classname){
|
||||
var li = document.createElement('p');
|
||||
li.innerHTML = msg;
|
||||
classname && li.setAttribute('class', classname);
|
||||
list.appendChild(li);
|
||||
document.scrollTop += 30;
|
||||
}
|
||||
</script>
|
||||
<button class="am-radius am-btn am-btn-warning am-disabled">正在安装,请稍后...</button>
|
||||
<a type="button" href="{:url('step4')}" class="btn btn-primary btn-block">下一步</a>
|
||||
<a type="button" href="{:url('step2')}" class="btn btn-default btn-block">上一步</a>
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
Loading…
x
Reference in New Issue
Block a user