UserPanel – rychlý login/logout při vývoji pro programátory
- Mikulas Dite
- Člen | 756
Ahoj, při nové aplikace jsem si napsal panýlek pro rychlé přihlášení
a odhlášení uživatele. Plus zobrazuje role a data z identity. Počkám
nějaký čas a budu ho testovat v praxi. https://github.com/…as/UserPanel
Vás prosím o nějaký feedback (tentokát snad pozitivnější ; ) a až se
přesvědčím, že panel opravdu šlape jako hodinky, dal bych ho do
addons.
Editoval Mikulas Dite (22. 12. 2010 23:44)
- Mikulas Dite
- Člen | 756
Tak to je divný, Environment::getUser()->identity->data by mělo fungovat vždycky, nebo ne?
Edit: je teda pravda, že IIdentity data nemá, Identity ano. Upravil jsem to na vlastnosti IIdentity a už to snad funguje.
Editoval Mikulas Dite (31. 10. 2010 19:06)
- Bernard Williams
- Člen | 207
Nazdárek,
nemělo by to být:
Environment::getUser()->getIdentity()->data
Bernard
- Mikulas Dite
- Člen | 756
Nemělo, Nette object má chytré gettery.
Edit: ale dík za nápad.
Editoval Mikulas Dite (31. 10. 2010 19:50)
- JakubJarabica
- Gold Partner | 184
Malý feature request – čo tak urobiť selectbox na jednoduché prehadzovanie identít? Často sa mi stane, že chcem danú stránku vidieť raz ako rola admin a raz ako rula user :)
- Mikulas Dite
- Člen | 756
JAM3SoN napsal(a):
Malý feature request – čo tak urobiť selectbox na jednoduché prehadzovanie identít? Často sa mi stane, že chcem danú stránku vidieť raz ako rola admin a raz ako rula user :)
Díky, to rozhodně udělám, je to dobrý nápad.
- Bernard Williams
- Člen | 207
To já bych spíš uvítal možnost přepínat celé uživatele (ne jen role). Panel by si mohl pamatovat třeba 3 až 5 posledních loginů a přes jeden button by je dokázal přihlásit. Co se týče implementace, tak by si třeba pamatoval cookies na trvalé přihlášení.
- JakubJarabica
- Gold Partner | 184
@Bernard:
Role boli priklad, pisal som o celych identitach. Pri prihlasovani by mohla byt
moznost „zapamatat“, pricom ak by si ju zafajkol, pridala by sa tato
identita do selectboxu. Zmena hodnoty v selectboxe by znamenala odhlasenie
aktualneho usera a prihlasenie vybraneho(na zaklade ulozeneho username+pass,
imho netreba cookies) a uz len pridat moznost odstranit identitu
z ulozenych.
Editoval JAM3SoN (1. 11. 2010 0:27)
- newPOPE
- Člen | 648
Tiez sa snazim to rozbehnut no narazil som na problem na riadku #L39
<?php
... $this->reflection->shortName ...
?>
MemberAccessException ‚shortName‘ …, skusal som na rychlo hladat kde je problem ale pravdupovediac som ziadnu shortName nikde nenasiel.
Nette 2.0alpha s download sekcie pre 5.2. Prepisal som si to do prefixed
verzie aj s umlcanim namespaces.
Netusi niekto kde by mohol byt problem?
Dik
- Mikulas Dite
- Člen | 756
JAM3SoN napsal(a):
Malý feature request – čo tak urobiť selectbox na jednoduché prehadzovanie identít? Často sa mi stane, že chcem danú stránku vidieť raz ako rola admin a raz ako rula user :)
Splněno.
HosipLan napsal(a):
geniální, fandím, stahuju :)
Dík :)
newPOPE napsal(a):
Tiez sa snazim to rozbehnut no narazil som na problem na riadku #L39
… prepisal som si to do prefixed verzie aj s umlcanim namespaces…
Jestlis přepsal i ClassReflection (asi NClassReflection?), tak by to sice fungovat mělo, ale radši jsem se tomu vyhnul a jméno tam napsal přímo. Sice to není úplně nejlepší, ale v tomhle případě to oželím.
- Čelo
- Člen | 42
zkoušel jsem zprovoznit tento panel na Nette2a2, ale bohužel bez úspěchu. Panel se nejdříve vůbec nezobrazoval, až po odstranění javascriptové části se sice zobrazil, ale při odeslání formuláře podle všeho nedochází k zavolání funkce onLoginSubmitted. Hledal jsem i na foru, co se v posledních verzích změnilo a vyjma hrátek s base64 jsem nic kloudného nedohledal. Neřešil to již někdo? Ocenil bych i nějaké popostrčení.
- Mikulas Dite
- Člen | 756
Radši jsem to otestoval a na čistém Nette funguje v pořádku.
Rád to fixnu, ale trochu se o problému rozepiš. Díky
- Čelo
- Člen | 42
Teď jsem stáhl alpha verzi z webu, z githubu panel a zkusil jsem to na
čistém sandboxu a mne bohužel stále nic … nevím, co víc popisovat
(problém je na druhém řádku javascriptu, co se týče zobrazování), tak
raději pošlu mou kopii aplikace, kterou jsem si z tohoto testu vytvořil.
http://dl.dropbox.com/…serpanel.zip
Opravdu se ti v tomto sandboxu panel zobrazí?
- Mikulas Dite
- Člen | 756
Tak problém je trochu jinde. Osobně panely nikdy neregistruju v bootstrapu
(můj je vlastně skoro prázdný, když už na to přišla řeč), ale v
BasePresenter::startup
. Máš recht, že v dokumentaci
panelu jsem to napsal špatně.
Díky, doc už jsem opravil a radši do panelu přidal kontrolu.
Edit: řešením je tedy přesunout tu registraci z bootstrapu jinam (kde už je presenter k mání). Možná to někdy přepíšu, ale lazy volání frameworku je pro panel moc luxus.
Editoval Mikulas Dite (16. 11. 2010 18:19)
- JakubJarabica
- Gold Partner | 184
Práve sa mi to stalo a v tomto fragmente kódu:
<script>
var form = document.forms['frm-UserPanel-login'];
form.elements['frmlogin-send'].parentNode.parentNode.style.display = 'none';
var elements = form.getElementsByTagName('input');
for (i = 0; i < elements.length; i++) {
if (elements[i].getAttribute('class') == 'onClickSubmit') {
elements[i].onclick = function () {
form.submit();
};
}
}
</script>
stačí zmeniť iteračnú premennú z i na j. Neskúmal som, čo je v i.
- Martin
- Člen | 171
Ahoj. Je nějaký důvod k přejmenování třídy UserPanel na User ve verzi 1.1? Aby jely obě verze současně? Musím říci, že mi docela trvalo zjistit, proč mi to nejede, člověk si té změny na první pohled nevšimne. Jinak občas (2× z mnoha spuštění) mi to padá, když tam mám jen button guest a kliknu na něj. Běžím na vlak, takže víc pošlu, až se dostanu k počítači.
Edit: Tak od promazání cache ani jeden pád. Může a nemusí to s tím souviset, kdyby se opět něco objevilo, dám vědět.
Editoval Martin (12. 5. 2011 10:42)
- Mikulas Dite
- Člen | 756
Přejmenování ve svých jsem udělal v čase, když se měnili i NS v Nette. Důvod je ten, že je to takhle hezčí. Máš pravdu, že jsem to mohl poslat do těch threadů, ale dá se na to přijít docela snadno, tak jsem to změnil jenom v dokumentaci.
- Martin
- Člen | 171
Ano, dá se na to přijít docela snadno, stačí si přečíst chybovou hlášku. Jenže mě to v ní prostě nepraštilo do očí a hledal jsem problém všude možně pod dojmem předchozích zkušeností s addony v Nette.
Chápu-li to dobře, User už je definitivní vzhledem k namespace. Možná ale namespace Panel a název User může být trochu konfliktní díky obecnosti. Já jsem si zcela nezávisle na tom pojmenoval namespace pro panely samozřejmě také Panel a asi to napadne většinu lidí. Takže možná bych navrhoval UserChange či něco malinko méně obecného, ale záleží na Tobě. Přecijen se tvorbě panelů do DebugBaru nevěnují tisíce programátorů, takže brzké konflikty nehrozí a vždy se to dá schůdně vyřešit.
Ještě – mrkni na možný request , co Ty na to? Mám pocit, že také vytváříš panely nezávislé na aplikaci, podle mě je v takovém případě vhodnější registrace mimo presenter. Nejlépe třeba jen něčím v configu, kdyby se dostala nějaká automatická registrace do distribuce. Ale i v bootstrap.php to ještě relativně nezávislé je, lze to zařídit jednoduše po přidání onPresenter() do Application. Je ale možné, že David chystá úplně jiné řešení, nějaké náznaky jsou (možná to ale jen špatně chápu).
Editoval Martin (12. 5. 2011 21:47)
- Mikulas Dite
- Člen | 756
Panel\User
se používá jenom jednou a to při registraci,
takže nemá cenu to dávat do use a potom je to lepší, než jakákoliv jiná
varianta. Souhlasím s tím, co psal převážně David v tom obrovském
threadu o NS, tohle je ale rozumná výjimka.
O tom requestu vím. Nette by mohlo být s eventy trochu benevolentnější, ale zatím se s tím dá žít. Akorát musíme do BasePresenteru dávat nějaké volání registrací. Když z toho uděláš (nebo někdo jiný) pull request, bude to super, jinak se s tím nic nestane : ).
- Mikulas Dite
- Člen | 756
Prima. Akorát to se to se to pustí při každém průběhu a na jednu stránku i několikrát, ale to už se pak dá ošetřit v tom volání a takhle je to očekávané chování.
Co s tím názvem? Možná bych se nebál třeba:
onPresenterReady
, onPresenterCreated
, nebo
onBeforeResponse
.