• Hallo Besucher!

    Du bist neu im Forum? Dann registriere dich hier, um Diskussionen beizutreten oder eigene Themen zu erstellen. Für die Registrierung ist es erforderlich, dass du einen Spielaccount bei Die Stämme hast.

    Andernfalls kannst du dich hier direkt einloggen.

    Falls du dein Passwort vergessen hast, kannst du hier ein neues Passwort anfordern.

Externe Authentifizierung Quellcode?

DeletedUser137543

Gast
Hallo,
Ich hab bereits dem Support geschrieben aber bis der antwortet können ja - leider - Tage vergehen.
Daher frag ich mal die Community.

Hat jemand rein zufällig nen Quellcode übrige für die Externe Authentifizierung vom Stämme System?
Ich würde die gerne in die Stammeshomepage einbauen aber scheidere momentan an der Umsetzung wie das ganze ablaufen soll.
Ich weiß dass da md5 - Hash abgleich stattfindet aus 3 verschiedenen Variablen welche z.T von mir und z.T von DS kommen.

Bis der Support geantwortet hat hoffe ich schon mal auf die Hilfe von euch und freue mich über jede Antwort..

Gerne sind auch Quellcodes per PM gesehen wenn man das ganze nicht gleich öffentlich machen darf/möchte..

Erowen.
 

DeletedUser24674

Gast
Hab mal den Code aus dsconnect.de kopiert (sicherlich nicht der schönste):

Code für den Button zum erstellen einer Verlinkung:
PHP:
<a id="link_add" href="<?=Tw_import::get_tw_base_host($this->User->selected_world);?>external_auth.php?sid=<?=$this->User->selected_world;?>|<?=$this->User->api_hash;?>&client=dsconn">
        <?=ui_ficon('link_add', lang('accounts_connect_new_account'));?>
        <?=lang('accounts_connect_new_account');?>
    </a>

Code der vom Stämme-Server aufgerufen wird wenn die Authentifizierung erfolgreich war
PHP:
//...
        $private_key = "XXX DEIN KEY HIER XXX";
        $servers = $this->config->item("tw_worlds");

        $sid = explode("|", $this->input->get("sid"));
        $username = ($this->input->get("username") != false ? dsAPI::$username : '');
        $hash = $this->input->get("hash");

        $checkHash = md5($this->input->get("sid").$username.$private_key);

        $this->output->set_content_type('text/plain');

        if ($checkHash != $hash || !in_array($sid[0], $servers))
        {
            $this->output->append_output(site_url('usercp/accounts/error/1'));
            return;
        }

        // check if account exists on specified world
        $query = $this->db->query("SELECT * FROM ".$sid[0]."_player WHERE name = '".urlencode(utf8_encode($username))."'");

        if ($query->num_rows() == 0)
        {
            $this->output->append_output(site_url('usercp/accounts/error/2'));
            return;
        }

        // save dsid
        $row = $query->row();
        $dsID = $row->id;

        // check if contains valid api_hash
        $query = $this->db->query("SELECT * FROM users WHERE api_hash = ?", array($sid[1]));
        if ($query->num_rows() == 0)
        {
            $this->output->append_output(site_url('usercp/accounts/error/3'));
            return;
        }

        $row = $query->row();
        $userID = $row->id;

        // store in db
        $this->db->insert('linked_accounts', array(
            'user_id' => $userID,
            'ds_id' => $dsID,
            'world' => $sid[0]
        ));
        // ...
 
Oben