Open4
Firebase storageでファイルへのアクセス権を動的に変更する
Firebase storageに保存したファイルへのアクセス権を動的に変更したい場合には、カスタムメタデータとセキュリティルールが有効。
Firebase storageセキュリティルール
例えば、管理者、所有者は常に読み込み可、第三者はファイルが公開設定されていたら読み込み可としたい場合には以下のように記述
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
allow read: if request.auth.token.admin == true || request.auth.uid == resource.metadata.owner || resource.metadata.visibility == true;
allow write: if request.auth.token.admin == true;
}
}
ファイルアップロード(Firebase functions, Node.js)
アップロード時には以下のようにカスタムメタデータをセット
bucket
.upload(localFilePath, {
destination: destFilePath,
metadata: {
metadata: {
visibility: false,
owner: ownerid,
},
},
})
アクセス権変更
アクセス権を変更したい場合には任意のタイミングでカスタムメタデータを更新するだけ。
bucket.file(path).setMetadata({
visibility: true
});
}