diff --git a/migration/20.10/2010.sql b/migration/20.10/2010.sql index f43bf61c400e2eb8e138f6a898b74f4291cd2425..033dd0ba59d3c68f8745ae40a17ec48bd8e7e633 100755 --- a/migration/20.10/2010.sql +++ b/migration/20.10/2010.sql @@ -135,6 +135,14 @@ DO $$ BEGIN ALTER TABLE listinstance RENAME COLUMN added_by_user_tmp TO added_by_user; END IF; END$$; +DO $$ BEGIN + IF (SELECT count(column_name) from information_schema.columns where table_name = 'history' and column_name = 'user_id' and data_type != 'integer') THEN + ALTER TABLE history ADD COLUMN user_id_tmp INTEGER; + UPDATE history set user_id_tmp = (select id FROM users where users.user_id = history.user_id); + ALTER TABLE history DROP COLUMN IF EXISTS user_id; + ALTER TABLE history RENAME COLUMN user_id_tmp TO user_id; + END IF; +END$$; /* RE CREATE VIEWS */ diff --git a/sql/structure.sql b/sql/structure.sql index e4798a6f9e886f38f5de43c8b9c621661636177e..27e5cd607b2c1e2c1bcb2bd96ff7f0fc30a27ea0 100755 --- a/sql/structure.sql +++ b/sql/structure.sql @@ -95,7 +95,7 @@ CREATE TABLE history table_name character varying(32) DEFAULT NULL::character varying, record_id character varying(255) DEFAULT NULL::character varying, event_type character varying(32) NOT NULL, - user_id character varying(128) NOT NULL, + user_id INTEGER, event_date timestamp without time zone NOT NULL, info text, id_module character varying(50) NOT NULL DEFAULT 'admin'::character varying, diff --git a/src/app/email/controllers/EmailController.php b/src/app/email/controllers/EmailController.php index 24541dedbbd6911ad21bbbc61868c1831b6689aa..de9ef15152d7d60ba3d6043bb081716905811b76 100644 --- a/src/app/email/controllers/EmailController.php +++ b/src/app/email/controllers/EmailController.php @@ -658,7 +658,7 @@ class EmailController $history = HistoryModel::get([ 'select' => ['info'], 'where' => ['user_id = ?', 'event_id = ?', 'event_type = ?'], - 'data' => [$user['user_id'], 'sendEmail', 'ERROR'], + 'data' => [$args['userId'], 'sendEmail', 'ERROR'], 'orderBy' => ['event_date DESC'], 'limit' => 1 ]); diff --git a/src/app/history/controllers/HistoryController.php b/src/app/history/controllers/HistoryController.php index 1869571ac22b22c7a5c4ec076602591e7fb9fb07..ca0fd7fb5489e1c04181bfaf89c6808446707e8c 100755 --- a/src/app/history/controllers/HistoryController.php +++ b/src/app/history/controllers/HistoryController.php @@ -66,11 +66,11 @@ class HistoryController } } $users = []; - if (!empty($userIds)) { - $users = UserModel::get(['select' => ['user_id'], 'where' => ['id in (?)'], 'data' => [$userIds]]); - $users = array_column($users, 'user_id'); + if (!empty($userLogins)) { + $users = UserModel::get(['select' => ['id'], 'where' => ['user_id in (?)'], 'data' => [$userLogins]]); + $users = array_column($users, 'id'); } - $users = array_merge($users, $userLogins); + $users = array_merge($users, $userIds); $where[] = 'user_id in (?)'; $data[] = $users; } @@ -125,7 +125,7 @@ class HistoryController $total = $history[0]['count'] ?? 0; foreach ($history as $key => $value) { - $history[$key]['userLabel'] = UserModel::getLabelledUserById(['login' => $value['user_id']]); + $history[$key]['userLabel'] = UserModel::getLabelledUserById(['id' => $value['user_id']]); unset($history[$key]['count']); } @@ -150,11 +150,9 @@ class HistoryController LogsController::add($aArgs); if (empty($aArgs['userId'])) { - $aArgs['userId'] = $GLOBALS['login']; + $aArgs['userId'] = $GLOBALS['id']; } - $user = UserModel::getBylogin(['select' => ['id'], 'login' => $aArgs['userId']]); - HistoryModel::create([ 'tableName' => $aArgs['tableName'], 'recordId' => $aArgs['recordId'], @@ -169,19 +167,18 @@ class HistoryController "eventId" => $aArgs['eventId'], "tableName" => $aArgs['tableName'], "recordId" => $aArgs['recordId'], - "userId" => $user['id'], + "userId" => $aArgs['userId'], "info" => $aArgs['info'], ]); } public function getByUserId(Request $request, Response $response, array $aArgs) { - $user = UserModel::getById(['id' => $aArgs['userSerialId'], 'select' => ['user_id']]); - if ($user['user_id'] != $GLOBALS['login'] && !PrivilegeController::hasPrivilege(['privilegeId' => 'view_history', 'userId' => $GLOBALS['id']])) { + if ($aArgs['userSerialId'] != $GLOBALS['id'] && !PrivilegeController::hasPrivilege(['privilegeId' => 'view_history', 'userId' => $GLOBALS['id']])) { return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); } - $aHistories = HistoryModel::getByUserId(['userId' => $user['user_id'], 'select' => ['info','record_id', 'event_date']]); + $aHistories = HistoryModel::getByUserId(['userId' => $aArgs['userSerialId'], 'select' => ['info','record_id', 'event_date']]); return $response->withJson(['histories' => $aHistories]); } @@ -245,9 +242,11 @@ class HistoryController $users = []; foreach ($usersInHistory as $value) { - $user = UserModel::getByLogin(['login' => $value['user_id'], 'select' => ['id', 'firstname', 'lastname']]); + if (!empty($value['user_id'])) { + $user = UserModel::getById(['id' => $value['user_id'], 'select' => ['user_id', 'firstname', 'lastname']]); + } - $users[] = ['id' => $user['id'] ?? null, 'login' => $value['user_id'], 'label' => !empty($user['id']) ? "{$user['firstname']} {$user['lastname']}" : null]; + $users[] = ['id' => $value['user_id'] ?? null, 'login' => $user['user_id'] ?? null, 'label' => !empty($user['user_id']) ? "{$user['firstname']} {$user['lastname']}" : null]; } return $response->withJson(['actions' => $actions, 'systemActions' => $systemActions, 'users' => $users]); diff --git a/src/app/history/models/HistoryModelAbstract.php b/src/app/history/models/HistoryModelAbstract.php index 1013ee8f7e68537420396dd7a0162ce7e717d19b..65b7af2757ef7a88be87280a690b228659b8985b 100755 --- a/src/app/history/models/HistoryModelAbstract.php +++ b/src/app/history/models/HistoryModelAbstract.php @@ -41,7 +41,8 @@ abstract class HistoryModelAbstract public static function create(array $aArgs) { ValidatorModel::notEmpty($aArgs, ['tableName', 'recordId', 'eventType', 'userId', 'info', 'moduleId', 'eventId']); - ValidatorModel::stringType($aArgs, ['tableName', 'eventType', 'userId', 'info', 'moduleId', 'eventId']); + ValidatorModel::stringType($aArgs, ['tableName', 'eventType', 'info', 'moduleId', 'eventId']); + ValidatorModel::intVal($aArgs, ['userId']); DatabaseModel::insert([ 'table' => 'history', @@ -61,16 +62,16 @@ abstract class HistoryModelAbstract return true; } - public static function getByUserId(array $aArgs) + public static function getByUserId(array $args) { - ValidatorModel::notEmpty($aArgs, ['userId']); - ValidatorModel::stringType($aArgs, ['userId']); + ValidatorModel::notEmpty($args, ['userId']); + ValidatorModel::stringType($args, ['userId']); $aHistories = DatabaseModel::select([ - 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], + 'select' => empty($args['select']) ? ['*'] : $args['select'], 'table' => ['history'], 'where' => ['user_id = ?'], - 'data' => [$aArgs['userId']], + 'data' => [$args['userId']], 'order_by' => ['event_date DESC'], 'limit' => 500 ]); diff --git a/src/app/home/controllers/HomeController.php b/src/app/home/controllers/HomeController.php index cf5b73066a72ad6b4cbf1aaff2cebaa71e9290fd..3231ab28f1c4fc91e1826105dc3d3e5f74e18ef9 100755 --- a/src/app/home/controllers/HomeController.php +++ b/src/app/home/controllers/HomeController.php @@ -146,7 +146,7 @@ class HomeController 'res_letterbox.filename' ], 'limit' => 5, - 'userId' => $GLOBALS['login'] + 'userId' => $GLOBALS['id'] ]); if (!empty($lastResources)) { diff --git a/src/app/resource/models/ResModelAbstract.php b/src/app/resource/models/ResModelAbstract.php index 1af3f4bcab7b2e1b99df299d07232b3846207108..dea461d62e535bada6f343acd726eb486a3797c7 100755 --- a/src/app/resource/models/ResModelAbstract.php +++ b/src/app/resource/models/ResModelAbstract.php @@ -123,9 +123,8 @@ abstract class ResModelAbstract public static function getLastResources(array $aArgs) { - ValidatorModel::notEmpty($aArgs, ['limit', 'userId', 'select']); - ValidatorModel::intType($aArgs, ['limit']); - ValidatorModel::stringType($aArgs, ['userId']); + ValidatorModel::notEmpty($aArgs, ['limit', 'select']); + ValidatorModel::intType($aArgs, ['limit', 'userId',]); ValidatorModel::arrayType($aArgs, ['select']); $resources = DatabaseModel::select([ diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php index fa4ca9bc33fc9bfd4550f4d605bc28d27d3d4dc3..2b8227881f522aeda564f908797b721ea534c53c 100755 --- a/src/app/user/controllers/UserController.php +++ b/src/app/user/controllers/UserController.php @@ -132,7 +132,7 @@ class UserController $user['baskets'] = BasketModel::getBasketsByLogin(['login' => $user['user_id']]); $user['assignedBaskets'] = RedirectBasketModel::getAssignedBasketsByUserId(['userId' => $user['id']]); $user['redirectedBaskets'] = RedirectBasketModel::getRedirectedBasketsByUserId(['userId' => $user['id']]); - $user['history'] = HistoryModel::getByUserId(['userId' => $user['user_id'], 'select' => ['record_id', 'event_date', 'info', 'remote_ip']]); + $user['history'] = HistoryModel::getByUserId(['userId' => $aArgs['id'], 'select' => ['record_id', 'event_date', 'info', 'remote_ip']]); $user['canModifyPassword'] = false; $user['canSendActivationNotification'] = false; $user['canCreateMaarchParapheurUser'] = false;