Перейти к основному содержанию

Ограничения доступа к файлам и управлению

 

WP File download имеет множество инструментов для ограничения видимости файлов и их управления на стороне администратора. Сначала нам нужно провести различие между:

  • Видимость файлов, то есть кто может просматривать и загружать файлы на публичной стороне
  • Управление файлами, то есть кто может добавлять, удалять и редактировать файлы и категории

 

Доступ к файлам и их видимость

С помощью WP File Download вы можете ограничить видимость категорий файлов по WordPress Thing группе пользователей. Откройте категорию файлов и сделайте её приватной, выбрав группу пользователей или отдельного пользователя. Затем нажмите на кнопку Сохранить настройки, и вы're завершили.

 

file-visibility

 

Вы также можете ограничить видимость файла для отдельного файла для нескольких пользователей, чтобы только выбранные могли просматривать файл.

Чтобы использовать эту функцию, вам следует включить Ограничение пользователей опцию из Configuration > Main Setting > Admin tab.

 

file-access-per-user

 

Аналогично, вы можете установить видимость категории для нескольких пользователей. Это означает, что когда параметр Видимость установлен как Приватный, только определённый пользователь может просматривать категорию во фронтенде.

Например, вы можете установить "Author, Dev" пользователей, чтобы просматривать "Default theme category" категорию во фронтенде.

 

category-user-access

 

Ограничение видимости подпапок для конкретных пользователей

В некоторых сценариях администратор может захотеть отобразить Parent папку на фронтенде, используя шорткод или блок WP File Download, при этом гарантируя, что каждый пользователь может видеть только назначенную ему папку.

Например:

Родитель
── Редактор A
── Редактор B

Чтобы достичь этого, выполните следующие шаги:

1. Настройте родительскую папку:

Установите видимость на Приватную, затем отметьте соответствующие роли (например, Администратор, Редактор) чтобы позволить им видеть родительскую папку.

2. Настройте каждую подпапку (например, Editor A):

  • Установите Видимость на Приватный
  • Оставьте все флажки ролей снятыми
  • Под Доступ пользователей опция, выберите конкретного пользователя (например, Editor A)
  • Сохранить настройки

После настройки каждый пользователь сможет видеть и получать доступ только к папке, явно назначенной ему, при этом все остальные папки будут скрыты.

 

single-specific-user-restriction

 

С этого момента, Скачивание файлов и Просмотр файлов опция доступна в каждой пользовательской роли, вы можете ограничить пользователей в скачивании или просмотре на фронтенде по ролям. 

Например: В данном случае Редактор роль, после включения опций, пользователи, которым предоставлена роль Редактор могут скачивать и просматривать файлы. Это будет зависеть от ваших настроек.

 

download-preview-files

 

Настройка управления файлами по роли пользователя WordPress Thing

Управление файлами в WP File Download определяется ролями пользователей WordPress Thing. Вы можете выбрать роли, которые могут выполнять определённые действия. Все пользователи, имеющие выбранные роли, будут иметь одинаковые полномочия по управлению файлами.

Для настройки доступа используйте WP File Download > Configuration > File Access > User Roles вкладку:

 

user-role-files

 

После входа пользователя в систему, он унаследует привилегию своей группы для управления файлами.

 

Управление личным файловым репозиторием пользователя

WP File Download позволяет вам дать вашим WordPress Thing пользователям возможность управлять их собственным files' репозиторием, потому что вы можете определить, как администратор, кто владеет категорией файлов.

Первый шаг — настроить роль пользователя только "Редактировать собственную категорию". Отключите "Редактировать категорию" опцию, потому что пользователи не должны иметь возможность редактировать все существующие категории в этом примере, а только свои собственные категории. Другие привилегии не обязательны, в зависимости от того, что вы хотите разрешить.

 

собственная-категория-пользователя

 

Затем вы можете создать категорию файлов для ваших пользователей, или если "Создать категорию" включена в их роли пользователя, они смогут сделать это сами. Затем, из созданной вами категории файлов, вы можете определить, кто является владельцем категории и, следовательно, кто сможет её редактировать.

Вы можете назначить одного владельца‑пользователя на категорию.

 

определить-владельца-категории

 

Примечание: настройка владельца категории должна быть активирована в глобальной конфигурации плагина

Кроме того, пользователь может предоставить разрешение для категории или файла, если параметр "Edit permissions settings" включён в его роли пользователя. Это означает, что он может выбрать пользователя для категории или нескольких пользователей для файла, как в предыдущем шаге.

 

edit-permission-setting

 

Ограничение загрузки для ролей

Чтобы ограничить время загрузки и продолжительность загрузки файлов пользователями, вам следует перейти к WP File download конфигурация > Доступ к файлам > Ограничение загрузки. Затем включите Ограничение загрузки опцию.

 

download-limit-tab

 

Отсюда доступно 2 варианта: Ограничение загрузки и Ограничение по времени для каждого Роли на сайте. Ограничение загрузки должно быть числом, а Ограничение по времени опция может быть установлена в часах, днях, ...

 

time-limit

 

  • Лимит загрузки: Если заполнено, это ограничит количество загрузок каждого файла для каждого пользователя в этой группе пользователей
  • Лимит времени: Если заполнено, это ограничит период, в течение которого файлы доступны каждому пользователю в этой группе пользователей

Наконец, не забудьте нажать на Сохранить кнопку.

 

Приватные категории

Чтобы создать категории для уже зарегистрированных на вашем сайте пользователей, перейдите к настройкам плагина в разделе Доступ к файлам > Приватные категории. Включите Автоматическую приватную категорию для каждого пользователя опцию и выберите корневую категорию, в которой будут создаваться пользовательские категории. Выберите роли пользователей, для которых вы хотите создать категории (можно выбрать все роли или конкретные), затем нажмите Создать категории кнопку, чтобы вручную создать папки для существующих пользователей.

 

private-category-users

 

Как только эта функция будет включена, система автоматически создаст соответствующую личную категорию каждый раз, когда на вашем сайте регистрируется новый пользователь.

Чтобы пользователи могли получить доступ к своим личным файлам, вставьте шорткод выбранной вами корневой категории (например, "Bills" категория в данном случае) в любую запись или страницу. Когда пользователи откроют эту страницу, они увидят только свои файлы и категории — гарантируя, что каждый пользователь имеет доступ исключительно к своему личному контенту.

 

Примечание: функция автоматического создания категорий работает только для новых пользователей во время процесса регистрации. Существующим пользователям потребуется вручную настроить категории, используя этот метод.
Обратите внимание, что эта функция не поддерживает облачные категории и применяется исключительно к ограничениям доступа на фронтенде.

 

Видео доступа к загрузке файлов WordPress Thing:

Duplicate entry '49263e4176ff53f5ff1efff72d6df4fb-ru' for key 'bk24_linguise_urls.hash_translation' (500 Whoops, looks like something went wrong.)

mysqli_sql_exception

HTTP 500 Whoops, looks like something went wrong.

Duplicate entry '49263e4176ff53f5ff1efff72d6df4fb-ru' for key 'bk24_linguise_urls.hash_translation'

Exception

mysqli_sql_exception

Show exception properties
mysqli_sql_exception {#897
  #sqlstate: "23000"
}
  1. foreach ($urls as $translation => $source) {
  2. $elements[] = '("'.mysqli_real_escape_string($this->_database, Request::getInstance()->getLanguage()).'", "'.mysqli_real_escape_string($this->_database, $source).'", "'.mysqli_real_escape_string($this->_database, $translation).'", "'.md5($source).'", "'.md5($translation).'")';
  3. }
  4. $query .= implode(',', $elements);
  5. $query .= ' ON DUPLICATE KEY UPDATE source=VALUES(source), translation=VALUES(translation), hash_source=VALUES(hash_source), hash_translation=VALUES(hash_translation)';
  6. $this->_database->query($query);
  7. }
  8. public function removeUrls($urls)
  9. {
  10. $query = 'DELETE FROM '.mysqli_real_escape_string($this->_database, $this->_database_table_urls).' WHERE (hash_source) IN ';
  1. foreach ($urls as $translation => $source) {
  2. $elements[] = '("'.mysqli_real_escape_string($this->_database, Request::getInstance()->getLanguage()).'", "'.mysqli_real_escape_string($this->_database, $source).'", "'.mysqli_real_escape_string($this->_database, $translation).'", "'.md5($source).'", "'.md5($translation).'")';
  3. }
  4. $query .= implode(',', $elements);
  5. $query .= ' ON DUPLICATE KEY UPDATE source=VALUES(source), translation=VALUES(translation), hash_source=VALUES(hash_source), hash_translation=VALUES(hash_translation)';
  6. $this->_database->query($query);
  7. }
  8. public function removeUrls($urls)
  9. {
  10. $query = 'DELETE FROM '.mysqli_real_escape_string($this->_database, $this->_database_table_urls).' WHERE (hash_source) IN ';
  1. public function saveUrls($urls) {
  2. if (empty($urls)) {
  3. return;
  4. }
  5. return $this->_database->saveUrls($urls);
  6. }
  7. public function removeUrls($urls) {
  8. if (empty($urls)) {
  9. return;
  1. if (isset($result->url_translations)) {
  2. Defer::getInstance()->defer(function() use ($result) {
  3. $new_urls = $result->url_translations;
  4. $new_urls = get_object_vars($new_urls);
  5. Database::getInstance()->saveUrls((array)$new_urls);
  6. });
  7. }
  8. if (isset($result->urls_untranslated)) {
  9. Defer::getInstance()->defer(function() use ($result) {
Translation->Linguise\Script\Core\{closure}()
  1. }
  2. public function finalize()
  3. {
  4. foreach ($this->_actions as $action) {
  5. call_user_func($action['function'], $action['args']);
  6. }
  7. }
  8. }
  1. Helper::prepareDataDir();
  2. // Finalize defer actions on shutdown
  3. // @codeCoverageIgnoreStart
  4. register_shutdown_function(function() {
  5. Defer::getInstance()->finalize();
  6. Database::getInstance()->close();
  7. });
  8. // @codeCoverageIgnoreEnd
  9. }
Processor->Linguise\Script\Core\{closure}()

Stack Trace

mysqli_sql_exception
mysqli_sql_exception:
Duplicate entry '49263e4176ff53f5ff1efff72d6df4fb-ru' for key 'bk24_linguise_urls.hash_translation'

  at /var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Databases/Mysql.php:170
  at mysqli->query()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Databases/Mysql.php:170)
  at Linguise\Script\Core\Databases\Mysql->saveUrls()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Database.php:232)
  at Linguise\Script\Core\Database->saveUrls()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Translation.php:119)
  at Linguise\Script\Core\Translation->Linguise\Script\Core\{closure}()
  at call_user_func()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Defer.php:42)
  at Linguise\Script\Core\Defer->finalize()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Processor.php:31)
  at Linguise\Script\Core\Processor->Linguise\Script\Core\{closure}()