у записи появился владелец: чужую больше не отдают
- колонка `owner` связью с `users` в обеих коллекциях новым шагом схемы `202608140001`; чтение задачи сужено владельцем, и чужая, ничья и несуществующая дают один ответ; правило просмотра файлов сужено им же - приём по HTTP берёт владельца из сессии, а предъявителя без учётной записи пользователя отвергает до чтения тела: позже пришлось бы убирать уложенный файл, а уборки файлов сервис не умеет. Выборка воркера владельцем не сужается - удаление учётной записи с записями отвергается стражем, и вешает его сама сборка хранилища: сборка, забывшая его позвать, теряла защиту молча
This commit is contained in:
@@ -43,6 +43,13 @@ func New(dataDir string) (*pb.PocketBase, error) {
|
||||
return nil, fmt.Errorf("failed to apply storage schema: %w", err)
|
||||
}
|
||||
|
||||
// Страж владельца вешается здесь, а не вызывающим: он защищает архив от
|
||||
// удаления учётной записи, и сборка, забывшая его позвать, теряет защиту
|
||||
// молча. Так это уже и было — окружение проверок его не ставило, и всё
|
||||
// разграничение проверялось на приложении, где архив сносится одним
|
||||
// запросом.
|
||||
GuardOwnerDeletion(app)
|
||||
|
||||
return app, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user