ilch Forum » Ilch CMS 2.X » Allgemein » Sozialen Netzwerken im User Panel

Geschlossen
  1. #1
    User Pic
    alexteam Mitglied
    Registriert seit
    17.05.2007
    Beiträge
    26
    Beitragswertungen
    0 Beitragspunkte
    Hallo wie kann ich im User Panel bei Sozialen Medien was eintragen?


    verwendete ilch Version: 2.x

    betroffene Homepage: zschau.12hp.de
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    dastiii hat dort mal was erstellt aber wie weit er dabei ist oder was da noch genau gemacht werden muss weiß ich nicht.

    github.com/dastiii/ilch2-twitterauth
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    alexteam Mitglied
    Registriert seit
    17.05.2007
    Beiträge
    26
    Beitragswertungen
    0 Beitragspunkte
    OK Danke erstmal. Da warte ich mal was dastiii da macht und wenn es fertig ist.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Hm, eigentlich sollte das soweit funktionieren. Wurde allerdings bisher nur von mir selbst lokal getestet.

    Muss halt nur manuell installiert werden.

    github.com/dastiii/ilch2-twitterauth/releases/tag/v1.0.0-beta.1
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    BEE MAYA Mitglied
    Registriert seit
    17.03.2017
    Beiträge
    101
    Beitragswertungen
    1 Beitragspunkte
    Moin,
    ich hab das ganze mal nach Anleitung installiert, Die Twitter app auch so generiert.. die Tokens usw. eingetragen.. Authentifizierungsanbieter ausgewählt.

    Meldung bei mir twitterauth.authenticationfailure

    betroffene Webseite: ghost-gaming.freecluster.eu/

    Keine Ahnung was ich falsch mache lächeln
    Alle wege führen nach Rom..
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Kontrollier' mal, ob du eventuell bei deinen Tokens (usw.) ein Leerzeichen am Ende hast...

    Ansonsten einfach mal im Adminbereich -> Anmelden mit Twitter -> Logs und schauen, ob da noch was interessanteres drinsteht.
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    BEE MAYA Mitglied
    Registriert seit
    17.03.2017
    Beiträge
    101
    Beitragswertungen
    1 Beitragspunkte
    Ich hab alles noch einmal durchgesehen und kontrolliert. alles richtig eingestellt und aktiviert.. Die Tokens sind auch alle richtig drinne..keine Leerzeichen etc.

    Was komisch ist, das Log file ist komplett leer... Er versuch eine Zeitlang Verbindung aufzubauen, dann kommt die Meldung wie oben beschrieben.

    Version Ilch 2.1.1
    Alle wege führen nach Rom..
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Ach: Du musst im Übrigen auch bei deiner Twitter-App das Callback-URL-Feld ausfüllen, sonst dürfte es nicht funktionieren...

    Einfach ghost-gaming.freecluster.eu/ einfügen sollte reichen.
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Harzflip1 Mitglied
    Registriert seit
    18.03.2017
    Beiträge
    20
    Beitragswertungen
    0 Beitragspunkte
    Hallo und Danke für das Modul,

    Frage: Warum sehe ich beim login kein Twitterlogo?

    gesperrtes Bild

    Wenn ich mich einlogen will und ich mit Absicht kein PW eingebe und auf anmelden klicke sehe ich es.
    Fuktioniert sonst bei mir Super.

    gesperrtes Bild

    Habe ich irgendwas vergessen?
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    BEE MAYA Mitglied
    Registriert seit
    17.03.2017
    Beiträge
    101
    Beitragswertungen
    1 Beitragspunkte
    Hi dastiii,

    also ich hab das mal mit der Callback-Url eingetragen. Leider keine Änderung. Die Meldung ist die selbe. Mir kommt es so vor als würde keine Verbindung zu Twitter hergestellt.. Weil der Authentifizierungsversuch doch sehr lange dauert.. bis die Fehlermeldung erscheint. Ausserdem sind die Log Files leer.

    Ich hätte da eine Verständnisfrage:
    Bei Installation des Moduls, werden ja in der MSQL Datenbank Felder eingetragen. Kannst Du mir Event. sagen welche das sind?
    Wo sollten die Keys hinterlegt werden, die ich im Admincenter eintrage? .. werden die in ein Datenbankfeld übernommen? Oder wo kann ich diese kontrollieren? ..
    Meiner Meinung nach ist es wohl so, das er gar nicht soweit kommt, sich bei Twitter zu authentifizieren. Ich bin aber in der Beziehung ein absoluter "Noob" lächeln

    Lieber Gruß
    Alle wege führen nach Rom..
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    BEE MAYA Mitglied
    Registriert seit
    17.03.2017
    Beiträge
    101
    Beitragswertungen
    1 Beitragspunkte
    ZitatZitat geschrieben von Harzflip1
    Hallo und Danke für das Modul,

    Frage: Warum sehe ich beim login kein Twitterlogo?

    gesperrtes Bild

    Wenn ich mich einlogen will und ich mit Absicht kein PW eingebe und auf anmelden klicke sehe ich es.
    Fuktioniert sonst bei mir Super.

    gesperrtes Bild

    Habe ich irgendwas vergessen?



    Das ist bei mir auch so
    Alle wege führen nach Rom..
    1 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Das fehlt in der Loginbox, ja.

    Bin mir nicht sicher, ob das eventuell während der ilch Entwicklung ausversehen rausgeplumpst ist, oder ich es damals nicht dort umgesetzt hatte...

    Hast du gar keine Logeinträge? Oder sind da welche, aber unter Details sind die leer?
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    BEE MAYA Mitglied
    Registriert seit
    17.03.2017
    Beiträge
    101
    Beitragswertungen
    1 Beitragspunkte
    Nein keinerlei Login- Einträge, es wird nicht einmal eine Datei erzeugt.. Alles leer
    Alle wege führen nach Rom..
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Änder' mal die folgenden Stellen in der controllers/Auth.php ab und poste mal die Ausgabe...

    } catch (\Exception $e) {
        dumpVar($e);
        /*
        $this->addMessage('twitterauth.authenticationfailure', 'danger');
    
        if (loggedIn()) {
            $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
        } else {
            $this->redirect(['module' => 'user', 'controller' => 'login', 'action' => 'index']);
        }
        */
    }


    } catch (\Exception $e) {
        dumpVar($e);
        /*
        $this->addMessage('twitterauth.authenticationfailure', 'danger');
    
        if (loggedIn()) {
            $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
        }
    
        $this->redirect(['module' => 'user', 'controller' => 'login', 'action' => 'index']);
        */
    }
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    BEE MAYA Mitglied
    Registriert seit
    17.03.2017
    Beiträge
    101
    Beitragswertungen
    1 Beitragspunkte
    Parse error: syntax error, unexpected 'dumpVar' (T_STRING) in /home/vol6_5/epizy.com/epiz_20678717/htdocs/application/modules/twitterauth/controllers/Auth.php on line 186
    Alle wege führen nach Rom..
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    Harzflip1 Mitglied
    Registriert seit
    18.03.2017
    Beiträge
    20
    Beitragswertungen
    0 Beitragspunkte
    Ändert bei mir nichts traurig
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    BEE MAYA Mitglied
    Registriert seit
    17.03.2017
    Beiträge
    101
    Beitragswertungen
    1 Beitragspunkte
    ZitatZitat geschrieben von Harzflip1
    Ändert bei mir nichts traurig


    Dein Anmeldebildschirm, das was Du meinst sollte sich dadurch nicht ändern. Hast Du den Log files im Adminbereich?
    Oder kannst Du Dich mit dem Twitter Account verbinden im User Panel?
    Alle wege führen nach Rom..
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Zeig mal wie die Datei jetzt aussieht, nen parse error sollte nicht auftreten können, wenn du es richtig eingesetzt hast...

    @Harzflip1: Das war ja auch nicht an dich, mach das besser mal Rückgängig. zunge
    Gucke mal das ich erst einmal ne Loginbox dazu mache, die man vorerst nutzen kann.
    1 Mitglieder finden den Beitrag gut.
  19. #19
    User Pic
    BEE MAYA Mitglied
    Registriert seit
    17.03.2017
    Beiträge
    101
    Beitragswertungen
    1 Beitragspunkte
    } catch (\Exception $e) {
         dumpVar($e);
         /*
         $this->addMessage('twitterauth.authenticationfailure', 'danger');
     
         if (loggedIn()) {
             $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
         }
     
         $this->redirect(['module' => 'user', 'controller' => 'login', 'action' => 'index']);
         */
    }
    }


    meinst Du so ansehen?.. Das ist ab Zeile 185
    Alle wege führen nach Rom..
    0 Mitglieder finden den Beitrag gut.
  20. #20
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Ne, bitte die ganze... und dann in [code]-Tags.
    0 Mitglieder finden den Beitrag gut.
  21. #21
    User Pic
    BEE MAYA Mitglied
    Registriert seit
    17.03.2017
    Beiträge
    101
    Beitragswertungen
    1 Beitragspunkte
    gesperrtes Bild


    Kein Plan wie ich Datei hier reinbekomme:S


    Zuletzt modifiziert von BEE MAYA am 16.09.2017 - 22:58:45
    Alle wege führen nach Rom..
    0 Mitglieder finden den Beitrag gut.
  22. #22
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Kopieren und einfügen und dann [code][@/code] drum (ohne das @).

    Kommt der gleiche Fehler wenn du dumpVar mit var_dump austauschst?
    0 Mitglieder finden den Beitrag gut.
  23. #23
    User Pic
    BEE MAYA Mitglied
    Registriert seit
    17.03.2017
    Beiträge
    101
    Beitragswertungen
    1 Beitragspunkte
    Parse error: syntax error, unexpected 'var_dump' (T_STRING) in /home/vol6_5/epizy.com/epiz_20678717/htdocs/application/modules/twitterauth/controllers/Auth.php on line 186

    Die Meldung sieht dann so aus.

    Ich hab noch einmal alles durchgesehen. Mit der Orginal auth.php sieht es so aus, das man im userpanel, Einstellungen, sozial Network den Hinweis bekommet, du hast dein Konto noch nicht verbunden. Wenn ich darauf klicke kommt der authentifizierungsfehler. Das gleiche passiert beim Login, über Twitter einloggen. Gehe ich aber auf die Kontakte des Benutzers, wird mir ja auch hier der Twitteracc angezeigt, klicke ich da rauf.. geht in einen neuen Browserfenster der zugehörige Twitteraccount des Users auf. Ich hoffe ich hab das einigermaßen beschrieben lächeln

    Anbei der Code mit var_dump

    <?php
    // COPYRIGHT (c) 2016 Tobias Schwarz
    //
    // MIT License
    //
    // Permission is hereby granted, free of charge, to any person obtaining
    // a copy of this software and associated documentation files (the
    // "Software"), to deal in the Software without restriction, including
    // without limitation the rights to use, copy, modify, merge, publish,
    // distribute, sublicense, and/or sell copies of the Software, and to
    // permit persons to whom the Software is furnished to do so, subject to
    // the following conditions:
    //
    // The above copyright notice and this permission notice shall be
    // included in all copies or substantial portions of the Software.
    //
    // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
    // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
    // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    
    /**
     * @copyright Tobias Schwarz
     * @author Tobias Schwarz <code@tobias-schwarz.me>
     * @license MIT
     */
    namespace Modules\Twitterauth\Controllers;
    
    use Ilch\Controller\Frontend;
    use Modules\Twitterauth\Libs\TwitterOAuth;
    use Modules\Twitterauth\Mappers\DbLog;
    use Modules\User\Mappers\AuthProvider;
    use Modules\User\Mappers\User as UserMapper;
    use Modules\User\Mappers\Group;
    use Modules\User\Models\AuthProviderUser;
    use Modules\User\Models\User;
    use Modules\User\Service\Password as PasswordService;
    use Ilch\Validation;
    
    class Auth extends Frontend
    {
        /**
         * @var DbLog instance
         */
        protected $dbLog;
    
        /**
         * Renders the register form.
         */
        public function registAction()
        {
            if (! array_dot($_SESSION, 'twitterauth.login') || array_dot($_SESSION, 'twitterauth.login.expires') < time()) {
                $this->addMessage('registExpired', 'danger');
                $this->redirect(['module' => 'user', 'controller' => 'regist', 'action' => 'index']);
            }
    
            $oauth = array_dot($_SESSION, 'twitterauth.login');
    
            $this->getView()->set('rules', $this->getConfig()->get('regist_rules'));
            $this->getView()->set('user', $oauth);
        }
    
        /**
         * Saves the new user to the database.
         */
        public function saveAction()
        {
            if (!$this->getRequest()->isPost()) {
                $this->addMessage('badRequest');
                $this->redirect('/');
            }
    
            if (! array_dot($_SESSION, 'twitterauth.login') || array_dot($_SESSION, 'twitterauth.login.expires') < time()) {
                $this->addMessage('badRequest');
                $this->redirect(['module' => 'user', 'controller' => 'login', 'action' => 'index']);
            }
    
            $input = [
                'userName' => trim($this->getRequest()->getPost('userName')),
                'email' => trim($this->getRequest()->getPost('email')),
            ];
    
            $validation = Validation::create($input, [
                'userName' => 'required|unique:users,name',
                'email' => 'required|email|unique:users,email',
            ]);
    
            if ($validation->isValid()) {
                // register user
                $registMapper = new UserMapper();
                $groupMapper = new Group();
                $userGroup = $groupMapper->getGroupById(2);
                $currentDate = new \Ilch\Date();
    
                $user = (new User())
                    ->setName($input['userName'])
                    ->setPassword((new PasswordService())->hash(PasswordService::generateSecurePassword(32)))
                    ->setEmail($input['email'])
                    ->setDateCreated($currentDate->format('Y-m-d H:i:s', true))
                    ->addGroup($userGroup)
                    ->setDateConfirmed($currentDate->format('Y-m-d H:i:s', true));
    
                $userId = $registMapper->save($user);
    
                $oauth = array_dot($_SESSION, 'twitterauth.login');
    
                $authProviderUser = (new AuthProviderUser())
                    ->setIdentifier($oauth['user_id'])
                    ->setProvider('twitter')
                    ->setOauthToken($oauth['oauth_token'])
                    ->setOauthTokenSecret($oauth['oauth_token_secret'])
                    ->setScreenName($oauth['screen_name'])
                    ->setUserId($userId);
    
                $link = (new AuthProvider())->linkProviderWithUser($authProviderUser);
    
                if ($link === true) {
                    $_SESSION['user_id'] = $userId;
    
                    $this->addMessage('twitterauth.linksuccess');
                    $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'index']);
                }
    
                $this->addMessage('twitterauth.linkfailed', 'danger');
                $this->redirect('/');
            }
    
            $this->addMessage($validation->getErrorBag()->getErrorMessages(), 'danger', true);
            $this->redirect()
                ->withInput()
                ->withErrors($validation->getErrorBag())
                ->to(['action' => 'regist']);
        }
    
        public function unlinkAction()
        {
            if (loggedIn()) {
                if ($this->getRequest()->isPost()) {
                    $authProvider = new AuthProvider();
                    $res = $authProvider->unlinkUser('twitter', currentUser()->getId());
    
                    if ($res > 0) {
                        $this->addMessage('twitterauth.unlinkedsuccessfully');
                        $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
                    }
    
                    $this->addMessage('twitterauth.couldnotunlink', 'danger');
                    $this->redirect('/');
                }
    
                $this->addMessage('twitterauth.badrequest', 'danger');
                $this->redirect('/');
            }
    
            $this->addMessage('twitterauth.notauthenticated', 'danger');
            $this->redirect('/');
        }
    
        /**
         * Initialize authentication.
         */
        public function indexAction()
        {
            $callbackUrl = $this->getLayout()->getUrl([
                'module' => 'twitterauth',
                'controller' => 'auth',
                'action' => 'callback',
            ]);
    
            $auth = new TwitterOAuth(
                $this->getConfig()->get('twitterauth_consumer_key'),
                $this->getConfig()->get('twitterauth_consumer_secret'),
                $this->getConfig()->get('twitterauth_access_token'),
                $this->getConfig()->get('twitterauth_access_token_secret'),
                $callbackUrl
            );
    
            try {
                $auth->obtainTokens();
    
                $this->redirect($auth->getAuthenticationEndpoint());
            } catch (\Exception $e) {
        		var_dump($e);
        		/*
       			 $this->addMessage('twitterauth.authenticationfailure', 'danger');
     
        		if (loggedIn()) {
            		$this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
        		}
     
        		$this->redirect(['module' => 'user', 'controller' => 'login', 'action' => 'index']);
        		*/
            }
        }
    
        /**
         * Callback action.
         */
        public function callbackAction()
        {
            $auth = new TwitterOAuth(
                $this->getConfig()->get('twitterauth_consumer_key'),
                $this->getConfig()->get('twitterauth_consumer_secret')
            );
    
            try {
                $auth->handleCallback($this->getRequest());
                $auth->convertTokens();
    
                $twitterUser = $auth->getResult();
    
                $authProvider = new AuthProvider();
                $existingLink = $authProvider->providerAccountIsLinked('twitter', $twitterUser['user_id']);
    
                if (loggedIn()) {
                    if ($authProvider->hasProviderLinked('twitter', currentUser()->getId())) {
                        $this->dbLog()->info(
                            "User " . currentUser()->getName() . " had provider already linked.",
                            [
                                'userId' => currentUser()->getId(),
                                'userName' => currentUser()->getName(),
                                'twitterAccount' => $twitterUser
                            ]
                        );
    
                        $this->addMessage('providerAlreadyLinked', 'danger');
                        $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
                    }
    
                    if ($existingLink === true) {
                        $this->dbLog()->info(
                            "User " . currentUser()->getName() . " tried to link an already linked twitter account.",
                            [
                                'userId' => currentUser()->getId(),
                                'userName' => currentUser()->getName(),
                                'twitterAccount' => $twitterUser
                            ]
                        );
    
                        $this->addMessage('accountAlreadyLinkedToDifferentUser', 'danger');
                        $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
                    }
    
                    $authProviderUser = (new AuthProviderUser())
                        ->setIdentifier($twitterUser['user_id'])
                        ->setProvider('twitter')
                        ->setOauthToken($twitterUser['oauth_token'])
                        ->setOauthTokenSecret($twitterUser['oauth_token_user'])
                        ->setScreenName($twitterUser['screen_name'])
                        ->setUserId(currentUser()->getId());
    
                    $link = $authProvider->linkProviderWithUser($authProviderUser);
    
                    if ($link === true) {
                        $this->dbLog()->info(
                            "User " . currentUser()->getName() . " has linked a twitter account.",
                            [
                                'userId' => currentUser()->getId(),
                                'userName' => currentUser()->getName(),
                                'twitterAccount' => $twitterUser
                            ]
                        );
    
                        $this->addMessage('linkSuccess');
                        $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
                    }
    
                    $this->dbLog()->error(
                        "User " . currentUser()->getName() . " could not link his twitter account.",
                        [
                            'userId' => currentUser()->getId(),
                            'userName' => currentUser()->getName(),
                            'twitterAccount' => $twitterUser
                        ]
                    );
    
                    $this->addMessage('linkFailed', 'danger');
                    $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
                }
    
                if ($existingLink === true) {
                    $userId = $authProvider->getUserIdByProvider('twitter', $twitterUser['user_id']);
    
                    if (is_null($userId)) {
                        $this->addMessage('couldNotFindRequestedUser');
                        $this->redirect(['module' => 'user', 'controller' => 'login', 'action' => 'index']);
                    }
    
                    $_SESSION['user_id'] = $userId;
    
                    $this->addMessage('loginSuccess');
                    $this->redirect('/');
                }
    
                if ($existingLink === false && ! loggedIn() && ! $this->getConfig()->get('regist_accept')) {
                    $this->addMessage('twitterauth.messages.registrationNotAllowed', 'danger');
                    $this->redirect(['module' => 'user', 'controller' => 'login', 'action' => 'index']);
                }
    
                array_dot_set($_SESSION, 'twitterauth.login', $twitterUser);
                array_dot_set($_SESSION, 'twitterauth.login.expires', strtotime('+5 minutes'));
    
                $this->redirect(['action' => 'regist']);
            } catch (\Exception $e) {
        		var_dump($e);
        		/*
        		$this->addMessage('twitterauth.authenticationfailure', 'danger');
     
        		if (loggedIn()) {
            	$this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
        		} else {
            	$this->redirect(['module' => 'user', 'controller' => 'login', 'action' => 'index']);
        		}
        		*/
            }
        }
    
        /**
         * @return DbLog
         */
        protected function dbLog()
        {
            if ($this->dbLog instanceof DbLog) {
                return $this->dbLog;
            }
    
            return $this->dbLog = new DbLog();
        }
    }



    Zuletzt modifiziert von BEE MAYA am 17.09.2017 - 01:31:49
    Alle wege führen nach Rom..
    0 Mitglieder finden den Beitrag gut.
  24. #24
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Tut mir wirklich Leid, aber ich kann den Fehler nicht nachvollziehen.

    Hab deinen geposteten Code bei mir eingefügt, PHP 5.6 getestet, PHP 7.0 getestet, PHP 7.1 getestet - alle fehlerfrei.

    Nimm mal bitte wieder die originale Auth.php und füg hinter

    $this->addMessage('twitterauth.authenticationfailure', 'danger');


    den folgenden Code ein und schau dann im Adminbereich bei den Logs, ob dort dann ein Eintrag auftaucht.

    $this->dbLog()->error(
        "An unknown error occurred", 
        [
            'message' => $e->getMessage(),
            'code' => $e->getCode(),
            'file' => $e->getFile(),
            'line' => $e->getLine()
        ]
    );
    0 Mitglieder finden den Beitrag gut.
  25. #25
    User Pic
    BEE MAYA Mitglied
    Registriert seit
    17.03.2017
    Beiträge
    101
    Beitragswertungen
    1 Beitragspunkte
    Parse error: syntax error, unexpected '"An unknown error occurred"' (T_CONSTANT_ENCAPSED_STRING), expecting ',' or ')' in /home/vol6_5/epizy.com/epiz_20678717/htdocs/application/modules/twitterauth/controllers/Auth.php on line 188

    Ich hab den Code an beiden Stellen eingefügt ab Zeile 187 und ab Zeile 315

    <?php
    // COPYRIGHT (c) 2016 Tobias Schwarz
    //
    // MIT License
    //
    // Permission is hereby granted, free of charge, to any person obtaining
    // a copy of this software and associated documentation files (the
    // "Software"), to deal in the Software without restriction, including
    // without limitation the rights to use, copy, modify, merge, publish,
    // distribute, sublicense, and/or sell copies of the Software, and to
    // permit persons to whom the Software is furnished to do so, subject to
    // the following conditions:
    //
    // The above copyright notice and this permission notice shall be
    // included in all copies or substantial portions of the Software.
    //
    // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
    // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
    // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    
    /**
     * @copyright Tobias Schwarz
     * @author Tobias Schwarz <code@tobias-schwarz.me>
     * @license MIT
     */
    namespace Modules\Twitterauth\Controllers;
    
    use Ilch\Controller\Frontend;
    use Modules\Twitterauth\Libs\TwitterOAuth;
    use Modules\Twitterauth\Mappers\DbLog;
    use Modules\User\Mappers\AuthProvider;
    use Modules\User\Mappers\User as UserMapper;
    use Modules\User\Mappers\Group;
    use Modules\User\Models\AuthProviderUser;
    use Modules\User\Models\User;
    use Modules\User\Service\Password as PasswordService;
    use Ilch\Validation;
    
    class Auth extends Frontend
    {
        /**
         * @var DbLog instance
         */
        protected $dbLog;
    
        /**
         * Renders the register form.
         */
        public function registAction()
        {
            if (! array_dot($_SESSION, 'twitterauth.login') || array_dot($_SESSION, 'twitterauth.login.expires') < time()) {
                $this->addMessage('registExpired', 'danger');
                $this->redirect(['module' => 'user', 'controller' => 'regist', 'action' => 'index']);
            }
    
            $oauth = array_dot($_SESSION, 'twitterauth.login');
    
            $this->getView()->set('rules', $this->getConfig()->get('regist_rules'));
            $this->getView()->set('user', $oauth);
        }
    
        /**
         * Saves the new user to the database.
         */
        public function saveAction()
        {
            if (!$this->getRequest()->isPost()) {
                $this->addMessage('badRequest');
                $this->redirect('/');
            }
    
            if (! array_dot($_SESSION, 'twitterauth.login') || array_dot($_SESSION, 'twitterauth.login.expires') < time()) {
                $this->addMessage('badRequest');
                $this->redirect(['module' => 'user', 'controller' => 'login', 'action' => 'index']);
            }
    
            $input = [
                'userName' => trim($this->getRequest()->getPost('userName')),
                'email' => trim($this->getRequest()->getPost('email')),
            ];
    
            $validation = Validation::create($input, [
                'userName' => 'required|unique:users,name',
                'email' => 'required|email|unique:users,email',
            ]);
    
            if ($validation->isValid()) {
                // register user
                $registMapper = new UserMapper();
                $groupMapper = new Group();
                $userGroup = $groupMapper->getGroupById(2);
                $currentDate = new \Ilch\Date();
    
                $user = (new User())
                    ->setName($input['userName'])
                    ->setPassword((new PasswordService())->hash(PasswordService::generateSecurePassword(32)))
                    ->setEmail($input['email'])
                    ->setDateCreated($currentDate->format('Y-m-d H:i:s', true))
                    ->addGroup($userGroup)
                    ->setDateConfirmed($currentDate->format('Y-m-d H:i:s', true));
    
                $userId = $registMapper->save($user);
    
                $oauth = array_dot($_SESSION, 'twitterauth.login');
    
                $authProviderUser = (new AuthProviderUser())
                    ->setIdentifier($oauth['user_id'])
                    ->setProvider('twitter')
                    ->setOauthToken($oauth['oauth_token'])
                    ->setOauthTokenSecret($oauth['oauth_token_secret'])
                    ->setScreenName($oauth['screen_name'])
                    ->setUserId($userId);
    
                $link = (new AuthProvider())->linkProviderWithUser($authProviderUser);
    
                if ($link === true) {
                    $_SESSION['user_id'] = $userId;
    
                    $this->addMessage('twitterauth.linksuccess');
                    $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'index']);
                }
    
                $this->addMessage('twitterauth.linkfailed', 'danger');
                $this->redirect('/');
            }
    
            $this->addMessage($validation->getErrorBag()->getErrorMessages(), 'danger', true);
            $this->redirect()
                ->withInput()
                ->withErrors($validation->getErrorBag())
                ->to(['action' => 'regist']);
        }
    
        public function unlinkAction()
        {
            if (loggedIn()) {
                if ($this->getRequest()->isPost()) {
                    $authProvider = new AuthProvider();
                    $res = $authProvider->unlinkUser('twitter', currentUser()->getId());
    
                    if ($res > 0) {
                        $this->addMessage('twitterauth.unlinkedsuccessfully');
                        $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
                    }
    
                    $this->addMessage('twitterauth.couldnotunlink', 'danger');
                    $this->redirect('/');
                }
    
                $this->addMessage('twitterauth.badrequest', 'danger');
                $this->redirect('/');
            }
    
            $this->addMessage('twitterauth.notauthenticated', 'danger');
            $this->redirect('/');
        }
    
        /**
         * Initialize authentication.
         */
        public function indexAction()
        {
            $callbackUrl = $this->getLayout()->getUrl([
                'module' => 'twitterauth',
                'controller' => 'auth',
                'action' => 'callback',
            ]);
    
            $auth = new TwitterOAuth(
                $this->getConfig()->get('twitterauth_consumer_key'),
                $this->getConfig()->get('twitterauth_consumer_secret'),
                $this->getConfig()->get('twitterauth_access_token'),
                $this->getConfig()->get('twitterauth_access_token_secret'),
                $callbackUrl
            );
    
            try {
                $auth->obtainTokens();
    
                $this->redirect($auth->getAuthenticationEndpoint());
            } catch (\Exception $e) {
                $this->addMessage('twitterauth.authenticationfailure', 'danger');
    			$this->dbLog()->error(
        			"An unknown error occurred", 
        			[
            		'message' => $e->getMessage(),
            		'code' => $e->getCode(),
           			'file' => $e->getFile(),
            		'line' => $e->getLine()
        			]
    			);
    
                if (loggedIn()) {
                    $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
                }
    
                $this->redirect(['module' => 'user', 'controller' => 'login', 'action' => 'index']);
            }
        }
    
        /**
         * Callback action.
         */
        public function callbackAction()
        {
            $auth = new TwitterOAuth(
                $this->getConfig()->get('twitterauth_consumer_key'),
                $this->getConfig()->get('twitterauth_consumer_secret')
            );
    
            try {
                $auth->handleCallback($this->getRequest());
                $auth->convertTokens();
    
                $twitterUser = $auth->getResult();
    
                $authProvider = new AuthProvider();
                $existingLink = $authProvider->providerAccountIsLinked('twitter', $twitterUser['user_id']);
    
                if (loggedIn()) {
                    if ($authProvider->hasProviderLinked('twitter', currentUser()->getId())) {
                        $this->dbLog()->info(
                            "User " . currentUser()->getName() . " had provider already linked.",
                            [
                                'userId' => currentUser()->getId(),
                                'userName' => currentUser()->getName(),
                                'twitterAccount' => $twitterUser
                            ]
                        );
    
                        $this->addMessage('providerAlreadyLinked', 'danger');
                        $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
                    }
    
                    if ($existingLink === true) {
                        $this->dbLog()->info(
                            "User " . currentUser()->getName() . " tried to link an already linked twitter account.",
                            [
                                'userId' => currentUser()->getId(),
                                'userName' => currentUser()->getName(),
                                'twitterAccount' => $twitterUser
                            ]
                        );
    
                        $this->addMessage('accountAlreadyLinkedToDifferentUser', 'danger');
                        $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
                    }
    
                    $authProviderUser = (new AuthProviderUser())
                        ->setIdentifier($twitterUser['user_id'])
                        ->setProvider('twitter')
                        ->setOauthToken($twitterUser['oauth_token'])
                        ->setOauthTokenSecret($twitterUser['oauth_token_user'])
                        ->setScreenName($twitterUser['screen_name'])
                        ->setUserId(currentUser()->getId());
    
                    $link = $authProvider->linkProviderWithUser($authProviderUser);
    
                    if ($link === true) {
                        $this->dbLog()->info(
                            "User " . currentUser()->getName() . " has linked a twitter account.",
                            [
                                'userId' => currentUser()->getId(),
                                'userName' => currentUser()->getName(),
                                'twitterAccount' => $twitterUser
                            ]
                        );
    
                        $this->addMessage('linkSuccess');
                        $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
                    }
    
                    $this->dbLog()->error(
                        "User " . currentUser()->getName() . " could not link his twitter account.",
                        [
                            'userId' => currentUser()->getId(),
                            'userName' => currentUser()->getName(),
                            'twitterAccount' => $twitterUser
                        ]
                    );
    
                    $this->addMessage('linkFailed', 'danger');
                    $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
                }
    
                if ($existingLink === true) {
                    $userId = $authProvider->getUserIdByProvider('twitter', $twitterUser['user_id']);
    
                    if (is_null($userId)) {
                        $this->addMessage('couldNotFindRequestedUser');
                        $this->redirect(['module' => 'user', 'controller' => 'login', 'action' => 'index']);
                    }
    
                    $_SESSION['user_id'] = $userId;
    
                    $this->addMessage('loginSuccess');
                    $this->redirect('/');
                }
    
                if ($existingLink === false && ! loggedIn() && ! $this->getConfig()->get('regist_accept')) {
                    $this->addMessage('twitterauth.messages.registrationNotAllowed', 'danger');
                    $this->redirect(['module' => 'user', 'controller' => 'login', 'action' => 'index']);
                }
    
                array_dot_set($_SESSION, 'twitterauth.login', $twitterUser);
                array_dot_set($_SESSION, 'twitterauth.login.expires', strtotime('+5 minutes'));
    
                $this->redirect(['action' => 'regist']);
            } catch (\Exception $e) {
                $this->addMessage('twitterauth.authenticationfailure', 'danger');
    			$this->dbLog()->error(
        			"An unknown error occurred", 
        			[
            		'message' => $e->getMessage(),
            		'code' => $e->getCode(),
           			'file' => $e->getFile(),
            		'line' => $e->getLine()
        			]
    			);
    
                if (loggedIn()) {
                    $this->redirect(['module' => 'user', 'controller' => 'panel', 'action' => 'providers']);
                } else {
                    $this->redirect(['module' => 'user', 'controller' => 'login', 'action' => 'index']);
                }
            }
        }
    
        /**
         * @return DbLog
         */
        protected function dbLog()
        {
            if ($this->dbLog instanceof DbLog) {
                return $this->dbLog;
            }
    
            return $this->dbLog = new DbLog();
        }
    }
    Alle wege führen nach Rom..
    0 Mitglieder finden den Beitrag gut.
  26. #26
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Keine Ahnung was das wird, nimm mal nen anderen Editor...
    0 Mitglieder finden den Beitrag gut.
  27. #27
    User Pic
    BEE MAYA Mitglied
    Registriert seit
    17.03.2017
    Beiträge
    101
    Beitragswertungen
    1 Beitragspunkte
    Als Editor hab ich Notepad++ Hm..

    Kann es sein das da irgendwo auf dem SQL ne Datenbank bei der Installation fehlt? Welche Datenbanken müssen bei der Installation des Moduls angelegt werden? Diese Auth Keys von Twitter müssen ja auch irgendwo hinterlegt werden. Ich hab sie bis jetzt nicht gefunden.

    eingesetzte PHP Version ist die 7.0

    gesperrtes Bild

    Der Zugriff auf die einzelnen Benutzer Accounts von Twitter funzt ja.. aber ich nehme an da nimmt er nur den Benutzernamen und das Passwort um im neuen Browserfenster Twitter zu öffnen.
    Nur wenn man die Accounts mit Twitter verbinden möchte, kommt der authentifizierungsfehler.. Hierzu greift er doch auf die im Admin hinterlegten Schlüssel zu... Hab ich das so alles richtig verstanden?


    Zuletzt modifiziert von BEE MAYA am 17.09.2017 - 12:27:23
    Alle wege führen nach Rom..
    0 Mitglieder finden den Beitrag gut.
  28. #28
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Dann würde schon der erste Versuch fehlschlagen und du würdest gar nicht erst auf die Twitter-Seite weitergeleitet werden.

    Die Keys werden in ilch_config oder wie die Tabelle heißt gespeichert, daran liegt es nicht.

    Allerdings würde deine Ausführung bedeuten, dass ein Fehler auftritt, der in Zeile 304 gefangen wird.
    Bleibt nur die Frage wieso,...

    Kannst du die Änderung aus #24 mal nur an der Stelle ab Zeile 304 einfügen und schauen, ob immer noch ein Fehler geworfen wird bzw. endlich unter ghost-gaming.freecluster.eu/index.php/admin/twitterauth/log/index ein Fehler angezeigt wird.


    Zuletzt modifiziert von dastiii am 18.09.2017 - 17:16:38
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten