Anmeldung mit Facebook Connect

Begonnen von bambussprosse, 11 November 2013, 20:13:47

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

bambussprosse

Guten Abend!

Auf sehr vielen bekannten Webseiten fast schon Standard der zusätzliche Facebook Connect – Button mit deren Hilfe es möglich ist sich via Facebook anzumelden.
Meine Frage richtet sich an alle Programmierer und Kenner des Pragmamx-System, in wie weit ist dies möglich bzw. gibt es vielleicht schon unveröffentlichte Codeschnipseln?

REKs

Das würde mich auch interessieren, denn ich wage zu behaupten, dass das Überleben von pragmaMx von Facebook Connect abhänging ist.
Gruß,
René

CMS-Version: pragmaMx 1.12.3
PHP-Version: 5.2.17
MySQL-Version: 5.1.72
Server-Version: Apache

Olaf

ich denke mal nicht, das Facebook irgend jemandem ein Überleben sichern kann.... :D
im Moment wird der Facebook-Login vom pragmaMx-Team nicht integriert, da wir damit eine Sicherheitslücke einbauen. Vielleicht lässt sich ja auch Facebook mal was g'scheit sicheres einfallen...

Sollten hier aber noch ein paar umsetzbare Ideen kommen, die ein sicheres Login ermöglichen, haben wir ein offenes Ohr :)
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

REKs

Hi Olaf,

sicher hast Du recht, dass Facebook niemandem das Überleben sichern kann und auch damit, dass die Sicherheit nunmal vor geht ... aber es ist leider auch so, dass sich die Leute immer weniger in Foren und anderen Projekten außerhalb Facebook und Co. beteiligen. Die aktiven User von einst scheinen sich heute lieber bei Facebook zu tummeln. Andere Websites werden zwar noch besucht, aber man beteiligt sich nicht mehr aktiv. Es werden keine Beiträge mehr in Foren geschrieben oder Bilder in Galerien hochgeladen. Die Leute wollen sich anscheinend nicht mehr überall registrieren.
Ich unterstelle dem gemeinen User auch mal, dass er Facebook für sicherer hält, als eine privat geführte Website bzw. Forum.
Gruß,
René

CMS-Version: pragmaMx 1.12.3
PHP-Version: 5.2.17
MySQL-Version: 5.1.72
Server-Version: Apache

anmShinichi

#4
... leider ist das so und man leidet darunter, man strengt sich mit Aktionen an, um vielleicht ein Hauch von Feedback zu bekommen. Facebook wird zum Austausch genutzt, fremde Seiten nur noch selten. Zusätzlich ist PMX halt immer ein CMS gewesen, weniger ein Community-System. Hatte man die Möglichkeiten, konnte man sich Funktionen programmieren, um Wünsche der User zu erfüllen. Aber man kann nicht jede Funktion, die andere als Standard haben, immer programmieren. (und irgendwie macht jeder was, was am Ende Modifikationen am Core erfordern ~URL) Deswegen habe ich mich für die meine Community auf andere Wege gemacht und nutze PMX selbst weiter auf Seiten, wo eine hohe Useraktivität und "Registrierungen überhaupt" nicht notwendig sind.

Tatsächlich habe ich wegen dem Facebook-Connect überhaupt anfangen, darüber nachzudenken, auch wenn es kein Hauptkriterium ist.
MonsterWorks - www.monsterworks.de

Fokuna2

aber wenn doch mal eine Sichere Lösung gefunden wird, wünsche ich mir das diese Funktion optional ist, den mich nerven eigentlich die F-Button schon dauern.

Mit freundlichen Grüßen

Mit freundlichen Grüßen
Thomas
Neue Daten:
Mysql: 8.0.28-19
PHP-Version: 7.4 ->8.0.x

Webfan

Moin moin,
Zitatim Moment wird der Facebook-Login vom pragmaMx-Team nicht integriert, da wir damit eine Sicherheitslücke einbauen.
Quark.
Bitte ehrlich bleiben und die User nicht verunsichern!

- Eine Anmeldung via OAuth ist in der Regel nicht weniger sicher als ein "reguläres" PMX Login.
- Sicherheitslücken entstehen in der Regel in diesem Fall meist durch fehlerhafte Implementierungen, offline-hacks, Unachtsamkeit oder durch Verzicht auf https ...
- Ein und das selbe Login für alle möglichen Websites zu verwenden ist GENERELL fragwürdig und hier aber out of our scope.
- Facebook ansich ist äußerst fragwürdig, facebook ist jedoch nicht fragwürdig nur weil das OAuth Protokoll benutzt wird.
- Persönlich finde ich den OpenID Ansatz besser, per diverser Tokens "in meinem Namen" Nachrichten oder sonstwas rumzuposten oder gar über wasweißichfürAPIs wasweißichfürleute zu wasweißich für Spiele einzuladen halte ich für ein äußerst fragwürdiges Unterfangen.   ...Aber wie schon gesagt, so sind sie die Facebook user...
- Die sichersten Methoden sind proprietär, die bekannten und gebräuchlichen diversen Authentifizierungs- und Zertifikatsmechanismen sind zwar ganz nett und gewährleisten Kompatibilität zwischen den zahlreichen Anwendungen, wer aber mit Sicherheit argumentiert und darauf hinaus ist wird eigene Lösungen erstellen bzw. die gebräuchlichen Methoden kombinieren, seine Daten so verschlüsseln das sie gar nicht erst als verschlüsselte Daten zu erkennen sind, vielleicht wird er Bild- oder andere Binärdateien irgendwo in der Welt verteilen oder gar versuchen seinen Usern diverse selbstunterzeichnete Browserzertifikate aufzunötigen oder dergleichen, ... Mist, wieder nix für Facebook User!

- Es ist absolut OK wenn man keine Lust auf facebook hat und ich denke auch nicht das so ein facebook login im PMX Core angemessen wäre, erfahrungsgemäß hat jeder Webmaster seine eigenen Prioritäten und jede OpenID oder OAuth Implementation ist ein wenig anders, es gibt zur Implementierung zahlreiche fertige oder leicht zu verwendende Lösungen, eine Lösung von der Stange KÖNNTE fragwürdig sein?

- Was aber denke ich nicht ganz OK ist, ist hier den Experten rauszukotzen und zu behaupten das PragmaMx wäre sicher und könnte duch eine Facebook-Login Implementation zwangsläufig in seiner Sicherheit beinträchtigt werden.

- PragmaMx ist NICHT besonders sicher, allenfalls ausreichend.

- Bereits in anderen Threads wurden Vorschläge zur Erhöhung der Sicherheit gemacht, viele Dinge die eigentlich heutzuztage Standard sein sollten fehlen bisher im PragmaMx, stattdessen liest man hier von
- Usern die glauben sie würden mit ASCII ihre E-Mails verschlüsseln
- Programmierer die wohl noch nie was von mysql_real_escape_string gehört haben, und das seit Jahren...?
- Userpasswörter werden immer noch als ungesalzene md5 hashes abgespeichert?
- Anmeldedaten und Cookie Informationen werden, man glaubt es kaum, tatsächlich zur fehlerfreieren Klartextübertragung base64 encodiert, wozu?
- Und so geht es wahrscheinlich weiter ...

Nicht das mich jemand falsch versteht, es ist absoult ok wenn man kein Sicherheitsexperte ist und trotzdem ein brauchbares CMS entwickelt, keine Frage.
Möglich das es mal Zeiten gab in denen sich das PMX noch überdurchschnittlich sicher schimpfen konnte, aber im heutigen Internetzeitalter sollte man schon ein wenig mehr bieten wenn man mit dem Prädikat Sicherheit werben will.
Ein einfaches "ich habe keine Lust ein facebook login zu erstellen" hätte auch gereicht und wäre glaubwürdiger!

Viele Grüße + schönes Wochenende
Till

Olaf

@Webfan...
eigentlichschade, daß du dir kein eigenes CMS bastelst und somit auf anderen rumhacken musst.....

Was hier nur klar gestellt werden soll ist: PMX sagt von sich nicht, das sicherste CMS zu sein !!! Wir versuchen nur, die, in diesem Code die mögliche SIcherheit einzubauen. Viele, der von Dir genannten Verbesserungen sind bereits schon länger (auch schon 1.12) vorhanden. Weitere werden bei der V2 vorhanden sein. Alles wird nie möglich sein....

In diesem Sinne ist es nicht notwendig, die User zu verunsichern. Facebook-Login hin und her,im Moment wirds nicht kommen, und das liegt nicht an der Lust....

g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

REKs

Zitat von: TerraProject am 11 Januar 2014, 10:32:48
Facebook-Login hin und her,im Moment wirds nicht kommen, und das liegt nicht an der Lust....



Schade...
Gruß,
René

CMS-Version: pragmaMx 1.12.3
PHP-Version: 5.2.17
MySQL-Version: 5.1.72
Server-Version: Apache

Webfan

TerraProject hat natürlich recht: Rumnörgeln ist natürlich leichter, das kann jeder...  :thumbup:

Conredo

Hm, mit Facebook habe ich mich noch nie so recht anfreunden können. Natürlich ist es schade, wenn bei Bedarf kein Facebook Connect – Button integriert werden kann. Aber PragmaMx nutze ich dennoch gerne. Was man bei der Sicherheit noch machen kann - dafür ist ein Forum wie dieses hier doch bestens als Pool für Vorschläge geeignet :)

Das Problem sitzt vor dem PC.

Pragmamx 1.12.3.

fjuergens

Also für mich stellt sich dann doch die Frage ob Facebook Login oder nicht ganz anders ...

Warum brauche ich einen direkten Login zu Facebook von meinem CMS aus ???
wenn ich das dann alles noch bei Facebook eintragen soll kann ich doch das CMS abschalten....

Ich denke Facebook ist eine Sache und das CMS ein andere.

Auch auf meiner Seite die von News und Veranstaltungen lebt kam auch die Frage nach Facebook....
habe ich ganz einfach geregelt... kann ja derjenige machen der meint es zu brauchen.

Und da scheiten sich schon die Geister/Götter den die Arbeit will keiner machen...
den News und Veranstaltungen zu pflegen ist doch etwas mehr Arbeit als
nur mal eben zu posten ich welcher Eisdiele ich hocke......

In diesem Sinn.......  :drinks: yamas

mit netten Grüßen aus Athen / GR
F.Juergens

anmShinichi

Ich glaube, du verstehst es ein wenig falsch.

Das Facebook Login stellt eine alternative Registrier- und Login-Methode zur Verfügung, so dass sich interessierte User per Facebook auf deinem CMS registrieren und einloggen können, ohne selbst das Registrierungs- bzw. Login-Formular verwenden zu müssen. Und das hat schon einen gewissen Charme, wenn man davon ausgeht, dass schon ziemlich viele dort registriert sind.

Dabei geht es nicht um den Inhalt, der dann doppelt existieren muss. Das ist eine andere Geschichte, die auch von vielen betrieben wird. Aber da gebe ich dir Recht... Man hat das CMS und da findet man unseren Content...

Den Usern aber den Luxus zu geben, sich ohne große Mühe bei uns als registrierter User integrieren zu können, ist ja auch für uns von Vorteil. Der User benutzt den Facebook-Connect-Button und unserem CMS würde hinterlegt werden, dass eine Facebook-Session-ID (+weitere Daten wie E-Mail-Adresse) zu einem dann neuen User gehört. Loggt er sich später per Facebook-Connect ein, kann er direkt zugeordnet werden. Der User drückt eigentlich nur einen Button und ist User bei uns im CMS. Im Hintergrund werden Daten von Facebook geholt, damit unser CMS weiß, wer sich dann bei uns anmeldet.

Es ist eigentlich eine Kleinigkeit, was da abläuft, aber dafür sind halt systemweite Integrationen notwendig.


Gruß
MonsterWorks - www.monsterworks.de

Biker

Die Vorstellung dass Pragma mit Fratzenbuch "gekoppelt" würde allein bringt meine Fußnägel zum Aufrollen.

Nee nee...das braucht kein Mensch, es sei denn er steht auf die totale Überwachung und nutzt auch Whats App, Skype und andere Überwachungstools.....
Detektei Martin - wir bringen Licht ins Dunkle!

anmShinichi

1. wird eh alles von der NSA überwacht.
2. muss eine FB-Integration ja nicht benutzt werden, wenn man es nicht möchte.
3. jeder kann facebook etc. blocken, wie man selbst möchte, egal ob User oder CMS-Betreiber

... alles andere hab ich doch wieder gelöscht.. einfach nicht aufregen über solche Kommentare...
MonsterWorks - www.monsterworks.de

REKs

Ich bin ganz anmShinichi's Meinung und würde dafür, wenn vorhanden, den Like-Button drücken.  :thumbup:  :BD:
Gruß,
René

CMS-Version: pragmaMx 1.12.3
PHP-Version: 5.2.17
MySQL-Version: 5.1.72
Server-Version: Apache

bambussprosse

Hallo Leute!

Ich habe mit der Hilfe von Webfan das Facebook-Login bereits in die Tat umsetzen können und bin mit dem Ergebnis sehr zufrieden. (Es gab bereits einige erfolgreiche Anmeldungen über Facebook)

Habe dazu einen Artikel mit einigen Screenshots bereits vor einiger Zeit erstellt.

Zum Artikel:
http://schmeckts.at/News-Mit-Facebook-Connect-bei-www-schmeckts-at-registrieren-und-regelmaessig-einloggen-item-30.html

Liebe Grüße
Bambussprosse

Olaf

Na, das ist doch toll.  :BD: Frag doch mal den Entwickler, ob er seine Idee der Community hier frei zur Verfügung stellt. Das würde dem thread hier doch ungemein helfen..... :smile:
Ich würde mich freuen, wenn andere mit Ihrem Wissen, ihren Erfahrungen und ihrem Können die Community bereichern würden.

In diesem Sinne, danke für die Info  :thumbup:
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

nudels64

Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

AlternativeComputing

MfG

Peter

bambussprosse

#20
ZitatFrag doch mal den Entwickler, ob er seine Idee der Community hier frei zur Verfügung stellt.

Ohne jetzt Rücksprache mit Webfan deswegen gehalten zu haben, kann ich möglicherweise folgendes verraten.   :smile:

Webfan hat das Facebook-Connect Script via OAauth (ist ein offenes Protokoll, das eine standardisierte, sichere API-Autorisierung für Desktop-, Web- und Mobile-Applikationen ermöglicht) verwirklichen können.

Zusätzlich mit einigen Anpassungen, welche mir besonders wichtig waren, hat dies Webfan (kostenpflichtig) wie immer zu meiner größten Zufriedenheit umgesetzt. Kann seine Dienste als Programmierer jedem empfehlen.  :thumbup:

Folgende Faktoren waren mir dabei extrem wichtig:

Sicherheit
Bequemlichkeit für den User bzw. das Mitglied
Freie Entscheidungsmöglichkeit (die Facebook Verknüpfung kann im Konto jederzeit gelöscht werden.)


Andi

Zitat von: bambussprosse am 24 Januar 2014, 15:05:27
ZitatFrag doch mal den Entwickler, ob er seine Idee der Community hier frei zur Verfügung stellt.

Ohne jetzt Rücksprache mit Webfan deswegen gehalten zu haben, kann ich möglicherweise folgendes verraten.   :smile:

Webfan hat das Facebook-Connect Script via OAauth (ist ein offenes Protokoll, das eine standardisierte, sichere API-Autorisierung für Desktop-, Web- und Mobile-Applikationen ermöglicht) verwirklichen können.

Zusätzlich mit einigen Anpassungen, welche mir besonders wichtig waren, hat dies Webfan (kostenpflichtig) wie immer zu meiner größten Zufriedenheit umgesetzt. Kann seine Dienste als Programmierer jedem empfehlen.  :thumbup:

Folgende Faktoren waren mir dabei extrem wichtig:

Sicherheit
Bequemlichkeit für den User bzw. das Mitglied
Freie Entscheidungsmöglichkeit (die Facebook Verknüpfung kann im Konto jederzeit gelöscht werden.)


Da brauche ich jetzt nichts weiter zu schreiben, oder?  :gruebel: :gruebel: :puzzled:
schön´s Grüssle, Andi

nudels64

Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

AlternativeComputing

Zitat von: Andi am 24 Januar 2014, 15:35:43
Zitat von: bambussprosse am 24 Januar 2014, 15:05:27
ZitatFrag doch mal den Entwickler, ob er seine Idee der Community hier frei zur Verfügung stellt.

Ohne jetzt Rücksprache mit Webfan deswegen gehalten zu haben, kann ich möglicherweise folgendes verraten.   :smile:

Webfan hat das Facebook-Connect Script via OAauth (ist ein offenes Protokoll, das eine standardisierte, sichere API-Autorisierung für Desktop-, Web- und Mobile-Applikationen ermöglicht) verwirklichen können.

Zusätzlich mit einigen Anpassungen, welche mir besonders wichtig waren, hat dies Webfan (kostenpflichtig) wie immer zu meiner größten Zufriedenheit umgesetzt. Kann seine Dienste als Programmierer jedem empfehlen.  :thumbup:

Folgende Faktoren waren mir dabei extrem wichtig:

Sicherheit
Bequemlichkeit für den User bzw. das Mitglied
Freie Entscheidungsmöglichkeit (die Facebook Verknüpfung kann im Konto jederzeit gelöscht werden.)


Da brauche ich jetzt nichts weiter zu schreiben, oder?  :gruebel: :gruebel: :puzzled:

:thumbup:
MfG

Peter

bambussprosse

Da ich diesen Thread ursprünglich eröffnet hatte und das eigentliche Thema (Anmeldung mit Facebook-Connect) auf großes Interesse gestoßen ist, hatte ich mir erlaubt darauf hinzuweisen, dass mit programmiertechnischer Unterstützung von Webfan dies in meinen Fall erfolgreich umgesetzt worden ist.

Leider wurde mein Text danach von Andi mit der Zitatfunktion und der teilweise Einfärbung von einigen Textpassagen, in einen vollkommen anderen Kontext gebracht.

Bitte gebt doch Webfan die Möglichkeit darauf selbst zu antworten. Möglicherweise erklärt sich Webfan dazu bereit ein derartiges Tool für PragmaMx kostenlos zur Verfügung zu stellen.  (?)

Webfan

Yeah! Mal wieder Webfan vs. Facebook Bashing  :thumbup:

Ne mal im Ernst, eines vorweg: Die antikommunistische imperialistische Ausbeutung wird eines Tages ein Ende finde, außerdem verstehe ich natürlich Andis Aussage als kleinen Spaß, im Sinne des Foren-Friedens verzichte ich jetzt hier darauf an Formulierungen rumzudeuten und hier ein Streitgespräch vom Zaun zu brechen.

Hallo Andi erstmal, willkommen zurück in Deinem Zuhause!
Zitat
Na, das ist doch toll.  biggrin Frag doch mal den Entwickler, ob er seine Idee der Community hier frei zur Verfügung stellt. Das würde dem thread hier doch ungemein helfen.....
Da, bitte:
<?php


class oauth_schmeckts
{

 CONST 
__CONFIG_INI_DIR__ 'modules/Lokale/config/oauth_schmeckts/';

 private 
$bserialize;

 public 
$success;

 public 
$userdata;
 public 
$isRegistered;
 public 
$isRegiestered_OAuth;

 public 
$user;

 public 
$provider;
 public 
$template_navbar;
 public 
$template;
 public 
$conf;

 public 
$client;  // & oauth_client_class

 
public $unames;
 public 
$name_anrede;

 public 
$userdir;
 public 
$file;

 public 
$REG;
 public 
$userdata_provider_first;
 public 
$userdata_provider;


  function 
__construct($success$client$user$provider 'facebook')
   {
     
$this->success $success;
     
$this->client = &$client;
     
$this->user = &$user;
     
$this->provider $provider;
     
$this->isRegiestered_OAuth FALSE;
     
$this->isRegistered FALSE;
     if(
MX_IS_USER)$this->isRegistered TRUE;
     
$this->userdata mxGetUserData();
     
$this->loadConfig();
     
$this->unames = array();
     
$this->userdir NULL;
     
$this->bserialize = new bserialize();
   }
   
//constructor


  
public function loadConfig()
   {
    
$ini = new wINI();
    
$this->conf $ini->load$this->dirName($this->provider).$this->provider.'.settings.ini' );
    
$this->template_navbar $this->conf['provider_settings']['template_navbar'];
    
$this->template $this->conf['provider_settings']['template'];

   }

  function 
mkname($name ''$first_name ''$last_name ''$username '')
    {
     
$n $username;
     if(
$name != '')$n $name;
     if(
$first_name != '')$n $first_name;
     if(
$first_name != '' && $last_name != '')
      {
        
$n $first_name.' '.$last_name;
        
$n strtolower($n);
        
$n ucwords($n);
      }
     return 
$n;
    }

  function 
mkuname($n)
   {
     
$umlaute = array('.''-''Ä''ä''Ö''ö''Ü''ü');
     
$replace = array('_''_''Ae''ae''Oe''oe''Ue''ue');
     
$n str_replace($umlaute$replace$n);
     
$n preg_replace("/\s+/"' '$n);
     
$n preg_replace("/\s/"'_'$n);
     
$n preg_replace("/[^A-Za-z0-9_]/"''$n);
     return 
$n;
   }


  function 
dirName($provider NULL)
   {
    if(
$provider === NULL && $this->provider !== '')$provider $this->provider;
    return 
self::__CONFIG_INI_DIR__.'/provider.'.$provider.'/';
   }
   
//eof dirName


  
private function create()
   {
    global 
$prefix;

     if(!
$this->user->id || empty($this->user->id) || $this->user->id == '')return log_error2'Cannot get facebook User-ID'__FILE____LINE__'oauth_schmeckts::create' );

     if(
$this->isRegiestered_OAuth !== FALSE)return $this->isRegiestered_OAuth;

     
$this->userdir str_replace('{ID}'$this->user->id$this->conf['provider_settings']['dir'] );
     
$this->file $this->userdir.$this->conf['FILES']['regdata'];

     if(!
is_dir($this->userdir) )mkdir($this->userdir);
     
chmod($this->userdir0777);

     
$this->REG = array();
     
$this->REG = (object)$this->REG;
     
$this->REG->isRegistered $this->isRegistered;
     
$this->REG->uid 0;
     if(
MX_IS_USER)
       {
         
$this->REG->uid $this->userdata['uid'];
       }
    
/*
                access_token_expiry='".mxAddSlashesForSQL($this->client->access_token_expiry)."',
            access_token='".mxAddSlashesForSQL($this->client->access_token)."',
            */
    
$q="INSERT INTO ".$prefix."lok_OAuth_users
           SET
            verified='"
.intval($this->user->verified)."',
            provider='"
.mxAddSlashesForSQL($this->provider)."',
            uid='"
.intval($this->REG->uid)."',
            user_id='"
.intval($this->user->id)."',
            scope_unique='"
.mxAddSlashesForSQL($this->conf['settings_user']['scope_unique'])."',
            scope_provider='"
.mxAddSlashesForSQL($this->conf['settings_user']['scope_provider'])."',
            email='"
.mxAddSlashesForSQL($this->user->email)."',
            username='"
.mxAddSlashesForSQL($this->user->username)."',
            first_name='"
.mxAddSlashesForSQL($this->user->first_name)."',
            last_name='"
.mxAddSlashesForSQL($this->user->last_name)."',
            name='"
.mxAddSlashesForSQL($this->user->name)."',
            link='"
.mxAddSlashesForSQL($this->user->link)."',

            dir='"
.mxAddSlashesForSQL($this->userdir)."'
        "
;
     
sql_query($q);
    
// if(mysql_error() )//die(mysql_error() );//return NULL;
     
$this->REG->id_OAuth_user_db mysql_insert_id();
     
$this->REG->time time();
     
$this->REG->IP MX_REMOTE_ADDR;

     
$this->userdata_provider_first $this->user;
     
$this->userdata_provider $this->user;


     
$this->writeFiles( array('REG''userdata_provider''userdata_provider_first') );

     
$this->isRegiestered_OAuth TRUE;

         
$msg 'Ein Facebook-User hat Ihre Seite besucht, ein Profil wurde angelegt:';
         
$msg.="\n";
         
$msg.= $this->user->first_name.' '.$this->user->last_name;
         
$msg .= "\n";
         
$msg .= $this->user->link;
         
$msg .= "\n";
         
LOK_ADMIN_MESSAGE::msg($msg);

     return 
$this->isRegiestered_OAuth;
   }


  public function 
register($u)
   {

     
$this->userdir str_replace('{ID}'$u['user_id'], $this->conf['provider_settings']['dir'] );
     
$this->file $this->userdir.$this->conf['FILES']['regdata'];
     
$fp fopen($this->file'rb');
     
$df fread($fpfilesize($this->file) );
     
fclose($fp);

     
$this->REG $this->bserialize->unserialize($df);
     
$this->REG->isRegistered TRUE;
     
$this->REG->uid $u['uid'];
     
$this->writeFiles( array('REG') );

         
$msg 'Ein Facebook-User hat sich bei schmeckts.at registriert:';
         
$msg.="\n";
         
$msg .= 'UID: '.$this->REG->uid;
         
$msg .= "\n";
         
$msg .= $u['uname'];
         
$msg .= "\n";
         
LOK_ADMIN_MESSAGE::msg($msg);
   }


  public function 
readFiles$files = array('REG''userdata_provider''userdata_provider_first''anmeldevorgang') )
   {
     
$this->userdir str_replace('{ID}'$this->user->id$this->conf['provider_settings']['dir'] );

     foreach(
$files as $file)
      {
         if(
$file == 'REG')
              {
                  
$fp fopen($this->userdir.$this->conf['FILES']['regdata'], 'rb');
                  
$data fread($fpfilesize($this->userdir.$this->conf['FILES']['regdata']) );
                  
fclose($fp);
                  
$this->REG $this->bserialize->unserialize($data);
              }
         if(
$file == 'userdata_provider')
              {
                  
$fp fopen($this->userdir.$this->conf['FILES']['userdata_provider'], 'rb');
                  
$data fread($fpfilesize($this->userdir.$this->conf['FILES']['userdata_provider']) );
                  
fclose($fp);
                  
$this->userdata_provider $this->bserialize->unserialize($data);
              }
         if(
$file == 'userdata_provider_first')
              {
                  
$fp fopen($this->userdir.$this->conf['FILES']['userdata_provider_first'], 'rb');
                  
$data fread($fpfilesize($this->userdir.$this->conf['FILES']['userdata_provider_first']) );
                  
fclose($fp);
                  
$this->userdata_provider_first $this->bserialize->unserialize($data);
              }

      }

   }
   
//writeFiles


  
public function writeFiles$files = array('REG''userdata_provider''userdata_provider_first''anmeldevorgang') )
   {
     
$this->userdir str_replace('{ID}'$this->user->id$this->conf['provider_settings']['dir'] );

     foreach(
$files as $file)
      {
         if(
$file == 'REG')
              {
                  
$data $this->bserialize->serialize($this->REG);
                  
$fp fopen($this->userdir.$this->conf['FILES']['regdata'], 'wb');
                  
fwrite($fp$data);
                  
fclose($fp);
              }
         if(
$file == 'userdata_provider')
              {
                  
$data $this->bserialize->serialize($this->userdata_provider);
                  
$fp fopen($this->userdir.$this->conf['FILES']['userdata_provider'], 'wb');
                  
fwrite($fp$data);
                  
fclose($fp);
              }
         if(
$file == 'userdata_provider_first')
              {
                  
$data $this->bserialize->serialize($this->userdata_provider_first);
                  
$fp fopen($this->userdir.$this->conf['FILES']['userdata_provider_first'], 'wb');
                  
fwrite($fp$data);
                  
fclose($fp);
              }

      }

   }



  public function 
checkIsRegistered_OAuth($create TRUE)
   {
     
$this->isRegiestered_OAuth FALSE;
     
$this->userdir str_replace('{ID}'$this->user->id$this->conf['provider_settings']['dir'] );
     
$this->file $this->userdir.$this->conf['FILES']['regdata'];
     if(
file_exists($this->file) )$this->isRegiestered_OAuth TRUE;

     if(
$this->isRegiestered_OAuth !== TRUE && $create === TRUE)
       {
          
$this->isRegiestered_OAuth $this->create();
       }elseif(
$this->isRegiestered_OAuth === TRUE)
            {
              
$this->readFiles( array('REG') );
            }

     return 
$this->isRegiestered_OAuth;
   }


  public function 
view_first()
   {
     global 
$pagetitle;


        
$pagetitle $this->conf['provider_settings']['pagetitle'];


        if(!
$this->success || !is_numeric($this->user->id) )
         {

          require(
'header.php');
          
$tpl load_class('Template');
          
$tpl->init_path(__FILE__);

          
$tpl->display('navbar.html');
          
$tpl->display($this->template_navbar);

          echo 
'<br /><br /><span class="webfan-red">Die Anmeldung ist leider fehlgeschlagen.</span><br />';
          echo 
'<br /><a href="'.PMX_HOME_URL.'/modules.php?name=User_Registration">Weiter...</a><br /><br />';
          
$tpl->display('foot.html');
          require(
'footer.php');
          die();
         }

        
$this->checkIsRegistered_OAuth(TRUE);
        if(
MX_IS_USER)$this->login_UserRegistered();
        if(!
MX_IS_USER)$this->check_login();

        
$this->name_anrede $this->mkname($this->user->name,
                                                  
$this->user->first_name,
                                                  
$this->user->last_name,
                                                  
$this->user->username);

        
$this->unames = array();
        if(
$this->name_anrede != '')$this->unames[] = $this->mkuname($this->name_anrede);
        if(
$this->user->name != '')$this->unames[] = $this->mkuname($this->user->name);
        if(
$this->user->first_name != '')$this->unames[] = $this->mkuname($this->user->first_name);
        if(
$this->user->last_name != '')$this->unames[] = $this->mkuname($this->user->last_name);
        if(
$this->user->username != '')$this->unames[] = $this->mkuname($this->user->username);

        
$_SESSION['oauth_schmeckts'] = array();
        
$_SESSION['oauth_schmeckts']['conf'] = $this->conf;
        
$_SESSION['oauth_schmeckts']['provider'] = $this->provider;
        
$_SESSION['oauth_schmeckts']['user_id'] = $this->user->id;


$msg '<h1 class="webfan-blue">Anmelden mit <span class="fb_schmeckts">'.$this->provider.'</span>...</h1>
Hallo '
.$this->name_anrede.',<br />
werden Sie Mitglied bei schmeckts.at dem kulinarischen Bewertungsportal!<br />'
;

$msg.= '
<script type="text/javascript">
 Dom.get(\'SCHMECKTS_INTRO_DIV_TXT\').style.display=\'none\';
 Dom.get(\'SCHMECKTS_INTRO_DIV_TXT_SWITCH_ON\').style.display=\'block\';
</script>   '
;

        
$OAUTH_S;
        
$OAUTH_S = &$this;
        
new_user($msg$OAUTH_S );
        die();

  
/*
        require('header.php');
        $tpl = load_class('Template');
        $tpl->init_path(__FILE__);

        $tpl->assign('provider', $this->provider);
        $tpl->assign('user', $this->user);
        $tpl->assign('userdata', $this->userdata);
        $tpl->assign('name_anrede', $this->name_anrede );
        $tpl->assign('unames', $this->unames );

        $tpl->display('navbar.html');
        $tpl->display($this->template_navbar);

        $tpl->display($this->template);


        $tpl->display('foot.html');
        require('footer.php');
        die();
    */



   
}
   
//view_first


  
public function erase()
   {
     global 
$prefix;

    
// while(ob_get_level()){ob_end_clean();}
      
$weiter '<br /><a href="'.PMX_HOME_URL.'/modules.php?name=Your_Account">Weiter...</a>';

      if(!
MX_IS_USER)
       {
         
//mxRedirect(PMX_HOME_URL.'/modules.php?name=Your_Account', 'Bitte melden Sie sich an...', 1);
         
require('header.php');
          echo 
'Bitte melden Sie sich an.'.$weiter;
         require(
'footer.php');
         die();
       }

      
$this->checkIsRegistered_OAuth(FALSE);
      
$_REQUEST['schmeckts_fb_login_step'] = 'erase';

      
$oauth NULL;

      
$q ="SELECT * FROM ".$prefix."lok_OAuth_users
             WHERE
               uid='"
.intval($this->userdata['uid'])."'
             AND
               provider='"
.mxAddSlashesForSQL($this->provider)."'
            LIMIT 1
            "
;
      
$result sql_query($q);
      while(
$row sql_fetch_array($result) )
        {
          
$oauth $row;
        }

     if( !
is_array($oauth) )
      {
        
// mxRedirect(PMX_HOME_URL.'/modules.php?name=Your_Account', 'Die Verkn&uuml;pfung konnte nicht geladen werden...', 10);
         
require('header.php');
          echo 
'Die Verkn&uuml;pfung konnte nicht geladen werden.'.$weiter;
         require(
'footer.php');
        die();
      }

     
$errors 0;
     
LOK_HELPER::sql_begin();

      
$q ="DELETE FROM ".$prefix."lok_OAuth_users
             WHERE
               id='"
.intval($oauth['id'])."'
              LIMIT 1
            "
;
      
sql_query($q);
      if(
mysql_error() )$errors++;

     
$this->userdir str_replace('{ID}'$oauth['user_id'], $this->conf['provider_settings']['dir'] );
     
$this->file $this->userdir.$this->conf['FILES']['regdata'];

     
$files glob$this->userdir.'*' );
     foreach(
$files as $file)
      {
        if(!
preg_match("/".$this->provider."/"$file))continue;
        
chmod$file777 );
        
unlink($file);
      }
     if(
preg_match("/".$this->provider."/"$this->userdir))chmod$this->userdir777 );
     if(
preg_match("/".$this->provider."/"$this->userdir))rmdir$this->userdir );
     if(
is_dir($this->userdir) )$errors++;

     if( 
$errors == 0)
       {
         
LOK_HELPER::sql_commit();
         
$msg $this->userdata['uname'].' hat seine '.$this->provider.' Verknüpfung gelöscht.';
         
LOK_ADMIN_MESSAGE::msg($msg);
         
//xRedirect(PMX_HOME_URL.'/modules.php?name=Your_Account', 'Die Verkn&uuml;pfung mit '.$this->provider.' wurde gel&ouml;scht...', 10);
         
require('header.php');
          echo 
'Die Verkn&uuml;pfung mit '.$this->provider.' wurde gel&ouml;scht.'.$weiter;
         require(
'footer.php');

          die();
       }else{
              
LOK_HELPER::sql_rollback();
             
// mxRedirect(PMX_HOME_URL.'/modules.php?name=Your_Account', 'Leider hat es Fehler gegeben...', 10);
              
require('header.php');
               echo 
'Leider hat es Fehler gegeben.'.$weiter;
              require(
'footer.php');
              die();
            }

   }
   
//erase




  
private function check_login()
   {
    global 
$prefix;

      
$oauth_user = array('uid' => 0);
      if(
$this->REG->isRegistered === TRUE && isset($this->REG->id_OAuth_user_db) && $this->REG->id_OAuth_user_db 0)
        {
          
$q="SELECT * FROM ".$prefix."lok_OAuth_users
                         WHERE
                           id='"
.intval($this->REG->id_OAuth_user_db)."'
                          AND
                           uid<>'0'
                          AND
                           provider='"
.mxAddSlashesForSQL($this->provider)."'
                          AND
                           user_id='"
.intval($this->user->id)."'
                LIMIT 1
             "
;
          
$result sql_query($q);
          while(
$row sql_fetch_array($result) )
           {
             
$oauth_user $row;
             
$this->userdata mxGetUserDataFromUid($oauth_user['uid']);
             
$this->userdata_provider $this->user;
             
$this->writeFiles( array('userdata_provider') );
             
$this->login($this->userdata);
           }

        }


   }
   
//check_login



   
private function login($dbdata)
    {
        
mxSetUserSession($dbdata['uid'], $dbdata['uname'], $dbdata['pass'], $dbdata['storynum'], $dbdata['umode'], $dbdata['uorder'], $dbdata['thold'], $dbdata['noscore'], $dbdata['ublockon'], $dbdata['theme'], $dbdata['commentmax']);
        
mxSessionDelVar('formvalues');
        
mxSessionDelVar('ucountbadlogin');
        
mxSessionDelVar('newusercheck'); // falls noch von Accounterstellung vorhanden
        
mxSessionSetVar('lang'$dbdata['user_lang']);

        
/* Modulspezifische Logins durchfuehren */

        
pmx_run_hook('user.login'$dbdata['uid']);

        
$nexturl LOK_HELPER::makeLinkStammgastbuch($dbdata['uname'], $dbdata['uid'], TRUE);
        
$nexturl str_replace('.html''-redirect-account.html'$nexturl);

        
session_write_close();
        return 
mxRedirect($nexturl);
    }
     
//login



   
private function login_UserRegistered()
    {
     global 
$prefix;

      if(!
MX_IS_USER)return;

       if(isset(
$this->REG->id_OAuth_user_db) && $this->REG->id_OAuth_user_db 0)
        {
                    
$q="UPDATE ".$prefix."lok_OAuth_users
                         SET
                           uid='"
.intval($this->userdata['uid'])."'
                         WHERE
                           id='"
.intval($this->REG->id_OAuth_user_db)."'
                         LIMIT 1
                    "
;
                    
sql_query($q);
        }

        
pmx_run_hook('user.login'$dbdata['uid']);

        
$nexturl LOK_HELPER::makeLinkStammgastbuch($this->userdata['uname'], $this->userdata['uid'], TRUE);
        
$nexturl str_replace('.html''-redirect-account.html'$nexturl);

      
//  session_write_close();
       
return mxRedirect($nexturl);

    }
    
//login_user



}
//EOF


ZitatIch würde mich freuen, wenn andere mit Ihrem Wissen, ihren Erfahrungen und ihrem Können die Community bereichern würden.
Hieran zeigt sich was hier nicht ganz in Ordnung ist.
Da postet man seit Jahren hier regelmäßig kostenlos Downloads, und ich denke auch mein Frage-/Antwortverhältnis kann sich sehen lassen, und falls es Euch aufgefallen sein sollte wurdet Ihr in letzterer Zeit von konkreten Vorschlägen meinerseits geradezu überschüttet.
Desweiteren darf man hier immerzu gespannt raten wann und ob es denn was neues gibt, sicherlich das gute Recht des Teams hier kleine Termine zu nennen keine Frage.
Aber sobald dann der liebe Till scheinbar irgendwie den Kindern kurz den Lolli wegzunehmen scheint, und ohne konkrete Absage auf die Zeit bzw. das ausstehende PMX2.0 hinweißt kommt hier plötzlich Kritik auf ???
Das ist nicht OK :bindoof:
Zitat
Möglicherweise erklärt sich Webfan dazu bereit ein derartiges Tool für PragmaMx kostenlos zur Verfügung zu stellen.
(Siehe auch dazu unten)
Ich arbeite in der Tat bereits an einer Lösung für das Webfan Homepagesystem.
Das wird als nächstes von mir kostenlos kommen: Ein FB Login ( mit eigener App für den Systemnutzer ) und ein sagenhaftes Wiki für das Homepagesystem.
Wenn ich Lust habe und überhaupt die Zeit dafür mache ich vielleicht irgendwann wieder etwas kostenlos für das PragmaMx.
Als nebenberuflich Selbstständiger MUSS ich leider auch in meiner eigenen Branche auch mal kostenpflichtig arbeiten, es tut  mir so leid  :gott:
Im übrigen denke ich mein Preis-Leisungsverhältnis kann sich sehen lassen.
Ich habe meine Fähigkeiten und Kenntnisse mit der Zeit gesteigert, die Module welche hier in den Downloads sind sind meist Tages- oder Wochenendarbeiten, meist weit unter meinem jetzigen Niveau, weshalb wahrscheinlich auch das Webfan-Modul-Lieferungs-Interval etwas länger werden dürfte oder auch sollte.

ZitatDie Vorstellung dass Pragma mit Fratzenbuch "gekoppelt" würde allein bringt meine Fußnägel zum Aufrollen.
Wenn Du nur wüßtest mit was Deine IT-Infrastruktur so alles gekoppelt ist, ... nunja, wie dem auch sei.

Zitatwird eh alles von der NSA überwacht.
->Gleichgültigkeit->Fußnägel...

ZitatDa brauche ich jetzt nichts weiter zu schreiben, oder?
...  :gruebel:

Im Fazit denke ich:
ZitatIch denke Facebook ist eine Sache und das CMS ein andere.

Und
ZitatEs ist eigentlich eine Kleinigkeit, was da abläuft, aber dafür sind halt systemweite Integrationen notwendig.
Ganz genau, was die Registrierung und Benutzerverwaltung betrifft welche hier nötig ist, ist PMX eben nicht darauf vorbereitet in seiner jetzigen Version zumindest, und auch wenn ich den Eingriff minimal halten konnte, so ganz ohne Core-Eingriff ist es hier nicht möglich oder sinnvoll.

Nochmal zurück zu folgendem @bambussprosse:
ZitatMöglicherweise erklärt sich Webfan dazu bereit ein derartiges Tool für PragmaMx kostenlos zur Verfügung zu stellen.  (?)
Wie bereits gesagt kann es möglicherweis sein das ich etwas ähnliches irgendwann mal mache.
Hier sei angemerkt das der Rechteinhaber an dem bisherigen Script allerdings der Kunde ist!

Wünsche allen ein schönes und friedliches Wochenende!

Viele Grüße
:bye:




Olaf

ok... damit wäre das Thema "Facebook-Login" geklärt, denke ich...

der Code steht ja oben. Zu Implementation und sonstigen Fragen dazu, wendet euch bitte dann auch an Webfan (ggf. k.....g) wenn Ihr sein Niveau erreicht, oder an den Lizenzinhaber...

Übrigens finde ich die Idee gut, wir sollten den Code von pmx 2 auch in kleinen Häppchen hier so posten   :thumbup:
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

nudels64

Supi, das ist die schnelle unkomplizierte Unterstützung die die Community hier so liebt.
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

Webfan

Also
1. "Niveau": Habe ich von MEINEM Niveau gesprochen und von MEINEN alten Scripten die
                 dieses Niveau nicht mehr erreichen da ich dazugelernt habe.
2. "Häppchen" : Entschuldige bitte das ich Deiner Bitte entsprochen habe und Dir den kleinen Finger gereicht habe.
3. "Supi, das ist die schnelle unkomplizierte Unterstützung die die Community hier so liebt."
    @nudels64 : Wann hast DU denn MIR das letztemal was geholfen?
Die Unterstellung ich würde hier keine Hilfe leisten ist falsch und wird der Sache nicht gerecht.

Die Diskussion verliert zunehmend an Niveau(!) und wird unsachlich, hier geht es doch jetzt gar nicht mehr um das Facebook Login und wie man es realisieren könnte, nein hier ...keine Ahnung was ich Euch getan habe?


nudels64

Ich will Dir nicht zu Nahe treten, Webfan. Aber mit Deinen Äusserungen stellst Du dich doch immer mehr ins Abseits. Müssen jetzt alle hier, die das Pragmamx verwenden vorher Zeugnis darüber ablegen ob Sie berechtigt sind das CMS frei zu benutzen? Ich komme aus der IT-Branche, kann leider nicht programmieren. Ich lerne jedoch bei der Verwendung immer mehr dazu. Vieles habe ich auf meiner Seite selbst realisiert oder mir heraus genommen hier Fragen zu stellen ohne das ich hierfür zuvor eine Gegenleistung erbringen musste.
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

Olaf

Zitat von: Webfan am 24 Januar 2014, 20:12:48
Also
1. "Niveau": Habe ich von MEINEM Niveau gesprochen und von MEINEN alten Scripten die
                 dieses Niveau nicht mehr erreichen da ich dazugelernt habe.

ok, sorry, hab ich falsch gelesen ....

Zitat von: Webfan am 24 Januar 2014, 20:12:48
2. "Häppchen" : Entschuldige bitte das ich Deiner Bitte entsprochen habe und Dir den kleinen Finger gereicht habe.

...nicht mir... da hast DU was falsch verstanden.... die Community hat danach gefragt, nicht ICH. Im Normalfalle hätte eine Aussage von Dir gereicht, wie "Ich setze ein Paket in die Downloads" oder "aus Lizenzgründen nur kostenpflichtig abzugeben..." (o.ä.) ... diese Art aber einen unvollständigen und unkommentierten Code zu posten, hilft den Usern nicht wirklich.... ist unütz,  äusserst unprofessionell und zeugt nicht unbedingt von Charakter....

Zitat von: Webfan am 24 Januar 2014, 20:12:48
Die Diskussion verliert zunehmend an Niveau(!) und wird unsachlich, hier geht es doch jetzt gar nicht mehr um das Facebook Login und wie man es realisieren könnte, nein hier ...keine Ahnung was ich Euch getan habe?
schau dir einfach nochmal deine Posts hier an...

ok, ich mache jetzt hier Dicht, bevor das noch ausufert !!!
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!