Пользователи нашего приложения 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, но некоторая часть этого учебника (который описывает, как писать правила безопасности облачного хранилища) просто говорит, что «разрешить чтение»; достаточно для этого простого приложения.
Мой вопрос о том, как я могу запретить доступ к файлу для пользователя, если у этого пользователя был доступ к этому файлу.