Rola v UserManager a povolenia

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kasiopia
Člen | 69
+
0
-

Rola v UserManager. Dobrý deň pri registrácii užívateľa v tabulke nie je vyplnená rola užívateľa, čo mám prosím Vás upraviť.
Potom mám otázku nechcem aby som sa dostal na ďalšie latte stránke keď nie som prihlásení. Viete mi poradiť ako nastaviť router resp server
Ďakujem za odpoveď
Pekný deň

CZechBoY
Člen | 3608
+
0
-

Kod? Latte neni stranka.
Presmerovani nastavuj v presenteru, nebo necha co chces po tom prihlaseni delat.

Václav Kraus
Člen | 77
+
0
-

Pokud chceš, aby měl uživatel po přihlášení nějakou roli, tak mu ji v té tabulce users přiděl.

https://doc.nette.org/…thentication

Mysteria
Člen | 797
+
+1
-

Potom mám otázku nechcem aby som sa dostal na ďalšie latte stránke keď nie som prihlásení.

Pokud jsi tímhle myslel to, že nepřihlášený uživatel se nemůže dostat do administrace třeba změnou URL adresy, tak je potřeba dát do všech administračních prezenterů (nebo nějakého AdminBasePresenteru pokud máš) kontrolu, zda je nebo není přihlášen.

public function startup() {
	parent::startup();
	if (!$this->user->loggedIn) $this->redirect('Guest:login');
}

Připomínám že v případě, že to budeš dávat do nějakýho BasePresenteru, tak se musíš ujistit aby náhodou od něj nedědil i presenter kde děláš login, protože pak by jsi měl smyčku v přesměrování a musel by jsi tam přidat podmínku.

kasiopia
Člen | 69
+
0
-

Ďakujem za radi ked chcem zmeniť url čo mám pridať do presenteru ako môžem nastaviť router. Ďakujem za pomoc

Mysteria
Člen | 797
+
0
-

Jak chceš konkrétně měnit URL? Ve výchozím nastavení se URL tvoří <názevPresenteru>/<názevAkce>. Takže já už rovnou volím názvy presenterů a akcí tak, jak chci mít URL. Takže třeba když jsem třeba dělal web pro jedno fitko tak pro výpis lekcí byl presenter LessonPresenter a akce actionList() a URL pak je automaticky lesson/list. :) Kdyby ti tohle z nějakýho důvodu nevyhovovalo tak můžeš použít překladovou tabulku.

kasiopia
Člen | 69
+
0
-

Ďakujem za odpoveď. Poviem príklad chcem aby moja url bola page/system/article
Presenter je task a latte je taskpage chcem adresu maskovať v RouterFactory . Ďakujme

Mysteria
Člen | 797
+
0
-

Jo tys to myslel takhle. V tom případě na to nepotřebuješ překladovou tabulku, ale jenom samostatnou routu:

// RouterFactory.php
$router[] = new Route('page/system/article', 'Task:taskpage');

A protože se bere první routa která vyhovuje tak to musí být seřazený od nejvíc specifických po nejvíce obecnou.

kasiopia
Člen | 69
+
0
-

Ďakujem môžem sa spýtať prečo takto to ide a ked je iné poradie router, že obecne je prvé tak to nefunguje

		$router[] = new Route('page/system/article', 'Task:taskpage');
		$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
Mysteria
Člen | 797
+
0
-

Protože routy fungují tak, že se prochází jedna za druhou a první, která odpovídá dané URL se použije. Ta druhá routa je hodně obecná, takže bude pasovat na jakoukoliv URL. Tu tvoji page/system/article přeloží jako presenter Page, akce System a jako parametr ID bude article a protože nic takovýho v aplikaci nemáš, tak se ti zobrazí 404, že daná stránka nelze najít. Takže když ji necháš jako první, tak se to nikdy k žádný další routě nedostane a proto je nutný mít to seřazené od nejspecifičtějších až po tuhle obecnou.

CZechBoY
Člen | 3608
+
0
-

Bere se první routa která vyhovuje. Tzn když dáš na první místo nejobecnější tak se vezme vždycky ta, protože sedí na všechny požadavky.

kasiopia
Člen | 69
+
0
-

Ďakujem a ešte niečo kontrolu prihlásenia, kde by mal vložiť? do akého presenteru, pretože ked som dal do homepage Cannot load presenter ‚Guest‘, class ‚App\Presenters\GuestPresenter‘ was not found

public function startup() {
    parent::startup();
    if (!$this->user->loggedIn) $this->redirect('Guest:login');
}

Ďakujem všetkým za pomoc ale hlavne nette is clever:)

Mysteria
Člen | 797
+
0
-

Do každého presenteru, který obsahuje věci, které nemají být přístupné nepřihlášeným uživatelům. Ten kód znamená, že když není uživatel přihlášení, tak ho to přesměruje na presenter Guest a akci login. To si samozřejmě musíš upravit podle sebe, nikdo neví jak se ti jmenuje presenter a akce, kde máš přihlašovací formulář.

Editoval Mysteria (7. 2. 2016 21:13)

kasiopia
Člen | 69
+
0
-

Dobrý deň do presenteru som vložil podmienku login vytvoril GuestPresenter a login šablonu pracujem s najnovšou verziou nette

Nette\Application\UI\InvalidLinkException

Cannot load presenter ‚Guest‘, class ‚App\Presenters\GuestPresenter‘ was not found.

Ďakujem za pomoc

CZechBoY
Člen | 3608
+
0
-

Máš ten presenter v

namespace App\Presenters;

?

kasiopia
Člen | 69
+
0
-

Moj kod

<?php

namespace App\Presenters;

use Nette;
use App\Model;


class GuestPresenter extends BasePresenter
{

	public function renderDefault()
	{
		$this->template->anyVariable = 'any value';
	}

}
CZechBoY
Člen | 3608
+
0
-

Máš ten soubor uloženej někde v App/Presenters?
Zkus smáznout cache jestli jedeš na produkčním režimu.

kasiopia
Člen | 69
+
0
-

Vypisuje fatal error Class ‚Nette\Framework‘ not found

pri odstránení cache ďakujem za radu

Editoval kasiopia (8. 2. 2016 20:29)