PDA

Zobacz pełną wersję : Logowanie użytkownika bez formularza



MarcinD
08-05-2007, 14:18
Witam,
Znowu utknąłem. Potrzebuję zalogować użytkownika ale bez żadnego (nawet ukrytego formularza). Musi być to całkowicie bez jakiejkolwiek ingerencji użytkownika i zupełnie przezroczyste dla niego. No i w końcu po zalogowaniu nie powinno następować żadne przekierowanie ani też pojawiać się tekst o pomyślnym logowaniu.
Widziałem że w klasie mosMainFrame jest funkcja login(). Próbowałem użyć w moim skrypcie $mainframe->login( user, pass ); ale nie chce działać.
Jakiś pomysł ?

stone
09-05-2007, 00:29
Ale jak bez formularza to na jakiej podstawie chcesz użytkownika logować?

MarcinD
09-05-2007, 10:09
Mam napisany własny moduł do logowania niezwiązany z talebą users joomli. Po zalogowaniu chciałby przy okazji by automatycznie użytkownik logowany był na ustawionego na sztywno usera z Joomli (user tylko fronendowy jeśli to ma jakieś znaczenie).

zwiastun
10-05-2007, 00:25
Sory: Mam problem. Chciałbym sobie zrobić dobrze. Tylko inaczej, niż to jest zrobione. Nawet sobie zrobiłem narzędzie, które mi ma robić dobrze. Ale to narzędzie nie ma być związane w żaden sposób ze spisem tej sfery, w której mi ma robić dobrze. Powiedz mi jak to zrobić...

Logowanie jest REJESTROWANIEM się użytkownika, konkretnego użytkownika na konkretny login i klucz sprawdzajacy autentyczność. Więc albo chcesz logować użytkowników albo nie chcesz. Jak nie chcesz, to je po prostu wyłącz w konfiguracji, nie publikuj modułu logowanie i po wszystkim. Natomiasty nie oczekuj, że ktoś tutaj Ci doradzi, jak typową funkcję przerobić na odrzutowiec.

MarcinD
10-05-2007, 08:48
Ok - rozumiem - nie ma to jak kreatywność ;-)
Pozdrawiam

pzaremba
17-05-2007, 16:27
Ok - rozumiem - nie ma to jak kreatywność ;-)
A ja nie rozumiem.... Jak dla mnie pytanie MarcinaD jest jak najbardziej poprawne i nie zalicza sie do tych, na które odpowiada sie przypowieściami i "robieniu dobrze", ale to tylko moje zdanie... Wracając do tematu

Ja tez od jakiegoś czasu szukam sposobu na "zewnętrzne" zalogowanie użytkownika. Tak na prawdę, to wystarczyłoby pewnie tylko ustawienie gdzieś wszystkich potrzebnych zmiennych, aby joomla myślała, że zalogował sie użytkownik o jakichśtam uprawnieniach.

Niestety nie udało mi się zrobić tego w jakiś czysty sposób (bez grzebanie w kodzie rdzenia joomli). Mam na razie plugin(mambot) w kategorii system i on zajmuje sie sprawdzaniem czy użytkownik jest zalogowany po mojemu, ale przydałaby sie opcja, która zaraz po Joomlowym sprawdzeniu zalogowania nadpisałaby co trzeba. Tylko:

1. Co trzeba nadpisać?
2. Czy da sie to zrobić jakimś pluginem, bez grzebnia w kodzie joomli właściwej?

pozdro

zwiastun
18-05-2007, 04:29
Szukac można naprawdę różnych rzeczy, np. Świętego Graala.
Problem jest z rzędu: jak nie wchodząć wejść, jak nie kupując, kupić, itd.
Logowanie się jest potrazam się, ale widać TRZEBA, żeby dotarło - przedstawieniem się konkretnego użytkownika i sprawdzeniem, czy to on, czy psi ogon.
Logowanie jest po to, żeby coś umożliwić. Po co jakieś wygibasy - "logowanie" w sposób niewidoczny, żeby dostać coś co można dostać bez faktycznego logowania się.

Albo ja czegoś nie rozumiem.

MarcinD
18-05-2007, 09:24
Taaak właśnie wydaje mi się że nie rozumiesz. Myślałem, że Strefa developerów > Programowanie pod Joomla! jest przeznaczona raczej dla ludzi który będą coś tworzyć a nie administrować.
Systemy jak Joomla zdaje się powstały i są na tyle elastyczne by ludzie którzy trochę piszą (a nie administrują) mogli swobodnie dostosować system do swoich potrzeb. Skoro komuś jest potrzebna wiedza by zrobić coś w określony sposób, to wydaje mi się być normalnym takie pytanie. Mogę się też mylić i być może 'programowanie' w wydaniu joomla PL jest właściwie administrowaniem - wówczas sugeruję zmienić nazwę ;-)

zwiastun
19-05-2007, 15:04
Mylisz się, ale w kwestii tego, co chcesz zrobić. I Tobie się chyba tylko wydaje, że rozumiesz. Bo jak na razie, to
a) nie napisałeś tak naprawdę, co to ma być,
b) nie napisałeś, po co to ma być,
c) nie podałeś żadnego rzeczowego argumentu, podważającego, co Ci napisałem.
Jak chcę coś dostosować do swoich potrzeb, to zaczynam od rozważenia, co to za potrzeba, czy to ja ją sobie ubzdurałem, czy rzecz jest potrzebna użytkownikom i do czego.
Jak proszę o pomoc, to też wyjaśniam założenia, a nie dyskutuję obok tematu.

PS. Jak widać temat wywołuje ogromne zainteresowanie. Pewno dlatego, że wszyscy rozumieja, a ja nie.

kkmm1
20-05-2007, 17:52
Nie przejmuj sie Zwiastun ja tez wiekszego sensu w tym nie widze :) Wylaczcie logowanie i wszystkie materialy zrobic na dostepnosc publiczna koniec.. cel osiagniety :)

MarcinD
22-05-2007, 08:23
Mylisz się, ale w kwestii tego, co chcesz zrobić. I Tobie się chyba tylko wydaje, że rozumiesz.
Kurcze jakbym słuchał bliźników.
Szkoda czasu na puste gadki - dzięki za poświęcony czas i kilka zwiastunowych przypowieści.

pzaremba
22-05-2007, 11:38
A jednak można...

$_MAMBOTS->registerFunction( 'onAfterStart', 'overrideUser' );
function overrideUser(){
global $mainframe;

if($userMaByćZalogowany){
$mainframe->login('username',md5('password'));
}else{
$mainframe->logout();
}
}Zrobiłem plugin(mambot), który jest uruchamiany gdy joomla odpali zdarzenie 'onAfterStart'. (podejrzyj sobie index.php lub index2.php: $_MAMBOTS->trigger( 'onAfterStart' );). Mambot musi być z grupy 'system', bo chyba tylko takie są ładowane na początku ($_MAMBOTS->loadBotGroup( 'system' );).
Nie jest to rozwiązanie jakoś bardzo "piękne", ale nie wymaga ingerencji w rdzeń joomli. Wadą tego rozwiązania jest to, że przy kazdym załadowaniu strony użytkownik jest logowany lub wylogowywany, ale wystarczy sobie rozbudować funkcję overrideUser i będzie ok.

Jeśli chodzi o emocje związane z wątkiem, to proponuję je wygasić uznając co następuje:
MarcinD - mógł po prostu zapytać precyzyjniej, gdzie, kiedy i jakie zmienne ustawić za pomocą własnego skryptu, aby joomla myslała, że zalogował sie uzytkownik 'x';
zwiastun - mógł wysilić się bardziej i spróbować domyślić się o co chodzi zamiast tworzyć przypowieści;
Może tak być?? i nie mówmy juz o tym więcej...

daniofantasy
18-02-2008, 06:49
Nie no - zwiastun - nie przesadzaj - napisał dokładnie, o co chodzi - chodzi o zalogowanie użytkownika bez użycia formularza - i tutaj, aby to zrobić będzie trzeba odwołać się do kodu, który służy za logowanie w joomli. Zobaczyć jakie zmienne przy użyciu jakich funkcji i klas lecą między kolejnymi etapami weryfikacji użytkownika i albo dorobić interface, albo napisać komponent, albo zastosować coś z istniejącego już softu - pytanie było o to, jaki soft zastosować lub co odpowiada w joomli za logowanie użytkowników. Najprościej, aby osiągnąć cel moim zdaniem wystarczy przesłać to, co przesyła formularz logowania wraz z użyciem wszystkiego, co używa joomla do logowania i potem zrobić przekierowanie (jest do tego w joomli odpowiednia funkcja) z powrotem.