Integrace Nette a fora SMF 2.x

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

Zdravím,
potřeboval bych poradit ohledně integrace Nette a Simple Machine Forum, především v přihlašování a odhlašování.

Forum se vyskytuje na subdomene:

  1. Nette – www.mujweb.cz
  2. SMF – forum.mujweb.cz

Nyní řeším jak to pojmout. Jestli mít aktivní přihlášení u Nette aplikace i SMF zvlášť a pouze řešit změnu stavu (ohlášení, přihlášení, atd.) vzájemnou komunikací, nebo naplno využít přihlášení ze SMF.

Ve staré aplikaci jsem to měl druhým způsobem.
Stačilo:

	require_once(dirname(__FILE__).'/subdom/forum/SSI.php');
	global $context, $scripturl, $user_info;

a následně volat ssi_login(); nebo ssi_logout();.

V aplikaci jsem pak už jen řešil:

if (!$context['user']['is_guest'])
$context['user']['name'];
$context['user']['id'];
//atd...

Ale s použitím Nette se celá situace mění. Struktura MVC, atd. Koukal jsem, že na SMF mají možnost volání integration_hook funkcí – http://wiki.simplemachines.org/…ration_hooks , ale momentálně nevím, do jaké míry to je použitelné s Nette.

Osobně bych to řešil s plným využitím přihlašování a autentizace ze SMF. Ale nevím jestli by to mělo na Nette nějaké vedlejší učinky.

Nemáte někdo zkušenost s podobnou situací? Potřeboval bych nasměrovat správným směrem :(

Editoval Croc (8. 1. 2015 13:41)

Jan Endel
Člen | 1016
+
0
-

Můžeš použít eventy na Nette\Security\User::onLoggedIn a ::onLoggedOut.

Croc
Člen | 270
+
0
-

Díky za typ, konečně jsem se k tomu dostal a začínám si s tím hrát.

SMF má možnost použít integrační funkce. Chci tedy použít tyto 3 (slouží pro manipulaci SMF z jiného systému):

/*
  bool   smfapi_login(mixed $identifier, int $cookieLength)
        - sets cookie and session for user specified
        - will accept email address, username or member id
        - does no authentication; do that before calling this

    bool   smfapi_authenticate(mixed $username, string $password, bool $encrypted)
        - authenticates a username/password combo
        - will accept email address, username or member id

    bool   smfapi_logout(string $username)
        - logs the specified user out
        - will accept email address, username or member id
*/

Uvedené funkce jsou v jiném souboru. Abych je mohl používat, musím ten soubor includovat. Teď mi právě vzniká otázka kam. Pokud ho dám tam kde tu funkci volám (například SignPresenter.php), Tracy mi jako první zahlásí Undefined variable: cookieData. Kam tento soubor umístit aby byly použitelné jeho funkce a nehlásilo to chybu?

Díky moc

Zax
Člen | 370
+
0
-

Nevím, jak je SMF napsané, ale myslím, že nebude stačit includnout jenom jeden soubor…

Pokud si ty funkce tahají z globálního prostoru nějaké proměnné, které jsou definované v jiném souboru (což tipuji je tento případ), tak bude nutné buď naincludovat i ten jiný soubor, nebo si ty proměnné nějak nadefinovat sám.

Ale jenom střílím od boku ;-)

Croc
Člen | 270
+
0
-

Právě že ne, protože se jedná o API pro komunikaci SMF s něčím (jeden soubor) a opačně (druhý soubor). Tento způsob je používán hodně.

API s návodem zde: http://www.simplemachines.org/…ty/index.php?…

Právě pátrám kam ho includovat do Nette, aby to chodilo a nepadalo na chybu.

Chci to zkusit na odhlášení. Odhlásit se na SMF přes Nette aplikaci.

Editoval Croc (23. 1. 2015 8:52)

Croc
Člen | 270
+
0
-

Jakou logiku hashování hesla používá Nette?

Chci udělat ověření hesla na databází SMF. Heslo + salt (4 znaky) a hashovací funkce je bcrypt.

Na single-sign-on zatím kašlu. Nemám na to znalosti :( Nette komunita neví nic o SMF a opačně :) Takže mi asi zatím nikdo neporadí :(

Editoval Croc (26. 1. 2015 8:45)

Jan Endel
Člen | 1016
+
0
-

Hashovat password můžeš jak chceš, ale dělej to nejlépe jediným správným způsobem.