Как запретить доступ к файлу для пользователя в Firebase, если у этого пользователя был доступ к этому файлу? - PullRequest
0 голосов
/ 11 января 2019

Пользователи нашего приложения Django могут отвечать на вопросы и прикреплять файлы к своим ответам.

В настоящее время мы пытаемся переместить хранилище файлов в Google Cloud Storage. Я изучаю, как мы можем использовать Firebase SDK для облачного хранилища в нашем приложении веб-клиента.

Модели Django (упрощенные):

class User(models.Model):
    email = models.CharField(max_length=128)
    password = models.CharField(max_length=128)


class Question(models.Model):
    description = models.TextField()
    requester = models.ForeignKey(User, related_name='questions')


class Answer(models.Model):
    question = models.ForeignKey(Question, related_name='answers')
    responder = models.ForeignKey(User, related_name='answers')
    attached_file_id = models.IntegerField(null=True, blank=True)
    attached_file_storage_key = models.CharField(max_length=128, blank=True)  # path to file in a current storage. For example, /documents/image.jpg 
    attached_file_name = models.CharField(max_length=128, blank=True)

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

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

Я прочитал несколько статей, связанных с правилами безопасности Firebase для облачного хранилища. Также я читаю учебник, в котором описывается, как создать приложение веб-чата с использованием Firebase, но некоторая часть этого учебника (который описывает, как писать правила безопасности облачного хранилища) просто говорит, что «разрешить чтение»; достаточно для этого простого приложения.

Мой вопрос о том, как я могу запретить доступ к файлу для пользователя, если у этого пользователя был доступ к этому файлу.

...