Generování hesla uživateli – jak řešit tisk dat

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

V administraci řeším teď generování hesla uživatelům. Potřebuju tam přidat možnost zobrazení nějakého slušného náhledu, který půjde tisknout.

Otázkou je, jak se na tento náhled dostat. Generování hesla mám udělané přes komponentu (form s tlačítkama vygeneruj heslo a zpět , + csrf token)

Takže po úspěšném provedením operace jsem v onSuccess callbacku formuláře a mám info o úspěchu DB operace a vygenerované heslo. A v tom je zakopaný pes, jak teď zobrazím nějaký náhled .. ?

(Hlavička, uživatel, heslo a kontakty na správce)

1)
První cesta vede přes redirect, ve kterým se bude posílat dané heslo v plain text – to se mi nelíbí teda vůbec.

2)
Druhá cesta je bezpečná, ale je to takový kulomet na komára. Použít knihovnu mcrypt, vygenerovat klíč. Vytvořit šablonu, naládovat ji daty a pomocí AES uložit zašifrovanou do db. Pak redirect na nějaké guid spolu s klíčem. Při zobrazení dat je rovnou smazat, takže kompromitace nehrozí.

Nic jiného mě moc nenapadá. Jak toto řešíte vy ?

Aearsis
Člen | 57
+
0
-

Session?

frosty22
Člen | 373
+
0
-

A co ho generovat na straně klienta, tj. JavaScript po zavolání tlačítka Generuj heslo .. resp. osobně jsem toto řešil tak, že je možné heslo zadat do inputu a nebo vedle JS tlačítko „Generuj“, které náhodně předvyplní. Zároveň v této fázi by šlo i mít možnost tisku?

Jináč jelikož jde o přesměrování v nějaké zabezpečené části webu, tak by i stačilo něco mezi bodem 1 a 2, tj. nějaké jednodušší:

<?php
class FooPresenter extends BasePresenter {
   const SALT = "^1235asd$";

   public function success(Form $form)
   {
      $pass = $form["password"]->getValue;
      $pass = $this->encryptPassword($pass);
      $this->redirect("bar", array("password" => $pass));
   }

   public function actionBar($password)
   {
      $this->template->password = $this->decryptPassword($password);
   }

   private function encryptPassword($string)
   {
	return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5(self::SALT), $string, MCRYPT_MODE_CBC, md5(md5(self::SALT))));
   }

   private function decryptPassword($string)
   {
	return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5(self::SALT), base64_decode($string), MCRYPT_MODE_CBC, md5(md5(self::SALT))), "\0");
   }

}

?>

PS: Kod je pouze ilustrační :) Ale ty hashe by měli fungovat snad :)

Jinak taky možnost přes onu SESSION, viz způsob ala FlashMessage

tany
Člen | 31
+
0
-

frosty22 napsal(a):

Hm tohle řešení není špatné, nějak tak to napíšu. Díky