Bagaimana cara membatasi akses ke file tertentu berdasarkan jenis kontennya? Saya memiliki bagian unduhan untuk pengguna terdaftar, dan saya ingin mencegah mereka memposting tautan di suatu tempat di luar situs saya.
Apakah penerapannya hook_file_download()
mencukupi?
Saya mencoba kode ini dan itu cukup untuk tujuan saya, tetapi dokumentasi hook_file_download()
tidak banyak membantu.
function customize_file_download($uri) {
global $user;
if (!array_intersect(array('administrator','editor','expert','verified'), array_values($user->roles))) {
return −1;
}
}
Jawaban:
Ada beberapa kait di drupal 7 untuk membatasi akses ke file.
Satu hal yang harus Anda sadari adalah bahwa kait akses ini hanya akan berfungsi jika metode unduhan Anda bersifat pribadi, dan file-file tersebut berada di jalur pribadi Anda.
Seperti yang Anda sebutkan dalam pertanyaan Anda, ada hook_file_download yang dapat digunakan dalam kasus Anda (dengan asumsi file tersebut bersifat pribadi). Ini tidak akan berfungsi jika file, yang ditautkan oleh seseorang, ada di tempat umum seperti situs / default / file / abc123.txt.
Jika Anda mengunggah file-file pribadi ini dalam suatu bidang, maka hook_file_download_access akan tampak lebih tepat. Ini akan memberi Anda bidang tempat file tersebut dimiliki dan juga entitas terkait tempat bidang ini digunakan sehingga Anda harus dapat melakukan logika yang lebih rumit seperti memanggil fungsi akses yang sesuai untuk memeriksa apakah pengguna memiliki akses ke bidang alih-alih memiliki daftar kode dalam kode.
sumber
Tautan ke file hanya itu - tautan. Saya tidak percaya ada cara untuk menentukan lokasi tautan. Anda mungkin dapat melihat header, tetapi ini mungkin tidak akan berhasil.
Jika Anda dapat menentukan lokasi tautan ke file, menggunakan hook_file_download akan menjadi pilihan yang baik untuk kontrol akses.
sumber