všechno špatně – pokus o ACL

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

Zdravím :) .. zažívám muka asi se vám to nebude chtít číst, ale kdyby přece jo, byl bych rád.

stáhl jsem Nette 2.0.8 a projekt z gitu, jak se na něj odkazuje tutoriál. https://doc.nette.org/…thentication, Do libs jsem šoupnul Nette, vytvořil jsem databázi podle přiloženého SQL, zapl laděnku, do neonu napsal login do DB, vytvořil zapisovatelné složky cache, temp a log a spustil. (server mě nette2, PHP5.3 htacces atd podporuje, zkoušel jsem ukázky ze sandboxu a vše OK)

Vylezlo na mě Tohle: (když kliknu na :Admin:Default: )

Nette\InvalidStateException – Role ‚authenticated‘ does not exist.

CO JE KU.VA ŠPATNĚ? przním se s tím už dva dny, včera celou noc zkouším střílet brouky naslepo a nic z toho. Jo, jsem v nette nováček… s PHP-OOP začínám. Mám nějaké zkušenosti s funkčním programováním v PHP, ale Nette mě připadalo hezčí, tak jsem to chtěl zkusit.

Prosím pomožte mi, já už fakt nevím…

Jo a taky mě není jasný,proč na mě laděnka někdy řve, že Presenter nezačíná na „namespace“ a jindy tam potřebuje „<?php“ ?

PS.
zjištění!.. Totiž můj osobní pokusný webserver běži za routrem a switchem, (192.168.20.10), a je na něj nasměrovaná pevná ip s doménou… a když se podívám z internetu, zvenku, tak vypadá že to funguje (toho jsem si všiml až teď jak to píši), jenže ale k servru při pokusování přistupuju pochopitelně z vnitřní sítě jako na 192.168.20.10:80… tam to nefrčí

nemůžu po vás chtít, abyste mě vyhrabali z těchto s.raček, ale byl bych vám vděčný. Toto téma budu aktivně sledovat, a pokuď bude potřeba doplním informace..

Editoval Matěj (11. 3. 2013 16:59)

Jan Mikeš
Člen | 771
+
0
-

Matěj napsal(a):

Nette\InvalidStateException – Role ‚authenticated‘ does not exist.

Chybi ti vytvoreni role pomoci ->addRole(„authenticated“)
viz: https://doc.nette.org/…thentication#…

Matěj napsal(a):
Jo a taky mě není jasný,proč na mě laděnka někdy řve, že Presenter nezačíná na „namespace“ a jindy tam
potřebuje „<?php“ ?

<?php je uvozenim PHP kodu, pokud je tva trida v nejakem namespace, pak uvedeni namespace musi nasledovat bezprostredne za tim, jako uplne prvni vec ve zdrojovem kodu, jeste pred use/definici vlastni tridy. Toto jsou ale zaklady, doporucoval bych se doucit nez zacnes poradne s nette, pres to vlak nejede.

Matěj
Člen | 14
+
0
-

Lexi napsal(a):

Matěj napsal(a):

Nette\InvalidStateException – Role ‚authenticated‘ does not exist.

Chybi ti vytvoreni role pomoci ->addRole(„authenticated“)
viz: https://doc.nette.org/…thentication#…

Žádná role authenticated nemá co existovat. Pouze guest, admin a editor. Já to spíš vidím na „divné“ nastavení serveru, když to z internetu funguje, ale po LAN nee.. jenže nevím včem by mohl být rozdíl.. Nějaký tip?

jj, vím, právě s tím začínám, studuji nějaký seriál o OOP-PHP. Jenže teď se zjevila potřeba udělat „větší“ projekt, tak to beru za běhu, protože schopnosti nette se mi líbí.

Editoval Matěj (11. 3. 2013 17:55)

llsm
Člen | 121
+
0
-

Věř, že když píše, že mu chybí, tak jí tam někde bude vyžadovat.

Zkusil jsi smazat temp? Jsi si jistý, že kód/databaze/configy jsou na serveru stejné jako na localhostu?

Šaman
Člen | 2666
+
0
-

V první řadě si spusť Requirement-Checker (v distribuci Nette v adresáři Tools), pokud bude něco žluté, tak by to mělo ještě projít, ale červené je problém.

A nový projekt začínám zásadně na Sandboxu, ze kterého vymažu obsah šablony default.latte.

Matěj
Člen | 14
+
0
-

abych vám všem odpověděl: (mimochodem jsi moc rád za odpovědi, a omlouvám se za emoce v 1. příspěvku)

  • Checker je celý zelený až na tři věci, které jsou žluté – Memcache, a 2× GD extension
  • temp mažu samozřejmě. Skoro pokaždý když udělám nějakou změnu.
  • apache, mysql, atd běží vše jednou na jednom stroji, na jedny konfiguráky. (na 192.168.20.10:80) právě v routeru je nastaveno pouze přesměrování několika portů „ven“ na (213.192.xxx.xxx) www.mojestranky.cz . Právě nechápu co v tom kde může způsobovat rozdíl. – Jo a je to samostatný stroj, ne notebook z kterého to na něj nahrávám a zkouším.
  • ten ACLprojekt je vlastně modifikací sandboxové ukázky na využití modulu
  • přidání – addRole(‚authenticated‘) vytvoří smyčku přesměrování

Editoval Matěj (11. 3. 2013 17:57)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Hm, pokud přidání role způsobí smyčku, tak ve zdrojovém kódu přímo hájemství duchů :). Asi je čas rozkrýt karty.

Matěj
Člen | 14
+
0
-

vojtech.dobes napsal(a):

Hm, pokud přidání role způsobí smyčku, tak ve zdrojovém kódu přímo hájemství duchů :). Asi je čas rozkrýt karty.

hmm, dobrý :D
Když vám dám odkaz na živý web, tak jak vás znám mě tam píchnete nějakou injekci:) Ještě to nemám úplně zabezpečené na provoz. A stejně Vám, to bude zvenku fungovat, To byste museli být připojení na mojí domácí wifině, a na server přistupovat přímo, aby vám laděnka hodila chybu. Jestli pomůže poslat zabalené zdrojáky, s tím že si databázi napojíte sami, tak prosím. Stahujte: http://leteckaposta.cz/271354751 (z neonu odstraněná hesla), v archívu přibaleno SQL

Děkuji moc za snahu :)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Eh, nene, stačí důležité zdrojáky, např. tu část, kde používáš authenticator. Někde ho používat musíš, když je s tím spojená taková chyba. Z letecké pošty se mi to stahovat nechce :). Ideální je http://pastebin.com nebo nejlépe https://gist.github.com.

David Matějka
Moderator | 6445
+
0
-

nezkoumal jsem to podrobne, ale vypada to, ze se ti spravne nenastavi role uzivatele pri vytvareni identity. co ti hlasi za role identity panel v debug baru?

role authenticated je totiz defaultni role, pokud uzivatel zadnou roli nema.

ta smycka je potom zpusobena tvojim AdminModule\BasePresenter, ktery pokud uzivatel nema opravneni presmerovava na DefaultPresenter (kterej dedi od toho BasePresenteru), ale k tomu samozrejme nekdo s roli authenticated pristup nema :)

Matěj
Člen | 14
+
0
-

toto je reakce na vojtech.dobes:

ono těžko říct, je to tak nějak všechno provázané, kdybych věděl, kde je chyba tak to opravím.. Snažil jsem se postupovat podle návodu na https://doc.nette.org/…thentication … nejsem v OOP moc zběhlý, ale v průběhu zprovozňování projektu laděnka psala něco jakože nějaká třída v authenticatoru (který je kvůli db vlastní a rozšiřuje ten z nette), tak že není jedinečný, a potom to nějak jakože zkousla, prostě je tam někde krpa… (omlouvám se za nepřesné termíny) pokuď tušíš který je to soubor, tak já ti ho vystavím. Fakt nevím v čem to může být , jestli v šabloně, prezenteru, knihovně..

Cwww\AclProj\libs\AclProj\SecurityAuthenticator.php http://pastebin.com/XwKVqejX

matej21: odpovím ti později, teď nemám zrovna čas, mám něco jinýho.. díky za příspěvek, vypadá že bude užitečný, dám vědět, až to ozkouším, jo?

Editoval Matěj (11. 3. 2013 18:51)

jasir
Člen | 746
+
0
-

Tak jsem si to stáhnul a spustil. Mě to funguje… :-) žádná laděnka.

Tak neporadím.

Jediný co jsem musel udělat v mém konfigu odkomentovat ve www/.htaccess zakomentovaný RewriteBase.

Jan Mikeš
Člen | 771
+
0
-

Bud mas nejakeho uzivatele v DB s nevyplnenym sloupcem „role“ nebo naopak u nej mas nastaveno „authenticated“, jinak pokud se nikde v kodu na tuto roli neodkazujes tak je divne, ze po tobe ladenka rve ohledne teto role. Soupni nekam i dump databaze.

Filip Procházka
Moderator | 4668
+
0
-

phpassist je služba na sdílení kódu (něco jako pastebin), ale podporuje přímo Nette Sandbox.

Zkus si tam vytvořit čistý Nette Projekt a nahrát nám tam změny co jsi udělal :)

Matěj
Člen | 14
+
0
-

Ták, jsem zpět zde.
upřesnění: problém je že se mi nezobrazí přihlašovací formulář, když kliknu na :Admin:Default: jinak to šlape..

matej21: asi to bude v něčem takovým… když umažu v AclProj/libs/AclProj/Security/Authenticator.php na začátku značku „<?php“, tak se chybová kláška připomínám z: Nette\InvalidStateException – Role ‚authenticated‘ does not exist. změní na: Class AclProj\Security\Authenticator used in service ‚authenticator‘ has not been found or is not instantiable.

jasir:

Jediný co jsem musel udělat v mém konfigu odkomentovat ve www/.htaccess zakomentovaný RewriteBase.

Jak tedy vypadá? já když odkomentuju cokoli z /AclProj/www/.htacces, tak se nezobrazí ani laděnka.
Můj .htacces:http://pastebin.com/aZ0p8aJi

lexi: Databázi mám stejnou jako přiložené ukázkové SQL, i s hodnotami. (akorát jsem si musel vygenerovat sha1 hesel samostatně, protože mě to phpMyAdmin nevzal) tady je aktuální dump: http://pastebin.com/DYXbQFrn

Filip Procházka:
phpassist je zřejmě fajn služba, ale nechce se mě tam nahrávat skript, který obsahuje heslo do mé db.

Editoval Matěj (12. 3. 2013 20:15)

Jan Mikeš
Člen | 771
+
0
-

Samozrejme ze kdyz smazes znacku <?php tak to tu tridu nenajde, jak ji to ma najit, kdyz ji prakticky vymazes.

Uploadni ladenku s chybovou hlaskou ze Role authenticated neexistuje, musis prijit na to , kde se tu roli snazis pouzit!

Filip Procházka
Moderator | 4668
+
0
-

Však to po tobě ani nechci, stačí tam nahrát scripty :)

Matěj
Člen | 14
+
0
-

Lexi

mělo by fungovat tohle html, když stáhneš.. http://pastebin.com/ABLMc11p

díky za snahu, ani nevíš jak ti jsem vděčný. Často to chce trpělivost, chtít něco po začátečníkovi. S tou značkou „<?php“ máš samozřejmě pravdu.

Matěj
Člen | 14
+
0
-

Filip
Ok, zkusím to, snad to k něčemu bude i bez přístupu k db.. (hesla umažu)

edit:
ten PHP Assist chce hesla do mého serveru? Co vlastně dělá má fungovat? sdílet můj projekt tahle přes 3. stranu nepotřebuju… (já se bojím) Možná by se mě hodilo spíš nějaké vývojové prostředí, protože zatím to flákám jenom v PSpadu, ale to je offtopic. Co používáte na práci s nette?

Editoval Matěj (12. 3. 2013 21:01)

Jan Mikeš
Člen | 771
+
0
-
array(6) ▼ {
   authenticated => TRUE
   identity => Nette\Security\Identity(4) ▼ {
      id private => 1
      roles private => array(0)
      data private => array(3) ▼ {
         id => "1"
         username => "demo" (4)
         realname => "Demo User" (9)
      }
      frozen private => FALSE
   }
   reason => NULL
   authTime => 1362664337
   expireBrowser => NULL
   expireDelta => NULL
}

Ten tvuj demo user s username „demo“ nema zadnou roli a nette se mu snazi pravdepodobne automaticky nastavit roli „authenticated“ coz je vychozi role pro prihlasene uzivatele. Toto je chyba, ted bud hledej duvod proc nema zadnou roli pridelenou, nebo jednoduse v configu pridej roli authenticated do ACL

Matěj
Člen | 14
+
0
-

odkud se tomu podařilo načíst toho usera „demo“? žádný takový nemá existovat, nevzpomínám si že bych nějakého užuvatele demo zaváděl.....

no nic, já se to zkusím zalepit.. pak dám vědět. Taky je divné, že se chyba projevuje jen při přístupu na webserver z LAN, ale z internetu to frčí ok.....

edit:
Vyřešeno! – stačilo promazat cookies… OMG…

tolik povyku pro nic. Děkuji všem kteří se snažili pomoc. Byli jste skvělí!

Editoval Matěj (13. 3. 2013 0:40)