2013-08-03 2 views
1

Я создаю какое-то приложение для создания списка дел в PHP. Теперь я хочу реализовать функцию для обмена задачами между пользователями, эти задачи - это в основном папки. Можете ли вы дать мне представление о том, как я могу предоставить доступ к папке только для некоторых пользователей. Я хотел использовать базу данных, но в настоящее время у меня нет идей.Алгоритм для обмена папками между пользователями

+0

Почему бы не использовать базу данных? И вы хотите использовать реальные папки? – putvande

+1

Пожалуйста, используйте базу данных, используя папки для этого - ужасная идея. –

ответ

0

Почему вы не храните все данные в базе данных MySQL, например? Нам будет намного проще делегировать правила доступа.

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

Ваш вопрос очень амбициозен в этой формулировке.

+0

Это тоже была моя идея, но дело в том, что пользователь может создать одну задачу, тогда он может предоставить доступ к этой задаче другому пользователю, теперь у двух пользователей есть доступ к этой задаче. Вот где моя проблема. У меня нет идеи, как реализовать функцию, когда один пользователь может предоставить доступ к заданию другому пользователю. – Alen

1

Использование базы данных позволяет владельцу исходной задачи назначать других пользователей этой задаче. Например, пример , вы можете создать таблицу «task_group» с полем идентификатора задачи. Это в основном приведет к тому, что каждая задача будет иметь свою собственную группу в базе данных. Затем создайте таблицу «task_group_users» с полем task_group_id и поле user_id. Затем вы проверяете эту таблицу, чтобы узнать, является ли пользователь частью task_group по идентификатору пользователя. Владелец задачи может добавлять пользователей в группу, добавляя идентификаторы пользователя к task_group_users.

Этот пример может быть расширен далее для поддержки нескольких групп для каждой задачи путем добавления поля группы и поля уровня разрешений в таблице task_group.

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

+0

Спасибо. У меня есть аналогичная идея, но с меньшим количеством баз данных. Поэтому я создаю таблицу «users» с полем user_id, затем создаю таблицу «tasks» с полем «task_id». Затем я создаю третью таблицу «users_tasks», где храню user_id и task_id. Это нормализация mysql, поэтому каждый пользователь может иметь больше задач, и одна задача может быть назначена нескольким пользователям. Это хороший подход? – Alen

+1

Извините, я имел в виду таблицы, а не базы данных. Одна база данных с пользовательской таблицей, таблицей задач, таблицей task_group и таблицей task_group_user. Я уверен, что это была бы лучшая нормальная форма, особенно если в конечном итоге у вас может быть более одной группы на одну задачу, например, группа редакторов, группа разработчиков, администраторы и т. Д. – JSON