CakePHP: доступ к личным папкам после аутентификации - PullRequest
0 голосов
/ 23 марта 2012

Я ищу наилучшую практику CakePHP для предоставления папок / файлов клиентам после их аутентификации.Я знаю, что проще использовать решение на основе .htpasswd/.htaccess, но мне интересно найти лучший способ.

Для чего это нужно?

Я хочу создать клиентскую область, где могут видеть аутентифицированные клиентысодержимое там личных папок .Например, чтобы проверить некоторые статические HTML-шаблоны перед интеграцией с CMS или загрузить некоторые документы, такие как скриншоты с комментариями или файлы PDF.

Вариант использования может быть:

  • Создать новыйклиент (только для администратора)
    • Создание учетных данных для входа в систему для разных пользователей одного и того же клиента
  • Создание новой папки клиента (только для администратора)
  • Загрузить статический HTML-файл в папку клиента
  • После входа клиент может получить доступ к папке и просмотреть HTML-код
  • . После выхода из системы доступ к статическим файлам ограничен

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

Знаете ли вы о CakePHP "Media Views"?Я думаю, что вы могли бы делать с ними все, что вы хотите.

пример быстрой и грязной работы

1 голос
/ 25 марта 2012

Я думаю, что самый простой способ - использовать для этого структуру базы данных.

Файлы хранятся на сервере в любом случае, где это не имеет значения.

Вот как это делается:

  1. Создать в базе данных таблицу с именем DataFile (из-за «File» возникают проблемы с классом Cake «File»).Поля должны быть примерно такими: id, data_folder_id, name, size, mime_type и т. Д. Используйте то, что соответствует вашим потребностям.

  2. Создайте таблицу в базе данных с помощью вызова DataFileFolder.Поля здесь: id, parent_id, name, visible.То же, что и выше, независимо от того, что соответствует вашим потребностям.

  3. Создайте ключ связи в таблице клиентов или во всей таблице связей, если это необходимо.(Например: один клиент и 50 папок в разных местах).Знайте о связи, которую вы создаете.Если вы используете Client-> DataFolder, клиент автоматически получит доступ ко всем файлам в этой папке.
  4. Модели выпекания и FileController с методом внешнего интерфейса и действиями администратора, а также представлениями.
  5. Оптимизацияметоды администратора для создания файла или записи папки.
  6. У метода индекса для внешнего интерфейса есть один параметр, который представляет идентификатор папки.Вы выводите каждую папку и файл в папке, начиная с первого, к которому у пользователя есть доступ.Вы также можете просто вывести список папок, к которым пользователю разрешен доступ, если эти папки находятся на разных уровнях нового «файлового менеджера».Вы должны проверить разрешение на каждый вызов каждой новой страницы для данного идентификатора папки.Но это понятно, я думаю.
  7. Реализация метода загрузки файлов на основе упомянутого выше представления мультимедиа.Это должно быть.

Я думаю, что это лучший и самый простой способ контролировать доступ к таким папкам.Из-за некоторых ограничений, если это не ваш сервер по post_max_size и т. Д., Возможно, вам следует подумать о внешнем скрипте (или написать его самостоятельно, если у вас есть время;)) для загрузки этих файлов через ftp.

Вы также можете подумать о папке, доступной на вашем FTP для загрузки файлов.В диалоге «новый файл» в бэкэнде эта папка будет выведена, и вы можете включить файл в систему, просто скопировав его (конечно, через PHP).Преимущество: только одна загрузка (хотя будет только две, если вы используете метод загрузки ftp, упомянутый выше).

Если вы просто обмениваетесь файлами с клиентами, и у этих клиентов не будет доступа ни к чемуиначе в вашем проекте cakephp просто используйте ftp с папкой для каждого клиента.Быстрее и проще в обращении, потому что вы можете отправить им URL-адреса, такие как «ftp: // username: password@yourserver.com» и готово.Они вошли в систему, они могут просматривать html-файлы, потому что они обращаются к ftp через браузер, и это должно быть безопасным для noob.

Надеюсь, что что-нибудь из этого удовлетворит ваши потребности:)

Приветfunc0der

...