Zobrazenie PDF súboru len pre určitých uživateľov(
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Baski
- Člen | 12
Čaute,
generujem pdf a ukladám ho do
`$basePathfaktury/$uid/$id.pdf`
tj. každý user má vlastnu zložku vo fakturách a svoju fakturu so svojím
ID.
Pokúšal som sa aby užívatelia sa mohli dostať ku svojím faktúram a nikto
iný.
V zložke faktury som vytvoril .htaccess s
Order Allow,Deny
Deny from all
Vytvoril som si RestrictedPresenter, ktorý vlastne ovláda prístup k súborom
<?php
namespace App\Presenters;
use Nette;
class RestrictedPresenter extends BasePresenter{
/** @var \Nette\Database\Context @inject */
protected $database;
public function __construct(Nette\Database\Context $database) {
parent::__construct();
$this->database = $database;
}
public function actionInvoice($id) {
if (!$this->database->table('invoice_partner')->where('partner_id', $this->user->id)->where('id', $id)->fetch()){
$this->redirect('Sign:in');
}
$filename = $id . '.pdf';
$this->presenter->sendResponse(new FileResponse(__DIR__. 'faktury/' . $this->user->id . '/' . $filename, NULL, 'application/pdf'));
}
}
do Routeru som si pridal
$router[] = new Route('faktura/<id>', 'Restricted:invoice');
Na súbor sa snažím odkazovať
{foreach $invoices as $inv}
<p><a n:href="Restricted:invoice $inv->id">Faktúra čislo {$inv->id} </a></p>
{/foreach}
Ak si Restricted:invoice prehodím za hocičo ine(aj nezmysel) vykreslia sa mi všetky odkazy na dané faktury(aj ked chybne) ak tam nechám restricted. vykreslovanie sa zastaví na pred foreach a ani nette nič nehlási. Ak vyskúšam manuálne zadať /Restricted/invoice/1 alebo /faktura/1 Vykreslí sa biela stránka bez ladičky.