diff --git a/core/ApiController.php b/core/ApiController.php index ba1d98798..16db7fcff 100644 --- a/core/ApiController.php +++ b/core/ApiController.php @@ -42,7 +42,7 @@ public function init() /** Return the user dao */ protected function _getUser($args) { - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); return $authComponent->getUser($args, $this->userSession->Dao); } diff --git a/core/controllers/components/ApiComponent.php b/core/controllers/components/ApiComponent.php index 3ad910887..d1f97a92f 100644 --- a/core/controllers/components/ApiComponent.php +++ b/core/controllers/components/ApiComponent.php @@ -35,6 +35,13 @@ private function _requirePolicyScopes($scopes) Zend_Registry::get('notifier')->callback('CALLBACK_API_REQUIRE_PERMISSIONS', array('scopes' => $scopes)); } + /** Return the user dao */ + private function _getUser($args) + { + $authComponent = MidasLoader::loadComponent('Authentication'); + return $authComponent->getUser($args, Zend_Registry::get('userSession')->Dao); + } + /** * Pass the args and a list of required parameters. * Will throw an exception if a required one is missing. @@ -337,10 +344,11 @@ protected function _listResourcePermissions($policyStatus, $userPolicies, $group * @return the sought metadata array on success, will fail if there are no revisions or the specified revision is not found. */ - function itemGetmetadata($args, $userDao) + function itemGetmetadata($args) { $this->_validateParams($args, array('id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_READ_DATA)); + $userDao = $this->_getUser($args); $itemid = $args['id']; $itemModel = MidasLoader::loadModel('Item'); @@ -374,10 +382,11 @@ function itemGetmetadata($args, $userDao) * @return true on success, will fail if there are no revisions or the specified revision is not found. */ - function itemSetmetadata($args, $userDao) + function itemSetmetadata($args) { $this->_validateParams($args, array('id', 'element', 'value')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_WRITE_DATA)); + $userDao = $this->_getUser($args); $itemModel = MidasLoader::loadModel('Item'); $item = $itemModel->load($args['id']); @@ -416,10 +425,11 @@ function itemSetmetadata($args, $userDao) * @return true on success, will fail if there are no revisions or the specified revision is not found. */ - function itemSetmultiplemetadata($args, $userDao) + function itemSetmultiplemetadata($args) { $this->_validateParams($args, array('id', 'count')); $metadataTuples = $this->_parseMetadataTuples($args); + $userDao = $this->_getUser($args); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_WRITE_DATA)); @@ -454,10 +464,11 @@ function itemSetmultiplemetadata($args, $userDao) false if the metadata was not found on the item revision, will fail if there are no revisions or the specified revision is not found. */ - function itemDeletemetadata($args, $userDao) + function itemDeletemetadata($args) { $this->_validateParams($args, array('id', 'element')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); $itemModel = MidasLoader::loadModel('Item'); $item = $itemModel->load($args['id']); @@ -497,10 +508,11 @@ function itemDeletemetadata($args, $userDao) * @return true on success, will fail if there are no revisions or the specified revision is not found. */ - function itemDeletemetadataAll($args, $userDao) + function itemDeletemetadataAll($args) { $this->_validateParams($args, array('id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); $itemModel = MidasLoader::loadModel('Item'); $item = $itemModel->load($args['id']); @@ -542,10 +554,11 @@ function itemDeletemetadataAll($args, $userDao) * @param name The name of the item * @return array('exists' => bool) */ - function itemExists($args, $userDao) + function itemExists($args) { $this->_validateParams($args, array('name', 'parentid')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_READ_DATA)); + $userDao = $this->_getUser($args); $folderModel = MidasLoader::loadModel('Folder'); $itemModel = MidasLoader::loadModel('Item'); $folder = $folderModel->load($args['parentid']); @@ -574,10 +587,11 @@ function itemExists($args, $userDao) * @param name The name of the item to search by * @return A list of all items with the given name */ - function itemSearchbyname($args, $userDao) + function itemSearchbyname($args) { $this->_validateParams($args, array('name')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_READ_DATA)); + $userDao = $this->_getUser($args); $itemModel = MidasLoader::loadModel('Item'); $items = $itemModel->getByName($args['name']); @@ -600,10 +614,11 @@ function itemSearchbyname($args, $userDao) * @param head (Optional) only list the most recent revision * @return The item object */ - function itemGet($args, $userDao) + function itemGet($args) { $this->_validateParams($args, array('id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_READ_DATA)); + $userDao = $this->_getUser($args); $itemid = $args['id']; $itemModel = MidasLoader::loadModel('Item'); @@ -662,10 +677,11 @@ function itemGet($args, $userDao) (user_id, policy, email); group will be a list of (group_id, policy, name). policy for user and group will be a policy string [Admin|Write|Read]. */ - public function itemListPermissions($args, $userDao) + public function itemListPermissions($args) { $this->_validateParams($args, array('id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); $itempolicygroupModel = MidasLoader::loadModel('Itempolicygroup'); $itemModel = MidasLoader::loadModel('Item'); @@ -699,10 +715,11 @@ public function itemListPermissions($args, $userDao) existed and its latest revision contains only one bitstream. * @return The item object that was created */ - function itemCreate($args, $userDao) + function itemCreate($args) { $this->_validateParams($args, array('name')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_WRITE_DATA)); + $userDao = $this->_getUser($args); if($userDao == false) { throw new Exception('Cannot create item anonymously', MIDAS_INVALID_POLICY); @@ -805,10 +822,11 @@ function itemCreate($args, $userDao) * @param dstfolderid The id of destination folder where the item is moved to * @return The item object */ - function itemMove($args, $userDao) + function itemMove($args) { $this->_validateParams($args, array('id', 'srcfolderid', 'dstfolderid')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); if($userDao == false) { throw new Exception('Cannot move item anonymously', MIDAS_INVALID_POLICY); @@ -856,10 +874,11 @@ function itemMove($args, $userDao) * @param dstfolderid The id of destination folder where the item is shared to * @return The item object */ - function itemShare($args, $userDao) + function itemShare($args) { $this->_validateParams($args, array('id', 'dstfolderid')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_WRITE_DATA)); + $userDao = $this->_getUser($args); if($userDao == false) { throw new Exception('Cannot share item anonymously', MIDAS_INVALID_POLICY); @@ -904,10 +923,11 @@ function itemShare($args, $userDao) * @param dstfolderid The id of destination folder where the item is duplicated to * @return The item object that was created */ - function itemDuplicate($args, $userDao) + function itemDuplicate($args) { $this->_validateParams($args, array('id', 'dstfolderid')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_WRITE_DATA)); + $userDao = $this->_getUser($args); if($userDao == false) { throw new Exception('Cannot duplicate item anonymously', MIDAS_INVALID_POLICY); @@ -939,10 +959,11 @@ function itemDuplicate($args, $userDao) * @param policy Desired policy status, one of [Admin|Write|Read]. * @return success = true on success. */ - function itemAddPolicygroup($args, $userDao) + function itemAddPolicygroup($args) { $this->_validateParams($args, array('id', 'group_id', 'policy')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); $itemModel = MidasLoader::loadModel('Item'); $itemId = $args['id']; @@ -978,10 +999,11 @@ function itemAddPolicygroup($args, $userDao) * @param group_id The id of the group. * @return success = true on success. */ - function itemRemovePolicygroup($args, $userDao) + function itemRemovePolicygroup($args) { $this->_validateParams($args, array('id', 'group_id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); $itemModel = MidasLoader::loadModel('Item'); $itemId = $args['id']; @@ -1021,10 +1043,11 @@ function itemRemovePolicygroup($args, $userDao) * @param policy Desired policy status, one of [Admin|Write|Read]. * @return success = true on success. */ - function itemAddPolicyuser($args, $adminUser) + function itemAddPolicyuser($args) { $this->_validateParams($args, array('id', 'user_id', 'policy')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $adminUser = $this->_getUser($args); $itemModel = MidasLoader::loadModel('Item'); $itemId = $args['id']; @@ -1061,10 +1084,11 @@ function itemAddPolicyuser($args, $adminUser) * @param user_id The id of the target user. * @return success = true on success. */ - function itemRemovePolicyuser($args, $userDao) + function itemRemovePolicyuser($args) { $this->_validateParams($args, array('id', 'user_id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); $itemModel = MidasLoader::loadModel('Item'); $itemId = $args['id']; @@ -1100,11 +1124,12 @@ function itemRemovePolicyuser($args, $userDao) * @param token Authentication token * @param id The id of the item */ - function itemDelete($args, $userDao) + function itemDelete($args) { $this->_validateParams($args, array('id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); if($userDao == false) { throw new Exception('Unable to find user', MIDAS_INVALID_TOKEN); @@ -1177,10 +1202,11 @@ private function _getValidCommunityCanjoinCode($canjoinStatus) * @param canjoin (Optional) Default 'Everyone', possible values [Everyone|Invitation]. * @return The community dao that was created */ - function communityCreate($args, $userDao) + function communityCreate($args) { $this->_validateParams($args, array('name')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_WRITE_DATA)); + $userDao = $this->_getUser($args); if($userDao == false) { throw new Exception('Unable to find user', MIDAS_INVALID_POLICY); @@ -1267,12 +1293,13 @@ function communityCreate($args, $userDao) * @param name the name of the community * @return The community information */ - function communityGet($args, $userDao) + function communityGet($args) { $hasId = array_key_exists('id', $args); $hasName = array_key_exists('name', $args); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_READ_DATA)); + $userDao = $this->_getUser($args); $communityModel = MidasLoader::loadModel('Community'); if($hasId) @@ -1302,9 +1329,10 @@ function communityGet($args, $userDao) * @param id The id of the community * @return The folders in the community */ - function communityChildren($args, $userDao) + function communityChildren($args) { $this->_validateParams($args, array('id')); + $userDao = $this->_getUser($args); $id = $args['id']; @@ -1335,11 +1363,12 @@ function communityChildren($args, $userDao) * @param token (Optional) Authentication token * @return A list of all communities */ - function communityList($args, $userDao) + function communityList($args) { $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_READ_DATA)); $communityModel = MidasLoader::loadModel('Community'); $userModel = MidasLoader::loadModel('User'); + $userDao = $this->_getUser($args); if($userDao && $userDao->isAdmin()) { @@ -1366,11 +1395,12 @@ function communityList($args, $userDao) * @param token Authentication token * @param id The id of the community */ - function communityDelete($args, $userDao) + function communityDelete($args) { $this->_validateParams($args, array('id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); if($userDao == false) { throw new Exception('Unable to find user', MIDAS_INVALID_TOKEN); @@ -1402,10 +1432,11 @@ function communityDelete($args, $userDao) * @param parentid The id of the parent folder. Set this to -1 to create a top level user folder. * @return The folder object that was created */ - function folderCreate($args, $userDao) + function folderCreate($args) { $this->_validateParams($args, array('name')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_WRITE_DATA)); + $userDao = $this->_getUser($args); if($userDao == false) { throw new Exception('Cannot create folder anonymously', MIDAS_INVALID_POLICY); @@ -1521,10 +1552,11 @@ function folderCreate($args, $userDao) * @param dstfolderid The id of destination folder (new parent folder) where the folder is moved to * @return The folder object */ - function folderMove($args, $userDao) + function folderMove($args) { $this->_validateParams($args, array('id', 'dstfolderid')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); $folderModel = MidasLoader::loadModel('Folder'); $id = $args['id']; @@ -1553,10 +1585,11 @@ function folderMove($args, $userDao) * @param id The id of the folder * @return The folder object, including its parent object */ - function folderGet($args, $userDao) + function folderGet($args) { $this->_validateParams($args, array('id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_READ_DATA)); + $userDao = $this->_getUser($args); $folderModel = MidasLoader::loadModel('Folder'); @@ -1581,10 +1614,11 @@ function folderGet($args, $userDao) (user_id, policy, email); group will be a list of (group_id, policy, name). policy for user and group will be a policy string [Admin|Write|Read]. */ - public function folderListPermissions($args, $userDao) + public function folderListPermissions($args) { $this->_validateParams($args, array('id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); $folderpolicygroupModel = MidasLoader::loadModel('Folderpolicygroup'); $folderModel = MidasLoader::loadModel('Folder'); @@ -1611,9 +1645,10 @@ public function folderListPermissions($args, $userDao) * @param id The id of the folder * @return The items and folders in the given folder */ - function folderChildren($args, $userDao) + function folderChildren($args) { $this->_validateParams($args, array('id')); + $userDao = $this->_getUser($args); $id = $args['id']; $folderModel = MidasLoader::loadModel('Folder'); @@ -1648,10 +1683,11 @@ function folderChildren($args, $userDao) * @return An array with keys 'success' and 'failure' indicating a count of children resources that succeeded or failed the permission change. */ - function folderSetPrivacyRecursive($args, $userDao) + function folderSetPrivacyRecursive($args) { $this->_validateParams($args, array('id', 'privacy')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); $folderModel = MidasLoader::loadModel('Folder'); $folderId = $args['id']; @@ -1689,10 +1725,11 @@ function folderSetPrivacyRecursive($args, $userDao) * @return An array with keys 'success' and 'failure' indicating a count of resources affected by the addition. */ - function folderAddPolicygroup($args, $userDao) + function folderAddPolicygroup($args) { $this->_validateParams($args, array('id', 'group_id', 'policy')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); $folderModel = MidasLoader::loadModel('Folder'); $folderId = $args['id']; @@ -1742,10 +1779,11 @@ function folderAddPolicygroup($args, $userDao) * @return An array with keys 'success' and 'failure' indicating a count of resources affected by the removal. */ - function folderRemovePolicygroup($args, $userDao) + function folderRemovePolicygroup($args) { $this->_validateParams($args, array('id', 'group_id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); $folderModel = MidasLoader::loadModel('Folder'); $folderId = $args['id']; @@ -1799,10 +1837,11 @@ function folderRemovePolicygroup($args, $userDao) * @return An array with keys 'success' and 'failure' indicating a count of resources affected by the addition. */ - function folderAddPolicyuser($args, $adminUser) + function folderAddPolicyuser($args) { $this->_validateParams($args, array('id', 'user_id', 'policy')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $adminUser = $this->_getUser($args); $folderModel = MidasLoader::loadModel('Folder'); $folderId = $args['id']; @@ -1853,10 +1892,11 @@ function folderAddPolicyuser($args, $adminUser) * @return An array with keys 'success' and 'failure' indicating a count of resources affected by the removal. */ - function folderRemovePolicyuser($args, $userDao) + function folderRemovePolicyuser($args) { $this->_validateParams($args, array('id', 'user_id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); $folderModel = MidasLoader::loadModel('Folder'); $folderId = $args['id']; @@ -1903,11 +1943,12 @@ function folderRemovePolicyuser($args, $userDao) * @param token Authentication token * @param id The id of the folder */ - function folderDelete($args, $userDao) + function folderDelete($args) { $this->_validateParams($args, array('id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); if($userDao == false) { throw new Exception('Unable to find user', MIDAS_INVALID_TOKEN); @@ -1929,9 +1970,10 @@ function folderDelete($args, $userDao) * @param token Authentication token * @return List of the user's top level folders */ - function userFolders($args, $userDao) + function userFolders($args) { $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_READ_DATA)); + $userDao = $this->_getUser($args); if($userDao == false) { return array(); @@ -1982,7 +2024,7 @@ function userApikeyDefault($args) } $userModel = MidasLoader::loadModel('User'); - $userApiModel = MidasLoader::loadModel('Userapi', 'api'); + $userApiModel = MidasLoader::loadModel('Userapi'); if(!$authModule) { $userDao = $userModel->getByEmail($email); @@ -2049,10 +2091,11 @@ function userGet($args) * @param id The id of the bitstream * @return Bitstream dao */ - function bitstreamGet($args, $userDao) + function bitstreamGet($args) { $this->_validateParams($args, array('id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_READ_DATA)); + $userDao = $this->_getUser($args); $bitstreamModel = MidasLoader::loadModel('Bitstream'); $bitstream = $bitstreamModel->load($args['id']); @@ -2098,10 +2141,11 @@ function bitstreamGet($args, $userDao) * @param mimetype (optional) New MIME type for the bitstream * @return The bitstream dao */ - function bitstreamEdit($args, $userDao) + function bitstreamEdit($args) { $this->_validateParams($args, array('id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_WRITE_DATA)); + $userDao = $this->_getUser($args); $bitstreamModel = MidasLoader::loadModel('Bitstream'); $itemModel = MidasLoader::loadModel('Item'); @@ -2134,10 +2178,11 @@ function bitstreamEdit($args, $userDao) * @param token Authentication token * @param id The id of the bitstream to delete */ - function bitstreamDelete($args, $userDao) + function bitstreamDelete($args) { $this->_validateParams($args, array('id')); $this->_requirePolicyScopes(array(MIDAS_API_PERMISSION_SCOPE_ADMIN_DATA)); + $userDao = $this->_getUser($args); $bitstreamModel = MidasLoader::loadModel('Bitstream'); $itemModel = MidasLoader::loadModel('Item'); diff --git a/modules/api/controllers/components/AuthenticationComponent.php b/core/controllers/components/AuthenticationComponent.php similarity index 94% rename from modules/api/controllers/components/AuthenticationComponent.php rename to core/controllers/components/AuthenticationComponent.php index adef4c77f..8754b9ac2 100644 --- a/modules/api/controllers/components/AuthenticationComponent.php +++ b/core/controllers/components/AuthenticationComponent.php @@ -19,7 +19,7 @@ =========================================================================*/ /** Web API Authentication Component */ -class Api_AuthenticationComponent extends AppComponent +class AuthenticationComponent extends AppComponent { /** Constructor */ @@ -45,7 +45,7 @@ public function getUser($args, $sessionDao) return 0; } $token = $args['token']; - $userApiModel = MidasLoader::loadModel('Userapi', 'api'); + $userApiModel = MidasLoader::loadModel('Userapi'); $userapiDao = $userApiModel->getUserapiFromToken($token); if(!$userapiDao) { diff --git a/core/database/upgrade/3.2.13.php b/core/database/upgrade/3.2.13.php new file mode 100644 index 000000000..1aa55c787 --- /dev/null +++ b/core/database/upgrade/3.2.13.php @@ -0,0 +1,85 @@ +db->query("CREATE TABLE IF NOT EXISTS `api_userapi` ( + `userapi_id` bigint(20) NOT NULL AUTO_INCREMENT, + `user_id` bigint(20) NOT NULL, + `apikey` varchar(40) NOT NULL, + `application_name` varchar(256) NOT NULL, + `token_expiration_time` int(11) NOT NULL, + `creation_date` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`userapi_id`) + )"); + $this->db->query("RENAME TABLE `api_userapi` to `userapi`"); + + $this->db->query("CREATE TABLE IF NOT EXISTS `api_token` ( + `token_id` bigint(20) NOT NULL AUTO_INCREMENT, + `userapi_id` bigint(20) NOT NULL, + `token` varchar(40) NOT NULL, + `expiration_date` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`token_id`) + )"); + $this->db->query("RENAME TABLE `api_token` to `token`"); + } + + public function pgsql() + { + $this->db->query("CREATE TABLE api_userapi ( + userapi_id serial PRIMARY KEY, + user_id bigint NOT NULL, + apikey character varying(40) NOT NULL, + application_name character varying(256) NOT NULL, + token_expiration_time integer NOT NULL, + creation_date timestamp without time zone + )"); + $this->db->query("ALTER TABLE api_userapi_userapi_id_seq RENAME TO userapi_userapi_id_seq"); + $this->db->query("ALTER TABLE api_userapi RENAME TO userapi"); + $this->db->query("ALTER INDEX api_userapi_pkey RENAME TO userapi_pkey"); + + $this->db->query("CREATE TABLE api_token ( + token_id serial PRIMARY KEY, + userapi_id bigint NOT NULL, + token character varying(40) NOT NULL, + expiration_date timestamp without time zone + )"); + $this->db->query("ALTER TABLE api_token_token_id_seq RENAME TO token_token_id_seq"); + $this->db->query("ALTER TABLE api_token RENAME TO token"); + $this->db->query("ALTER INDEX api_token_pkey RENAME TO token_pkey"); + } + + public function postUpgrade() + { + $userModel = MidasLoader::loadModel('User'); + $userapiModel = MidasLoader::loadModel('Userapi'); + + //limit this to 100 users; there shouldn't be very many when api is installed + $users = $userModel->getAll(false, 100, 'admin'); + foreach($users as $user) + { + $userApiDao = $userapiModel->getByAppAndEmail('Default', $user->getEmail()); + if($userApiDao != false) + { + $userDefaultApiKey = $userApiDao->getApikey(); + if(!empty($userDefaultApiKey)) + { + continue; + } + } + $userapiModel->createDefaultApiKey($user); + } + } + +} +?> diff --git a/modules/api/models/base/TokenModelBase.php b/core/models/base/TokenModelBase.php similarity index 88% rename from modules/api/models/base/TokenModelBase.php rename to core/models/base/TokenModelBase.php index d84fd36cf..cea2a2343 100644 --- a/modules/api/models/base/TokenModelBase.php +++ b/core/models/base/TokenModelBase.php @@ -17,13 +17,13 @@ See the License for the specific language governing permissions and limitations under the License. =========================================================================*/ -abstract class Api_TokenModelBase extends Api_AppModel +abstract class TokenModelBase extends AppModel { /** constructor */ public function __construct() { parent::__construct(); - $this->_name = 'api_token'; + $this->_name = 'token'; $this->_key = 'token_id'; $this->_mainData = array( @@ -31,7 +31,7 @@ public function __construct() 'userapi_id' => array('type' => MIDAS_DATA), 'token' => array('type' => MIDAS_DATA), 'expiration_date' => array('type' => MIDAS_DATA), - 'userapi' => array('type' => MIDAS_MANY_TO_ONE, 'model' => 'Userapi', 'module' => 'api', 'parent_column' => 'userapi_id', 'child_column' => 'userapi_id'), + 'userapi' => array('type' => MIDAS_MANY_TO_ONE, 'model' => 'Userapi', 'parent_column' => 'userapi_id', 'child_column' => 'userapi_id'), ); $this->initialize(); // required } // end __construct() diff --git a/modules/api/models/base/UserapiModelBase.php b/core/models/base/UserapiModelBase.php similarity index 93% rename from modules/api/models/base/UserapiModelBase.php rename to core/models/base/UserapiModelBase.php index 0ec748e4d..8e5e9e676 100644 --- a/modules/api/models/base/UserapiModelBase.php +++ b/core/models/base/UserapiModelBase.php @@ -17,13 +17,13 @@ See the License for the specific language governing permissions and limitations under the License. =========================================================================*/ -abstract class Api_UserapiModelBase extends Api_AppModel +abstract class UserapiModelBase extends AppModel { /** constructor */ public function __construct() { parent::__construct(); - $this->_name = 'api_userapi'; + $this->_name = 'userapi'; $this->_key = 'userapi_id'; $this->_mainData = array( @@ -63,14 +63,14 @@ function createDefaultApiKey($userDao) if(count($rowset)) //update existing record if we have one already { - $userApiDao = $this->initDao('Userapi', $rowset[0], 'api'); + $userApiDao = $this->initDao('Userapi', $rowset[0]); $userApiDao->setApikey($key); $this->save($userApiDao); return; } // Otherwise save new default key - $userApiDao = MidasLoader::newDao('UserapiDao', 'api'); + $userApiDao = MidasLoader::newDao('UserapiDao'); $userApiDao->setUserId($userDao->getKey()); $userApiDao->setApplicationName('Default'); $userApiDao->setApikey($key); @@ -97,7 +97,7 @@ function createKey($userDao, $applicationname, $tokenexperiationtime) $key = UtilityComponent::generateRandomString(40); - $userApiDao = MidasLoader::newDao('UserapiDao', 'api'); + $userApiDao = MidasLoader::newDao('UserapiDao'); $userApiDao->setUserId($userDao->getKey()); $userApiDao->setApikey($key); $userApiDao->setApplicationName($applicationname); diff --git a/modules/api/models/dao/TokenDao.php b/core/models/dao/TokenDao.php similarity index 93% rename from modules/api/models/dao/TokenDao.php rename to core/models/dao/TokenDao.php index 5aaa59554..0d85a0f07 100644 --- a/modules/api/models/dao/TokenDao.php +++ b/core/models/dao/TokenDao.php @@ -18,9 +18,8 @@ limitations under the License. =========================================================================*/ /** Dao for the api token */ -class Api_TokenDao extends AppDao +class TokenDao extends AppDao { public $_model = 'Token'; - public $_module = 'api'; } ?> diff --git a/modules/api/models/dao/UserapiDao.php b/core/models/dao/UserapiDao.php similarity index 93% rename from modules/api/models/dao/UserapiDao.php rename to core/models/dao/UserapiDao.php index fd88a8bf9..a181003ef 100644 --- a/modules/api/models/dao/UserapiDao.php +++ b/core/models/dao/UserapiDao.php @@ -18,9 +18,8 @@ limitations under the License. =========================================================================*/ /** Dao for user api key */ -class Api_UserapiDao extends AppDao +class UserapiDao extends AppDao { public $_model = 'Userapi'; - public $_module = 'api'; } ?> diff --git a/modules/api/models/pdo/TokenModel.php b/core/models/pdo/TokenModel.php similarity index 84% rename from modules/api/models/pdo/TokenModel.php rename to core/models/pdo/TokenModel.php index 6cf70da57..353b3623c 100644 --- a/modules/api/models/pdo/TokenModel.php +++ b/core/models/pdo/TokenModel.php @@ -18,10 +18,10 @@ limitations under the License. =========================================================================*/ -require_once BASE_PATH.'/modules/api/models/base/TokenModelBase.php'; +require_once BASE_PATH.'/core/models/base/TokenModelBase.php'; -/** Api token model implementation */ -class Api_TokenModel extends Api_TokenModelBase +/** Api Token model implementation */ +class TokenModel extends TokenModelBase { /** Remove all expired api tokens */ function cleanExpired() @@ -30,7 +30,7 @@ function cleanExpired() $rowset = $this->database->fetchAll($sql); foreach($rowset as $row) { - $tmpDao = $this->initDao('Token', $row, 'api'); + $tmpDao = $this->initDao('Token', $row); parent::delete($tmpDao); } } diff --git a/modules/api/models/pdo/UserapiModel.php b/core/models/pdo/UserapiModel.php similarity index 85% rename from modules/api/models/pdo/UserapiModel.php rename to core/models/pdo/UserapiModel.php index 5d1f948bb..137ed13b1 100644 --- a/modules/api/models/pdo/UserapiModel.php +++ b/core/models/pdo/UserapiModel.php @@ -18,16 +18,16 @@ limitations under the License. =========================================================================*/ //App::import("Vendor",'Sanitize'); -require_once BASE_PATH.'/modules/api/models/base/UserapiModelBase.php'; +require_once BASE_PATH.'/core/models/base/UserapiModelBase.php'; /** User api key model implementation */ -class Api_UserapiModel extends Api_UserapiModelBase +class UserapiModel extends UserapiModelBase { /** * Get UserapiDao by * @param string $appname Application Name * @param string $email - * @return Api_UserapiDao + * @return UserapiDao */ function getByAppAndEmail($appname, $email) { @@ -43,7 +43,7 @@ function getByAppAndEmail($appname, $email) } $row = $this->database->fetchRow($this->database->select()->where('application_name = ?', $appname) ->where('user_id = ?', $userDao->getKey())); - $dao = $this->initDao('Userapi', $row, 'api'); + $dao = $this->initDao('Userapi', $row); return $dao; } // end getByApikey @@ -51,7 +51,7 @@ function getByAppAndEmail($appname, $email) * Get UserapiDao by * @param string $appname Application Name * @param UserDao $userDao - * @return Api_UserapiDao + * @return UserapiDao */ function getByAppAndUser($appname, $userDao) { @@ -61,7 +61,7 @@ function getByAppAndUser($appname, $userDao) } $row = $this->database->fetchRow($this->database->select()->where('application_name = ?', $appname) ->where('user_id = ?', $userDao->getKey())); - $dao = $this->initDao('Userapi', $row, 'api'); + $dao = $this->initDao('Userapi', $row); return $dao; } // end getByAppAndUser @@ -90,8 +90,8 @@ function getToken($email, $apikey, $appname) $sql = $this->database->select() ->setIntegrityCheck(false) - ->from(array('t' => 'api_token')) - ->join(array('u' => 'api_userapi'), + ->from(array('t' => 'token')) + ->join(array('u' => 'userapi'), ' u.userapi_id= t.userapi_id', array() ) ->where('u.user_id = ?', $userDao->getKey()) ->where('u.application_name = ?', $appname) @@ -100,7 +100,7 @@ function getToken($email, $apikey, $appname) $row = $this->database->fetchRow($sql); - $tokenDao = $this->initDao('Token', $row, 'api'); + $tokenDao = $this->initDao('Token', $row); if(!empty($tokenDao)) { @@ -126,25 +126,25 @@ function getToken($email, $apikey, $appname) $sql = $this->database->select() ->setIntegrityCheck(false) - ->from(array('u' => 'api_userapi')) + ->from(array('u' => 'userapi')) ->where('u.user_id = ?', $userDao->getKey()) ->where('u.application_name = ?', $appname) ->where('u.apikey = ?', $apikey); $row = $this->database->fetchRow($sql); - $userapiDao = $this->initDao('Userapi', $row, 'api'); + $userapiDao = $this->initDao('Userapi', $row); if(!$userapiDao) { return false; } - $tokenDao = MidasLoader::newDao('TokenDao', 'api'); + $tokenDao = MidasLoader::newDao('TokenDao'); $tokenDao->setUserapiId($userapiDao->getKey()); $tokenDao->setToken($token); $tokenDao->setExpirationDate(date("c", time() + $userapiDao->getTokenExpirationTime() * 60)); - $tokenModel = MidasLoader::loadModel('Token', 'api'); + $tokenModel = MidasLoader::loadModel('Token'); $tokenModel->save($tokenDao); // We do some cleanup of all the other keys that have expired @@ -165,14 +165,14 @@ function getUserapiFromToken($token) $sql = $this->database->select() ->setIntegrityCheck(false) - ->from(array('u' => 'api_userapi')) - ->join(array('t' => 'api_token'), + ->from(array('u' => 'userapi')) + ->join(array('t' => 'token'), ' u.userapi_id = t.userapi_id', array() ) ->where('t.expiration_date > ?', $now) ->where('t.token = ?', $token); $row = $this->database->fetchRow($sql); - return $this->initDao('Userapi', $row, 'api'); + return $this->initDao('Userapi', $row); } /** Get the user's keys */ @@ -186,7 +186,7 @@ function getByUser($userDao) $return = array(); foreach($rowset as $row) { - $return[] = $this->initDao('Userapi', $row, 'api'); + $return[] = $this->initDao('Userapi', $row); } return $return; } diff --git a/core/tests/databaseDataset/default.xml b/core/tests/databaseDataset/default.xml index 94f9ff425..73321bfb3 100644 --- a/core/tests/databaseDataset/default.xml +++ b/core/tests/databaseDataset/default.xml @@ -178,9 +178,10 @@ - + + diff --git a/core/tests/databaseDataset/userapi.xml b/core/tests/databaseDataset/userapi.xml new file mode 100644 index 000000000..0ec6c63fa --- /dev/null +++ b/core/tests/databaseDataset/userapi.xml @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/core/tests/models/base/CMakeLists.txt b/core/tests/models/base/CMakeLists.txt index 86da0ec6c..637862672 100644 --- a/core/tests/models/base/CMakeLists.txt +++ b/core/tests/models/base/CMakeLists.txt @@ -12,4 +12,3 @@ add_midas_test( ItempolicygroupModel ItempolicygroupModelTest.php ) add_midas_test( ItempolicyuserModel ItempolicyuserModelTest.php ) add_midas_test( MetadataModel MetadataModelTest.php ) add_midas_test( TreeIndices TreeIndicesTest.php ) -add_midas_test( UserModel UserModelTest.php ) diff --git a/core/tests/models/base/UserModelTest.php b/core/tests/models/base/UserModelTest.php deleted file mode 100644 index 842e50ec0..000000000 --- a/core/tests/models/base/UserModelTest.php +++ /dev/null @@ -1,59 +0,0 @@ -setupDatabase(array()); - $this->_models = array('User'); - $this->_daos = array('User'); - parent::setUp(); - } - - /** testGetUserCommunities*/ - public function testGetUserCommunities() - { - $communitiesFile = $this->loadData('Community', 'default'); - - $usersFile = $this->loadData('User', 'default'); - $userDao = $this->User->load($usersFile[0]->getKey()); - $communityDaos = $this->User->getUserCommunities($userDao); - if(!in_array($communitiesFile[0], $communityDaos, false)) - { - $this->fail('Unable to match community'); - } - } - - /** testGetUserCommunitiesException*/ - public function testGetUserCommunitiesException() - { - try - { - $communityDaos = $this->User->getUserCommunities('test'); - } - catch(Exception $expected) - { - return; - } - $this->fail('An expected exception has not been raised.'); - } - } diff --git a/modules/api/AppController.php b/modules/api/AppController.php index d7e868017..dff323667 100644 --- a/modules/api/AppController.php +++ b/modules/api/AppController.php @@ -22,11 +22,5 @@ class Api_AppController extends MIDAS_GlobalModule { public $moduleName = 'api'; - - /** - * Api_Userapi Model - * @var Api_UserapiModelBase - */ - var $Api_Userapi; } //end class ?> \ No newline at end of file diff --git a/modules/api/Notification.php b/modules/api/Notification.php index 954cd7e20..e44e20fb9 100644 --- a/modules/api/Notification.php +++ b/modules/api/Notification.php @@ -24,7 +24,7 @@ class Api_Notification extends ApiEnabled_Notification { public $moduleName = 'api'; - public $_moduleComponents = array('Api', 'Authentication'); + public $_moduleComponents = array('Api'); public $_models = array('User'); /** init notification process*/ @@ -55,7 +55,7 @@ public function setDefaultWebApiKey($params) { throw new Zend_Exception('Error: userDao parameter required'); } - $userApiModel = MidasLoader::loadModel('Userapi', 'api'); + $userApiModel = MidasLoader::loadModel('Userapi'); $userApiModel->createDefaultApiKey($params['userDao']); } @@ -69,7 +69,7 @@ public function handleUserDeleted($params) { throw new Zend_Exception('Error: userDao parameter required'); } - $userApiModel = MidasLoader::loadModel('Userapi', 'api'); + $userApiModel = MidasLoader::loadModel('Userapi'); $apiKeys = $userApiModel->getByUser($params['userDao']); foreach($apiKeys as $apiKey) diff --git a/modules/api/controllers/ConfigController.php b/modules/api/controllers/ConfigController.php index 7435f6893..21742baad 100644 --- a/modules/api/controllers/ConfigController.php +++ b/modules/api/controllers/ConfigController.php @@ -21,10 +21,9 @@ /** api config controller */ class Api_ConfigController extends Api_AppController { - public $_models = array('User'); + public $_models = array('User', 'Userapi'); public $_moduleForms = array('Config'); public $_components = array('Utility', 'Date'); - public $_moduleModels = array('Userapi'); /** * Configuration action for a user's api keys @@ -60,7 +59,7 @@ function usertabAction() $this->disableView(); $applicationName = $this->_getParam('appplication_name'); $tokenExperiationTime = $this->_getParam('expiration'); - $userapiDao = $this->Api_Userapi->createKey($user, $applicationName, $tokenExperiationTime); + $userapiDao = $this->Userapi->createKey($user, $applicationName, $tokenExperiationTime); if($userapiDao != false) { echo JsonComponent::encode(array(true, $this->t('Changes saved'))); @@ -74,11 +73,11 @@ function usertabAction() { $this->disableView(); $element = $this->_getParam('element'); - $userapiDao = $this->Api_Userapi->load($element); + $userapiDao = $this->Userapi->load($element); // Make sure the key belongs to the user if($userapiDao != false && ($userapiDao->getUserId() == $userId || $this->userSession->Dao->isAdmin())) { - $this->Api_Userapi->delete($userapiDao); + $this->Userapi->delete($userapiDao); echo JsonComponent::encode(array(true, $this->t('Changes saved'))); } else @@ -89,7 +88,7 @@ function usertabAction() // List the previously generated API keys $apikeys = array(); - $userapiDaos = $this->Api_Userapi->getByUser($user); + $userapiDaos = $this->Userapi->getByUser($user); $this->view->userapiDaos = $userapiDaos; $this->view->user = $user; } diff --git a/modules/api/controllers/components/ApiComponent.php b/modules/api/controllers/components/ApiComponent.php index 42b8cbc9f..740b7a4f3 100644 --- a/modules/api/controllers/components/ApiComponent.php +++ b/modules/api/controllers/components/ApiComponent.php @@ -62,24 +62,15 @@ private function _renameParamKey(&$args, $oldKey, $newKey, $oldKeyRequired = tru /** Return the user dao */ private function _getUser($args) { - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); return $authComponent->getUser($args, $this->userSession->Dao); } /** Return the user dao */ - private function _callCoreApiMethod($args, $coreApiMethod, $hasReturn = true, $needAuth = true) + private function _callCoreApiMethod($args, $coreApiMethod, $hasReturn = true) { - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); $ApiComponent = MidasLoader::loadComponent('Api'); - if($needAuth) - { - $userDao = $authComponent->getUser($args, $this->userSession->Dao); - $rtn = $ApiComponent->$coreApiMethod($args, $userDao); - } - else - { - $rtn = $ApiComponent->$coreApiMethod($args); - } + $rtn = $ApiComponent->$coreApiMethod($args); if($hasReturn) { return $rtn; @@ -153,8 +144,8 @@ function login($args) $email = $args['email']; $appname = $args['appname']; $apikey = $args['apikey']; - $Api_Userapi = MidasLoader::loadModel('Userapi', 'api'); - $tokenDao = $Api_Userapi->getToken($email, $apikey, $appname); + $Userapi = MidasLoader::loadModel('Userapi'); + $tokenDao = $Userapi->getToken($email, $apikey, $appname); if(empty($tokenDao)) { throw new Exception('Unable to authenticate. Please check credentials.', MIDAS_INVALID_PARAMETER); @@ -1225,7 +1216,7 @@ function userApikeyDefault($args) } $userModel = MidasLoader::loadModel('User'); - $userApiModel = MidasLoader::loadModel('Userapi', 'api'); + $userApiModel = MidasLoader::loadModel('Userapi'); if(!$authModule) { $userDao = $userModel->getByEmail($email); @@ -1258,7 +1249,7 @@ function userApikeyDefault($args) */ function userList($args) { - return $this->_callCoreApiMethod($args, 'userList', true, false); + return $this->_callCoreApiMethod($args, 'userList'); } /** @@ -1272,7 +1263,7 @@ function userList($args) function userGet($args) { $this->_renameParamKey($args, 'user_id', 'id', false); - return $this->_callCoreApiMethod($args, 'userGet', true, false); + return $this->_callCoreApiMethod($args, 'userGet'); } /** diff --git a/modules/api/database/InstallScript.php b/modules/api/database/InstallScript.php deleted file mode 100644 index ccf64099b..000000000 --- a/modules/api/database/InstallScript.php +++ /dev/null @@ -1,53 +0,0 @@ -getAll(false, 100, 'admin'); - foreach($users as $user) - { - $userapiModel->createDefaultApiKey($user); - } - } - } - -?> diff --git a/modules/api/database/mysql/1.0.0.sql b/modules/api/database/mysql/1.0.0.sql deleted file mode 100644 index 68f58644c..000000000 --- a/modules/api/database/mysql/1.0.0.sql +++ /dev/null @@ -1,19 +0,0 @@ - - -CREATE TABLE IF NOT EXISTS `api_userapi` ( - `userapi_id` bigint(20) NOT NULL AUTO_INCREMENT, - `user_id` bigint(20) NOT NULL, - `apikey` varchar(40) NOT NULL, - `application_name` varchar(256) NOT NULL, - `token_expiration_time` int(11) NOT NULL, - `creation_date` timestamp NULL DEFAULT NULL , - PRIMARY KEY (`userapi_id`) -) DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS api_token ( - token_id bigint(20) NOT NULL AUTO_INCREMENT, - userapi_id bigint(20) NOT NULL, - token varchar(40) NOT NULL, - expiration_date timestamp NULL DEFAULT NULL , - PRIMARY KEY (`token_id`) -) DEFAULT CHARSET=utf8; diff --git a/modules/api/database/pgsql/1.0.0.sql b/modules/api/database/pgsql/1.0.0.sql deleted file mode 100644 index 238436d49..000000000 --- a/modules/api/database/pgsql/1.0.0.sql +++ /dev/null @@ -1,18 +0,0 @@ -DROP TABLE IF EXISTS api_userapi; -DROP TABLE IF EXISTS api_token; - -CREATE TABLE api_userapi ( - userapi_id serial PRIMARY KEY, - user_id bigint NOT NULL, - apikey character varying(40) NOT NULL, - application_name character varying(256) NOT NULL, - token_expiration_time integer NOT NULL, - creation_date timestamp without time zone -); - -CREATE TABLE api_token ( - token_id serial PRIMARY KEY, - userapi_id bigint NOT NULL, - token character varying(40) NOT NULL, - expiration_date timestamp without time zone -); diff --git a/modules/api/models/AppDao.php b/modules/api/models/AppDao.php deleted file mode 100644 index 69f550d6d..000000000 --- a/modules/api/models/AppDao.php +++ /dev/null @@ -1,27 +0,0 @@ - diff --git a/modules/api/models/AppModel.php b/modules/api/models/AppModel.php deleted file mode 100644 index 80617a706..000000000 --- a/modules/api/models/AppModel.php +++ /dev/null @@ -1,26 +0,0 @@ - diff --git a/modules/api/tests/CMakeLists.txt b/modules/api/tests/CMakeLists.txt index 4c4108e60..5bcee50f2 100644 --- a/modules/api/tests/CMakeLists.txt +++ b/modules/api/tests/CMakeLists.txt @@ -1,10 +1,7 @@ add_subdirectory( controllers ) -add_subdirectory( models ) # Style add_midas_style_test( StyleApiControllers ${CMAKE_SOURCE_DIR}/modules/api/controllers ) -add_midas_style_test( StyleApiModels ${CMAKE_SOURCE_DIR}/modules/api/models ) add_midas_style_test( StyleTestsApiControllers ${CMAKE_SOURCE_DIR}/modules/api/tests/controllers ) -add_midas_style_test( StyleTestsApiModels ${CMAKE_SOURCE_DIR}/modules/api/tests/models ) add_midas_style_test(StyleApiEnabledNotification ${CMAKE_SOURCE_DIR}/modules/api/library/APIEnabledNotification.php) diff --git a/modules/api/tests/controllers/ApiCallMethodsTest.php b/modules/api/tests/controllers/ApiCallMethodsTest.php index e714e4f68..8fd3f587d 100644 --- a/modules/api/tests/controllers/ApiCallMethodsTest.php +++ b/modules/api/tests/controllers/ApiCallMethodsTest.php @@ -24,8 +24,7 @@ class ApiCallMethodsTest extends ControllerTestCase /** set up tests */ public function setUp() { - $this->setupDatabase(array('default')); //core dataset - $this->setupDatabase(array('default'), 'api'); // module dataset + $this->setupDatabase(array('default', 'userapi')); //core dataset $this->enabledModules = array('api'); $this->_models = array('User', 'Folder', 'Item', 'ItemRevision', 'Assetstore', 'Bitstream', 'Itempolicyuser'); $this->_daos = array(); @@ -66,7 +65,7 @@ protected function _assertStatusFail($resp, $code, $message = false) /** helper function to login as the passed in user. */ protected function _loginAsUser($userDao) { - $userApiModel = MidasLoader::loadModel('Userapi', 'api'); + $userApiModel = MidasLoader::loadModel('Userapi'); $userApiModel->createDefaultApiKey($userDao); $apiKey = $userApiModel->getByAppAndUser('Default', $userDao)->getApikey(); diff --git a/modules/api/tests/controllers/ApiCallUserMethodsTest.php b/modules/api/tests/controllers/ApiCallUserMethodsTest.php index a5fb4cbcc..73e384da6 100644 --- a/modules/api/tests/controllers/ApiCallUserMethodsTest.php +++ b/modules/api/tests/controllers/ApiCallUserMethodsTest.php @@ -62,7 +62,7 @@ public function testUserApikeyDefault() $userDao = $this->User->load($usersFile[0]->getKey()); // Expected API key - $userApiModel = MidasLoader::loadModel('Userapi', 'api'); + $userApiModel = MidasLoader::loadModel('Userapi'); $userApiModel->createDefaultApiKey($userDao); $apiKey = $userApiModel->getByAppAndUser('Default', $userDao)->getApikey(); diff --git a/modules/api/tests/controllers/ApiKeyControllerTest.php b/modules/api/tests/controllers/ApiKeyControllerTest.php index ecb581eb6..64fb9457e 100644 --- a/modules/api/tests/controllers/ApiKeyControllerTest.php +++ b/modules/api/tests/controllers/ApiKeyControllerTest.php @@ -24,8 +24,7 @@ class ApiKeyControllerTest extends ControllerTestCase /** set up tests */ public function setUp() { - $this->setupDatabase(array('default')); //core dataset - $this->setupDatabase(array('default'), 'api'); // module dataset + $this->setupDatabase(array('default', 'userapi')); //core dataset $this->enabledModules = array('api'); $this->_models = array('User'); $this->_daos = array('User'); @@ -41,7 +40,7 @@ public function testChangePasswordChangesDefaultApiKey() $this->User->changePassword($userDao, 'test'); $this->User->save($userDao); - $userApiModel = MidasLoader::loadModel('Userapi', 'api'); + $userApiModel = MidasLoader::loadModel('Userapi'); $userApiModel->createDefaultApiKey($userDao); $preKey = $userApiModel->getByAppAndUser('Default', $userDao)->getApikey(); $this->assertEquals(strlen($preKey), 32); @@ -74,27 +73,9 @@ public function testNewUserGetsDefaultApiKey() $this->dispatchUrI($page); // Check that their default api key was created - $userApiModel = MidasLoader::loadModel('Userapi', 'api'); + $userApiModel = MidasLoader::loadModel('Userapi'); $key = $userApiModel->getByAppAndEmail('Default', 'some.user@server.com')->getApikey(); $this->assertNotEmpty($key); } - /** - * Make sure that existing users get a default api key - * created for them when the web api module is installed - */ - public function testExistingUsersGetDefaultKeysOnInstall() - { - $userApiModel = MidasLoader::loadModel('Userapi', 'api'); - $userApiDao = $userApiModel->getByAppAndEmail('Default', 'user1@user1.com'); - - $this->assertTrue($userApiDao == false, 'Key should not exist before install'); - $utilityComponent = MidasLoader::loadComponent('Utility'); - $utilityComponent->installModule('api'); - - $userApiDao = $userApiModel->getByAppAndEmail('Default', 'user1@user1.com'); - - $this->assertTrue($userApiDao != false, 'Api key was not created for existing user'); - $this->assertNotEmpty($userApiDao->getApikey()); - } } diff --git a/modules/api/tests/databaseDataset/default.xml b/modules/api/tests/databaseDataset/default.xml deleted file mode 100644 index 8ffdc35c3..000000000 --- a/modules/api/tests/databaseDataset/default.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - diff --git a/modules/api/tests/models/CMakeLists.txt b/modules/api/tests/models/CMakeLists.txt deleted file mode 100644 index 8775d2733..000000000 --- a/modules/api/tests/models/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_subdirectory( base ) diff --git a/modules/api/tests/models/base/CMakeLists.txt b/modules/api/tests/models/base/CMakeLists.txt deleted file mode 100644 index 86a9f1485..000000000 --- a/modules/api/tests/models/base/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_midas_test( ApiUserApiModel UserApiModelTest.php ) diff --git a/modules/api/tests/models/base/UserApiModelTest.php b/modules/api/tests/models/base/UserApiModelTest.php deleted file mode 100644 index d9b74706a..000000000 --- a/modules/api/tests/models/base/UserApiModelTest.php +++ /dev/null @@ -1,47 +0,0 @@ -setupDatabase(array('default')); //core dataset - $this->setupDatabase(array('default'), 'api'); // module dataset - $this->enabledModules = array('api'); - parent::setUp(); - } - - /** Test that UserapiModel::createDefaultApiKey works */ - public function testDefaultApiKeyModel() - { - $userApiModel = MidasLoader::loadModel('Userapi', 'api'); - $userModel = MidasLoader::loadModel('User'); - - $userDao = MidasLoader::newDao('UserDao'); - $userDao->setUserId(1); - $userDao->setEmail('user1@user1.com'); - - $userApiModel->createDefaultApiKey($userDao); - - $dao = $userApiModel->getByAppAndEmail('Default', 'user1@user1.com'); - $this->assertTrue($dao instanceof Api_UserapiDao); - } - } diff --git a/modules/batchmake/controllers/components/ApiComponent.php b/modules/batchmake/controllers/components/ApiComponent.php index 1d8495a83..38ce8b4ac 100644 --- a/modules/batchmake/controllers/components/ApiComponent.php +++ b/modules/batchmake/controllers/components/ApiComponent.php @@ -43,7 +43,7 @@ private function _checkKeys($keys, $values) /** Return the user dao */ private function _getUser($args) { - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); return $authComponent->getUser($args, Zend_Registry::get('userSession')->Dao); } diff --git a/modules/batchmake/controllers/components/ExecuteComponent.php b/modules/batchmake/controllers/components/ExecuteComponent.php index 3afafb080..a540f44b5 100644 --- a/modules/batchmake/controllers/components/ExecuteComponent.php +++ b/modules/batchmake/controllers/components/ExecuteComponent.php @@ -110,7 +110,7 @@ public function generatePythonConfigParams($taskDao, $userDao, $configPrefix = n $email = $userDao->getEmail(); // get an api key for this user $modelLoad = new MIDAS_ModelLoader(); - $userApiModel = $modelLoad->loadModel('Userapi', 'api'); + $userApiModel = $modelLoad->loadModel('Userapi'); $userApiDao = $userApiModel->getByAppAndUser('Default', $userDao); if(!$userApiDao) { diff --git a/modules/batchmake/tests/controllers/components/ExecuteComponentTest.php b/modules/batchmake/tests/controllers/components/ExecuteComponentTest.php index e96a89826..e836b0738 100644 --- a/modules/batchmake/tests/controllers/components/ExecuteComponentTest.php +++ b/modules/batchmake/tests/controllers/components/ExecuteComponentTest.php @@ -168,7 +168,7 @@ public function testGeneratePythonConfigParams() // need to falisfy a HTTP_HOST $_SERVER['HTTP_HOST'] = 'localhost'; // need to create a web api-key for the user - $userapiModel = MidasLoader::loadModel('Userapi', 'api'); + $userapiModel = MidasLoader::loadModel('Userapi'); $userapiModel->createDefaultApiKey($userDao); $this->executeComponent->generatePythonConfigParams($taskDao, $userDao); diff --git a/modules/dicomextractor/controllers/components/ApiComponent.php b/modules/dicomextractor/controllers/components/ApiComponent.php index 6e2f01925..876ecdf0d 100644 --- a/modules/dicomextractor/controllers/components/ApiComponent.php +++ b/modules/dicomextractor/controllers/components/ApiComponent.php @@ -39,7 +39,7 @@ function extract($args) $itemModel = MidasLoader::loadModel("Item"); $itemRevisionModel = MidasLoader::loadModel("ItemRevision"); - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $itemDao = $itemModel->load($args['item']); $userDao = $authComponent->getUser($args, Zend_Registry::get('userSession')->Dao); diff --git a/modules/dicomserver/controllers/components/ApiComponent.php b/modules/dicomserver/controllers/components/ApiComponent.php index 4c47a8eb1..ef9e38634 100644 --- a/modules/dicomserver/controllers/components/ApiComponent.php +++ b/modules/dicomserver/controllers/components/ApiComponent.php @@ -80,7 +80,7 @@ function start($args) else { $user_email = $userDao->getEmail(); - $userApiModel = MidasLoader::loadModel('Userapi', 'api'); + $userApiModel = MidasLoader::loadModel('Userapi'); $userApiDao = $userApiModel->getByAppAndUser('Default', $userDao); if(!$userApiDao) { @@ -363,7 +363,7 @@ function register($args) $itemModel = MidasLoader::loadModel("Item"); $itemRevisionModel = MidasLoader::loadModel("ItemRevision"); - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $itemDao = $itemModel->load($args['item']); $userDao = $authComponent->getUser($args, Zend_Registry::get('userSession')->Dao); @@ -390,7 +390,7 @@ function registrationStatus($args) $this->_validateParams($args, array('item')); $itemModel = MidasLoader::loadModel("Item"); - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $itemDao = $itemModel->load($args['item']); $userDao = $authComponent->getUser($args, Zend_Registry::get('userSession')->Dao); diff --git a/modules/mfa/controllers/components/ApiComponent.php b/modules/mfa/controllers/components/ApiComponent.php index 6a39e7e1b..0bd4c339e 100644 --- a/modules/mfa/controllers/components/ApiComponent.php +++ b/modules/mfa/controllers/components/ApiComponent.php @@ -47,7 +47,7 @@ public function otpLogin($params) $modelLoader = new MIDAS_ModelLoader(); $tempTokenModel = $modelLoader->loadModel('Apitoken', 'mfa'); $otpDeviceModel = $modelLoader->loadModel('Otpdevice', 'mfa'); - $apiTokenModel = $modelLoader->loadModel('Token', 'api'); + $apiTokenModel = $modelLoader->loadModel('Token'); $tempToken = $tempTokenModel->load($params['mfaTokenId']); if(!$tempToken) diff --git a/modules/oai/AppController.php b/modules/oai/AppController.php index 8e631105b..ce800cd9d 100644 --- a/modules/oai/AppController.php +++ b/modules/oai/AppController.php @@ -21,12 +21,5 @@ class Oai_AppController extends MIDAS_GlobalModule { public $moduleName='oai'; - - /**completion eclipse*/ - /** - * Api_Userapi Model - * @var Api_UserapiModelBase - */ - var $Api_Userapi; } //end class ?> \ No newline at end of file diff --git a/modules/packages/controllers/components/ApiComponent.php b/modules/packages/controllers/components/ApiComponent.php index baa19e398..7fc56913c 100644 --- a/modules/packages/controllers/components/ApiComponent.php +++ b/modules/packages/controllers/components/ApiComponent.php @@ -33,7 +33,7 @@ private function _checkKeys($keys, $values) */ private function _getUser($args) { - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); return $authComponent->getUser($args, null); } diff --git a/modules/remoteprocessing/controllers/components/ApiComponent.php b/modules/remoteprocessing/controllers/components/ApiComponent.php index 00583aec7..bda5ec7ed 100644 --- a/modules/remoteprocessing/controllers/components/ApiComponent.php +++ b/modules/remoteprocessing/controllers/components/ApiComponent.php @@ -61,7 +61,7 @@ public function registerserver($args) $userModel = MidasLoader::loadModel('User'); $groupModel = MidasLoader::loadModel('Group'); - $Api_UserapiModel = MidasLoader::loadModel('Userapi', 'api'); + $UserapiModel = MidasLoader::loadModel('Userapi'); if(empty($apikey)) { if(empty($os)) @@ -76,10 +76,10 @@ public function registerserver($args) $serverGroup = $groupModel->load(MIDAS_GROUP_SERVER_KEY); $groupModel->addUser($serverGroup, $userDao); - $userapiDao = $Api_UserapiModel->getByAppAndUser('remoteprocessing', $userDao); + $userapiDao = $UserapiModel->getByAppAndUser('remoteprocessing', $userDao); if($userapiDao == false) { - $userapiDao = $Api_UserapiModel->createKey($userDao, 'remoteprocessing', '100'); + $userapiDao = $UserapiModel->createKey($userDao, 'remoteprocessing', '100'); } $apikey = $userapiDao->getApikey(); @@ -87,7 +87,7 @@ public function registerserver($args) Zend_Registry::get('notifier')->callback('CALLBACK_REMOTEPROCESSING_CREATESERVER', $userDao->toArray()); } - $tokenDao = $Api_UserapiModel->getToken($email, $apikey, 'remoteprocessing'); + $tokenDao = $UserapiModel->getToken($email, $apikey, 'remoteprocessing'); if(empty($tokenDao)) { throw new Exception('Unable to authenticate. Please check credentials.', MIDAS_INVALID_PARAMETER); @@ -106,7 +106,7 @@ public function registerserver($args) */ public function keepaliveserver($args) { - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $userDao = $authComponent->getUser($args, Zend_Registry::get('userSession')->Dao); if($userDao == false) { @@ -204,7 +204,7 @@ public function resultsserver($args) throw new Exception('Should be a put request.', MIDAS_INVALID_PARAMETER); } - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $userDao = $authComponent->getUser($args, Zend_Registry::get('userSession')->Dao); if($userDao == false) { diff --git a/modules/sizequota/controllers/components/ApiComponent.php b/modules/sizequota/controllers/components/ApiComponent.php index 20f382003..c6d5087b9 100644 --- a/modules/sizequota/controllers/components/ApiComponent.php +++ b/modules/sizequota/controllers/components/ApiComponent.php @@ -44,7 +44,7 @@ private function _checkKeys($keys, $values) /** Authenticate via token or session */ private function _getUser($args) { - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $default = $this->userSession ? $this->userSession->Dao : null; return $authComponent->getUser($args, $default); } diff --git a/modules/solr/controllers/components/ApiComponent.php b/modules/solr/controllers/components/ApiComponent.php index 1c1466893..d7303a228 100644 --- a/modules/solr/controllers/components/ApiComponent.php +++ b/modules/solr/controllers/components/ApiComponent.php @@ -40,7 +40,7 @@ public function searchAdvanced($args) $componentLoader = new MIDAS_ComponentLoader(); $solrComponent = $componentLoader->loadComponent('Solr', 'solr'); - $authComponent = $componentLoader->loadComponent('Authentication', 'api'); + $authComponent = $componentLoader->loadComponent('Authentication'); $userDao = $authComponent->getUser($args, Zend_Registry::get('userSession')->Dao); diff --git a/modules/thumbnailcreator/controllers/components/ApiComponent.php b/modules/thumbnailcreator/controllers/components/ApiComponent.php index 350733462..8a57cb6eb 100644 --- a/modules/thumbnailcreator/controllers/components/ApiComponent.php +++ b/modules/thumbnailcreator/controllers/components/ApiComponent.php @@ -40,7 +40,7 @@ public function createBigThumbnail($args) $this->_checkKeys(array('itemId', 'bitstreamId'), $args); $imComponent = MidasLoader::loadComponent('Imagemagick', 'thumbnailcreator'); - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $userDao = $authComponent->getUser($args, Zend_Registry::get('userSession')->Dao); @@ -109,7 +109,7 @@ public function createSmallThumbnail($args) $itemId = $args['itemId']; $imComponent = MidasLoader::loadComponent('Imagemagick', 'thumbnailcreator'); - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $userDao = $authComponent->getUser($args, Zend_Registry::get('userSession')->Dao); diff --git a/modules/tracker/controllers/components/ApiComponent.php b/modules/tracker/controllers/components/ApiComponent.php index 7077f8f3f..2b8781dc4 100644 --- a/modules/tracker/controllers/components/ApiComponent.php +++ b/modules/tracker/controllers/components/ApiComponent.php @@ -32,7 +32,7 @@ private function _checkKeys($keys, $values) */ private function _getUser($args) { - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); return $authComponent->getUser($args, $this->userSession->Dao); } diff --git a/modules/validation/controllers/components/ApiComponent.php b/modules/validation/controllers/components/ApiComponent.php index 936057b60..e2c9312dd 100644 --- a/modules/validation/controllers/components/ApiComponent.php +++ b/modules/validation/controllers/components/ApiComponent.php @@ -88,7 +88,7 @@ public function createDashboard($value) { $this->_checkKeys(array('name', 'description'), $value); - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $userDao = $authComponent->getUser($value, Zend_Registry::get('userSession')->Dao); if(!$userDao || !$userDao->isAdmin()) @@ -115,7 +115,7 @@ public function setTestingFolder($value) { $this->_checkKeys(array('dashboard_id', 'folder_id'), $value); - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $userDao = $authComponent->getUser($value, Zend_Registry::get('userSession')->Dao); if(!$userDao || !$userDao->isAdmin()) @@ -148,7 +148,7 @@ public function setTruthFolder($value) { $this->_checkKeys(array('dashboard_id', 'folder_id'), $value); - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $userDao = $authComponent->getUser($value, Zend_Registry::get('userSession')->Dao); if(!$userDao || !$userDao->isAdmin()) @@ -181,7 +181,7 @@ public function setTrainingFolder($value) { $this->_checkKeys(array('dashboard_id', 'folder_id'), $value); - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $userDao = $authComponent->getUser($value, Zend_Registry::get('userSession')->Dao); if(!$userDao || !$userDao->isAdmin()) @@ -214,7 +214,7 @@ public function addResultFolder($value) { $this->_checkKeys(array('dashboard_id', 'folder_id'), $value); - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $userDao = $authComponent->getUser($value, Zend_Registry::get('userSession')->Dao); if(!$userDao) @@ -248,7 +248,7 @@ public function removeResultFolder($value) $this->_checkKeys(array('dashboard_id', 'folder_id'), $value); // Verify that the user is an admin - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $userDao = $authComponent->getUser($value, Zend_Registry::get('userSession')->Dao); if(!$userDao || !$userDao->isAdmin()) @@ -322,7 +322,7 @@ public function setScalarResult($value) $value); // Verify authentication (only admins can set results) - $authComponent = MidasLoader::loadComponent('Authentication', 'api'); + $authComponent = MidasLoader::loadComponent('Authentication'); $userDao = $authComponent->getUser($value, Zend_Registry::get('userSession')->Dao); if(!$userDao || !$userDao->isAdmin()) diff --git a/modules/validation/tests/controllers/ApiComponentControllerTest.php b/modules/validation/tests/controllers/ApiComponentControllerTest.php index 5fb4332c1..44c0d9b2a 100644 --- a/modules/validation/tests/controllers/ApiComponentControllerTest.php +++ b/modules/validation/tests/controllers/ApiComponentControllerTest.php @@ -18,7 +18,6 @@ class ApiControllerTest extends ControllerTestCase public function setUp() { $this->setupDatabase(array('default')); //core dataset - $this->setupDatabase(array('default'), 'api'); // module dataset $this->setupDatabase(array('default'), 'validation'); // module dataset $this->enabledModules = array('api', 'validation'); $this->_models = array('User', 'Folder'); @@ -57,7 +56,7 @@ private function _loginUsingApiKey() $usersFile = $this->loadData('User', 'default'); $userDao = $this->User->load($usersFile[0]->getKey()); - $userApiModel = MidasLoader::loadModel('Userapi', 'api'); + $userApiModel = MidasLoader::loadModel('Userapi'); $userApiModel->createDefaultApiKey($userDao); $apiKey = $userApiModel->getByAppAndUser('Default', $userDao)->getApikey(); @@ -85,7 +84,7 @@ private function _loginUsingApiKeyAsAdmin() $userDao->setAdmin(1); $this->User->save($userDao); - $userApiModel = MidasLoader::loadModel('Userapi', 'api'); + $userApiModel = MidasLoader::loadModel('Userapi'); $userApiModel->createDefaultApiKey($userDao); $apiKey = $userApiModel->getByAppAndUser('Default', $userDao)->getApikey();