129 lines
3.5 KiB
PHP
129 lines
3.5 KiB
PHP
<?php
|
|
|
|
$data = [
|
|
'secure_key' => false,
|
|
'gen_key' => NULL,
|
|
'users_created' => false,
|
|
'empty_users' => false,
|
|
'show_login' => false,
|
|
'token' => $session->get('token'),
|
|
'title' => 'Novaconium Admin'
|
|
];
|
|
|
|
// Check if SECURE KEY is Set in
|
|
if ($config['secure_key'] !== null && strlen($config['secure_key']) === 64) {
|
|
$data['secure_key'] = true;
|
|
} else {
|
|
$data['gen_key'] = substr(bin2hex(random_bytes(32)), 0, 64);
|
|
$log->warn('secure_key not detected');
|
|
}
|
|
|
|
// Check if user table exists
|
|
$query = <<<EOSQL
|
|
SELECT TABLE_NAME
|
|
FROM information_schema.tables
|
|
WHERE table_schema = DATABASE()
|
|
AND TABLE_NAME = 'users';
|
|
EOSQL;
|
|
$result = $db->query($query);
|
|
|
|
if ($result->num_rows === 0) {
|
|
$query = <<<EOSQL
|
|
CREATE TABLE `users` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`username` varchar(30) NOT NULL,
|
|
`password` varchar(255) NOT NULL,
|
|
`email` varchar(255) NOT NULL,
|
|
`validate` varchar(32) DEFAULT NULL,
|
|
`confirmationToken` varchar(255) DEFAULT NULL,
|
|
`reset` varchar(32) DEFAULT NULL,
|
|
`created` datetime NOT NULL,
|
|
`updated` datetime DEFAULT NULL,
|
|
`confirmed` tinyint(1) NOT NULL DEFAULT 0,
|
|
`blocked` tinyint(1) NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
|
EOSQL;
|
|
|
|
$db->query($query);
|
|
$data['users_created'] = true;
|
|
$log->info('Users Table Created');
|
|
|
|
}
|
|
|
|
// Check Usergroup
|
|
$query = <<<EOSQL
|
|
SELECT TABLE_NAME
|
|
FROM information_schema.tables
|
|
WHERE table_schema = DATABASE()
|
|
AND TABLE_NAME = 'user_groups';
|
|
EOSQL;
|
|
$result = $db->query($query);
|
|
|
|
if ($result->num_rows === 0) {
|
|
$query = <<<EOSQL
|
|
CREATE TABLE `user_groups` (
|
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
`user_id` INT(11) UNSIGNED NOT NULL,
|
|
`groupName` VARCHAR(40) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
EOSQL;
|
|
|
|
|
|
$db->query($query);
|
|
$log->info('User_groups Table Created');
|
|
|
|
}
|
|
|
|
// Check Pages Table
|
|
$query = <<<EOSQL
|
|
SELECT TABLE_NAME
|
|
FROM information_schema.tables
|
|
WHERE table_schema = DATABASE()
|
|
AND TABLE_NAME = 'pages';
|
|
EOSQL;
|
|
$result = $db->query($query);
|
|
|
|
if ($result->num_rows === 0) {
|
|
$query = <<<EOSQL
|
|
CREATE TABLE `pages` (
|
|
`id` int(11) NOT NULL,
|
|
`title` varchar(255) NOT NULL,
|
|
`heading` varchar(255) NOT NULL,
|
|
`description` varchar(255) NOT NULL,
|
|
`keywords` varchar(255) NOT NULL,
|
|
`author` varchar(255) NOT NULL,
|
|
`slug` varchar(255) NOT NULL,
|
|
`path` varchar(255) DEFAULT NULL,
|
|
`intro` text DEFAULT NULL,
|
|
`body` text DEFAULT NULL,
|
|
`notes` text DEFAULT NULL,
|
|
`created` datetime NOT NULL,
|
|
`updated` datetime DEFAULT NULL,
|
|
`draft` tinyint(1) NOT NULL DEFAULT 1,
|
|
`changefreq` varchar(7) NOT NULL DEFAULT 'monthly',
|
|
`priority` float(4,1) NOT NULL DEFAULT 0.0
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
|
EOSQL;
|
|
|
|
$db->query($query);
|
|
$log->info('Pages Table Created');
|
|
|
|
}
|
|
|
|
// Check if a user exists
|
|
$result = $db->query("SELECT COUNT(*) as total FROM users");
|
|
$row = $result->fetch_assoc();
|
|
|
|
if ($row['total'] < 1) {
|
|
$data['empty_users'] = true;
|
|
} else {
|
|
$log->info('Init Run complete, all sql tables exist with a user.');
|
|
// Everything is working, send them to login page
|
|
$redirect->url('/novaconium/login');
|
|
makeitso();
|
|
}
|
|
|
|
view('@novacore/init', $data);
|