diff --git a/Admin/InstallType.php b/Admin/InstallType.php index a4f4b25..e68dc9a 100644 --- a/Admin/InstallType.php +++ b/Admin/InstallType.php @@ -26,6 +26,5 @@ use phpOMS\Stdlib\Base\Enum; */ abstract class InstallType extends Enum { - public const PERMISSION = 0; - public const GROUP = 1; + public const GROUP = 1; } diff --git a/Admin/Installer.php b/Admin/Installer.php index ea69e24..01f9b00 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -269,67 +269,40 @@ class Installer extends InstallerAbstract public static function installExternal(DatabasePool $dbPool, array $data) : void { foreach ($data as $type => $element) { - if ($type === InstallType::PERMISSION) { - self::installPermission($dbPool, $element); - } elseif ($type === InstallType::GROUP) { + if ($type === InstallType::GROUP) { self::installGroup($dbPool, $element); } } } - /** - * Install permission - * - * @param DatabasePool $dbPool Database pool - * @param array $data Data to install - * - * @return void - * - * @since 1.0.0 - */ - public static function installPermission(DatabasePool $dbPool, array $data) : void - { - $sth = $dbPool->get()->con->prepare( - 'INSERT INTO `' . $dbPool->get()->prefix . 'permission` (`permission_id`, `permission_name`, `permission_description`) VALUES - (:id, :pid, :name, :type, :subtype, :icon, :uri, :target, :from, :order, :parent, :perm);' - ); - - $sth->bindValue(':id', $data['id'] ?? 0, \PDO::PARAM_INT); - $sth->bindValue(':pid', sha1(\str_replace('/', '', $data['pid'] ?? '')), \PDO::PARAM_STR); - $sth->bindValue(':name', $data['name'] ?? '', \PDO::PARAM_STR); - $sth->bindValue(':type', $data['type'] ?? 1, \PDO::PARAM_INT); - $sth->bindValue(':subtype', $data['subtype'] ?? 2, \PDO::PARAM_INT); - - $sth->execute(); - - $lastInsertID = $dbPool->get()->con->lastInsertId(); - } - /** * Install group * * @param DatabasePool $dbPool Database pool * @param array $data Data to install * - * @return void + * @return int * * @since 1.0.0 */ - public static function installGroup(DatabasePool $dbPool, array $data) : void + public static function installGroup(DatabasePool $dbPool, array $data) : int { $sth = $dbPool->get()->con->prepare( - 'INSERT INTO `' . $dbPool->get()->prefix . 'group` (`group_id`, `group_name`, `group_description`) VALUES - (:id, :pid, :name, :type, :subtype, :icon, :uri, :target, :from, :order, :parent, :perm);' + 'INSERT INTO `' . $dbPool->get()->prefix . 'group` ( + `group_id`, `group_name`, `group_description`, `group_description_raw`, `group_status`, `group_created`) + VALUES (:id, :name, :desc, :desc_raw, :status, :created);' ); $sth->bindValue(':id', $data['id'] ?? 0, \PDO::PARAM_INT); - $sth->bindValue(':pid', sha1(\str_replace('/', '', $data['pid'] ?? '')), \PDO::PARAM_STR); $sth->bindValue(':name', $data['name'] ?? '', \PDO::PARAM_STR); - $sth->bindValue(':type', $data['type'] ?? 1, \PDO::PARAM_INT); - $sth->bindValue(':subtype', $data['subtype'] ?? 2, \PDO::PARAM_INT); - + $sth->bindValue(':desc', $data['desc'] ?? '', \PDO::PARAM_STR); + $sth->bindValue(':desc_raw', $data['desc_raw'] ?? '', \PDO::PARAM_STR); + $sth->bindValue(':status', $data['status'] ?? 1, \PDO::PARAM_INT); + $sth->bindValue(':created', (new \DateTime('now'))->format('Y-m-d H:i:s'), \PDO::PARAM_STR); $sth->execute(); $lastInsertID = $dbPool->get()->con->lastInsertId(); + + return $lastInsertID; } } diff --git a/Controller.php b/Controller.php index bebb977..5da0ba5 100644 --- a/Controller.php +++ b/Controller.php @@ -25,6 +25,7 @@ use Modules\Admin\Models\GroupMapper; use Modules\Admin\Models\GroupPermissionMapper; use Modules\Admin\Models\NullGroupPermission; use Modules\Admin\Models\PermissionState; +use Modules\Admin\Models\ModuleStatusUpdateType; use phpOMS\Account\AccountStatus; use phpOMS\Account\AccountType; @@ -399,7 +400,7 @@ final class Controller extends ModuleAbstract implements WebInterface */ public function apiSettingsSet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { - if (($data = $request->getData('settings')) === null) { + if ($request->getData('settings') === null) { $data = $request->getLike('(settings_)(.*)'); } else { $data = \json_decode((string) $request->getData('settings'), true); @@ -500,9 +501,7 @@ final class Controller extends ModuleAbstract implements WebInterface { $val = []; if (($val['name'] = empty($request->getData('name'))) - || ($val['status'] = ($request->getData('status') === null - || !GroupStatus::isValidValue((int) $request->getData('status')) - )) + || ($val['status'] = !GroupStatus::isValidValue((int) $request->getData('status'))) ) { return $val; } @@ -638,7 +637,6 @@ final class Controller extends ModuleAbstract implements WebInterface */ public function apiAccountFind(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { - $response->getHeader()->set('Content-Type', MimeType::M_JSON . '; charset=utf-8', true); $response->set( $request->getUri()->__toString(), \array_values( @@ -834,7 +832,7 @@ final class Controller extends ModuleAbstract implements WebInterface public function apiModuleStatusUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { $module = $request->getData('module'); - $status = $request->getData('status'); + $status = (int) $request->getData('status'); if ($module === null || $status === null) { $response->set('module_stutus_update', null); @@ -843,25 +841,24 @@ final class Controller extends ModuleAbstract implements WebInterface } switch ($status) { - case 'activate': - $done = $this->app->moduleManager->activate($module); - $msg = 'Module successfully activated.'; + case ModuleStatusUpdateType::ACTIVATE: + $done = $module === 'Admin' ? false : $this->app->moduleManager->activate($module); + $msg = $done ? 'Module successfully activated.' : 'Module not activated.'; break; - case 'deactivate': - $done = $this->app->moduleManager->deactivate($module); - $msg = 'Module successfully deactivated.'; + case ModuleStatusUpdateType::DEACTIVATE: + $done = $module === 'Admin' ? false : $this->app->moduleManager->deactivate($module); + $msg = $done ? 'Module successfully deactivated.' : 'Module not deactivated.'; break; - case 'install': - $done = $this->app->moduleManager->install($module); - $msg = 'Module successfully installed.'; + case ModuleStatusUpdateType::INSTALL: + $done = $module === 'Admin' ? false : $this->app->moduleManager->install($module); + $msg = $done ? 'Module successfully installed.' : 'Module not installed.'; break; - case 'uninstall': - //$done = $this->app->moduleManager->uninstall($module); - $done = true; - $msg = 'Module successfully uninstalled.'; + case ModuleStatusUpdateType::UNINSTALL: + $done = $module === 'Admin' ? false : $this->app->moduleManager->uninstall($module); + $msg = $done ? 'Module successfully uninstalled.' : 'Module not uninstalled.'; break; default: diff --git a/Models/AccountMapper.php b/Models/AccountMapper.php index cdd5ce0..831ec6f 100644 --- a/Models/AccountMapper.php +++ b/Models/AccountMapper.php @@ -131,11 +131,11 @@ class AccountMapper extends DataMapperAbstract return LoginReturnType::EMPTY_PASSWORD; } - if (\password_verify($password, $result['account_password'])) { + if (\password_verify($password, $result['account_password'] ?? '')) { return $result['account_id']; } - if ($result['account_password_temp'] !== '' && \password_verify($password, $result['account_password_temp'])) { + if (!empty($result['account_password_temp']) && \password_verify($password, $result['account_password_temp'] ?? '')) { $query->update('account')->set(['account_password_temp' => ''])->where('account_login', '=', $login)->execute(); return $result['account_id']; diff --git a/Models/Group.php b/Models/Group.php index e95d11e..d046fcf 100644 --- a/Models/Group.php +++ b/Models/Group.php @@ -81,11 +81,11 @@ class Group extends \phpOMS\Account\Group /** * Get created by. * - * @return int + * @return mixed * * @since 1.0.0 */ - public function getCreatedBy() : int + public function getCreatedBy() { return $this->createdBy; } diff --git a/Models/ModuleStatusUpdateType.php b/Models/ModuleStatusUpdateType.php new file mode 100644 index 0000000..e9fd568 --- /dev/null +++ b/Models/ModuleStatusUpdateType.php @@ -0,0 +1,33 @@ +