Example #1
0
 private static function getUnvalidated(Application $app, $home = false)
 {
     $terms = [];
     foreach ($app->getDataboxes() as $databox) {
         try {
             $cgus = $databox->get_cgus();
             if (!isset($cgus[$app['locale']])) {
                 throw new Exception('No CGus for this locale');
             }
             $name = $databox->get_label($app['locale']);
             $update = $cgus[$app['locale']]['updated_on'];
             $value = $cgus[$app['locale']]['value'];
             $userValidation = true;
             if (!$home) {
                 if (!$app->getAclForUser($app->getAuthenticatedUser())->has_access_to_sbas($databox->get_sbas_id())) {
                     continue;
                 }
                 $userValidation = $app['settings']->getUserSetting($app->getAuthenticatedUser(), 'terms_of_use_' . $databox->get_sbas_id()) !== $update && trim($value) !== '';
             }
             if ($userValidation) {
                 $terms[$name] = ['sbas_id' => $databox->get_sbas_id(), 'terms' => $value, 'date' => $update];
             }
         } catch (\Exception $e) {
         }
     }
     return $terms;
 }
Example #2
0
 /**
  * Return an array of base_id which are granted, with
  * optionnal filter by rights
  *
  * @param  array      $rights
  * @param  array|null $sbas_ids Optionnal sbas_id to restrict the query on
  * @return collection[] An array of collection
  */
 public function get_granted_base(array $rights = [], array $sbas_ids = null)
 {
     $this->load_rights_bas();
     $ret = [];
     foreach ($this->app->getDataboxes() as $databox) {
         if ($sbas_ids && !in_array($databox->get_sbas_id(), $sbas_ids)) {
             continue;
         }
         foreach ($databox->get_collections() as $collection) {
             $continue = false;
             if (!array_key_exists($collection->get_base_id(), $this->_rights_bas)) {
                 continue;
             }
             $base_id = $collection->get_base_id();
             foreach ($rights as $right) {
                 if (!$this->has_right_on_base($base_id, $right)) {
                     $continue = true;
                     break;
                 }
             }
             if ($continue || $this->is_limited($base_id)) {
                 continue;
             }
             try {
                 $ret[$base_id] = collection::get_from_base_id($this->app, $base_id);
             } catch (\Exception $e) {
             }
         }
     }
     return $ret;
 }
Example #3
0
 public function testInstall()
 {
     $app = new Application(Application::ENV_TEST);
     \phrasea::reset_sbasDatas($app['phraseanet.appbox']);
     \phrasea::reset_baseDatas($app['phraseanet.appbox']);
     $app->bindRoutes();
     $parser = new Parser();
     $config = $parser->parse(file_get_contents(__DIR__ . '/../../../../../config/configuration.yml'));
     $credentials = $config['main']['database'];
     $configFile = __DIR__ . '/configuration.yml';
     $compiledFile = __DIR__ . '/configuration.yml.php';
     @unlink($configFile);
     @unlink($compiledFile);
     $app['configuration.store'] = $app->share(function () use($configFile, $compiledFile) {
         return new Configuration(new Yaml(), new Compiler(), $configFile, $compiledFile, true);
     });
     $app['conf'] = $app->share(function () use($app) {
         return new PropertyAccess($app['configuration.store']);
     });
     $app['phraseanet.appbox'] = $app->share(function () use($app) {
         return new \appbox($app);
     });
     $abInfo = ['host' => $credentials['host'], 'port' => $credentials['port'], 'user' => $credentials['user'], 'password' => $credentials['password'], 'dbname' => 'ab_setup_test'];
     $abConn = $app['dbal.provider']($abInfo);
     $dbConn = $app['dbal.provider'](['host' => $credentials['host'], 'port' => $credentials['port'], 'user' => $credentials['user'], 'password' => $credentials['password'], 'dbname' => 'db_setup_test']);
     $key = $app['orm.add']($abInfo);
     $app['orm.ems.default'] = $key;
     $dataPath = __DIR__ . '/../../../../../datas/';
     $installer = new Installer($app);
     $installer->install(uniqid('admin') . '@example.com', 'sdfsdsd', $abConn, 'http://local.phrasea.test.installer/', $dataPath, $dbConn, 'en');
     $this->assertTrue($app['configuration.store']->isSetup());
     $this->assertTrue($app['phraseanet.configuration-tester']->isUpToDate());
     $databox = current($app->getDataboxes());
     $this->assertContains('<path>' . realpath($dataPath) . '/db_setup_test/subdefs</path>', $databox->get_structure());
     $conf = $app['configuration.store']->getConfig();
     $this->assertArrayHasKey('main', $conf);
     $this->assertArrayHasKey('key', $conf['main']);
     $this->assertGreaterThan(10, strlen($conf['main']['key']));
     @unlink($configFile);
     @unlink($compiledFile);
     $app['connection.pool.manager']->closeAll();
 }
Example #4
0
 public static function bas_labels($base_id, Application $app)
 {
     if (!self::$_bas_labels) {
         try {
             self::$_bas_labels = $app->getApplicationBox()->get_data_from_cache(self::CACHE_BAS_LABELS);
         } catch (\Exception $e) {
             foreach ($app->getDataboxes() as $databox) {
                 foreach ($databox->get_collections() as $collection) {
                     self::$_bas_labels[$collection->get_base_id()] = ['fr' => $collection->get_label('fr'), 'en' => $collection->get_label('en'), 'de' => $collection->get_label('de'), 'nl' => $collection->get_label('nl')];
                 }
             }
             $app->getApplicationBox()->set_data_to_cache(self::$_bas_labels, self::CACHE_BAS_LABELS);
         }
     }
     if (isset(self::$_bas_labels[$base_id]) && isset(self::$_bas_labels[$base_id][$app['locale']])) {
         return self::$_bas_labels[$base_id][$app['locale']];
     }
     return 'Unknown collection';
 }
 /**
  * Gives Bases Rights to User.
  *
  * @param User $user
  */
 public static function giveRightsToUser(Application $app, User $user, $base_ids = null, $force = false)
 {
     $app->getAclForUser($user)->delete_data_from_cache(\ACL::CACHE_GLOBAL_RIGHTS);
     $app->getAclForUser($user)->delete_data_from_cache(databox::CACHE_COLLECTIONS);
     $app->getAclForUser($user)->give_access_to_sbas(array_keys($app->getDataboxes()));
     foreach ($app->getDataboxes() as $databox) {
         $app->getAclForUser($user)->delete_data_from_cache(\ACL::CACHE_RIGHTS_SBAS);
         $rights = ['bas_manage' => '1', 'bas_modify_struct' => '1', 'bas_modif_th' => '1', 'bas_chupub' => '1'];
         $app->getAclForUser($user)->update_rights_to_sbas($databox->get_sbas_id(), $rights);
         foreach ($databox->get_collections() as $collection) {
             if (null !== $base_ids && !in_array($collection->get_base_id(), (array) $base_ids, true)) {
                 continue;
             }
             $base_id = $collection->get_base_id();
             if ($app->getAclForUser($user)->has_access_to_base($base_id) && false === $force) {
                 continue;
             }
             $app->getAclForUser($user)->delete_data_from_cache(\ACL::CACHE_RIGHTS_BAS);
             $app->getAclForUser($user)->give_access_to_base([$base_id]);
             $app->getAclForUser($user)->update_rights_to_base($base_id, ['order_master' => true]);
             $rights = ['canputinalbum' => '1', 'candwnldhd' => '1', 'candwnldsubdef' => '1', 'nowatermark' => '1', 'candwnldpreview' => '1', 'cancmd' => '1', 'canadmin' => '1', 'canreport' => '1', 'canpush' => '1', 'creationdate' => '1', 'canaddrecord' => '1', 'canmodifrecord' => '1', 'candeleterecord' => '1', 'chgstatus' => '1', 'imgtools' => '1', 'manage' => '1', 'modify_struct' => '1', 'bas_modify_struct' => '1'];
             $app->getAclForUser($user)->update_rights_to_base($collection->get_base_id(), $rights);
         }
     }
 }