Coding Authentifierzungssystem WoltLab Suite (1 Betrachter)

  • Ersteller des Themas
  • #1

Addra

Registriert
Black-Market: 0 / 0 / 0
1 November 2013
20
3 %
Grüße miteinander

ich bin langsam am verzweifeln, weil ich es einfach nicht schaffe das Loginverfahrung für das WCS nachzuverfolgen! Situation ist folgende:

Man soll im Forum/Webseite einen Account erstellen, dieser soll auch zum Login zum Gameserver verwendet werden. Da aber das Loginfenster auf einer anderen Domain, aber auf dem selben Server liegt, kann ich leider nicht auf die Klassen des WSC zugreifen, aber dafür auf die gemeinsame Datenbank(MySQL)

Hat da wer einen heißen Tipp? Ich werde nämlich aus der PasswordUtil von Woltlab absolut nicht schlau, da diese im Script einfach gesagt inzwischen von Datei zu Datei switchen tut

Grüße Addra
 

Reddegger

Forum-Mitglied
Black-Market: 0 / 0 / 0
25 September 2019
232
26 %
Wieso hast du Forum und GTA auf denselben Server? Man sollte Webserver und Gameserver immer voneinander trennen TS hast du wahrscheinlich auch noch darauf, oder? Mein Tipp zieh das Forum auf ein Webspace!
 

Technikfreak

Moderator*
Black-Market: 0 / 0 / 0
25 März 2020
546
43 %
Man soll im Forum/Webseite einen Account erstellen, dieser soll auch zum Login zum Gameserver verwendet werden. Da aber das Loginfenster auf einer anderen Domain, aber auf dem selben Server liegt, kann ich leider nicht auf die Klassen des WSC zugreifen, aber dafür auf die gemeinsame Datenbank(MySQL)
Beste weg wäre mit einer Api Link ,aber das ist viel Arbeit und so wurstel´s du nicht in den WCS dateien rum was früher oder später mit Updates probleme machen würde.

Aber meine frage ist jetzt das Forum liegt genau wie der server auf der selben Maschiene . Wieso nimmt mann keine Subdomain fürs externe login.
 

Noah83

Forum-Mitglied
Black-Market: 0 / 0 / 0
11 Februar 2020
147
21 %
Das ist viel Arbeit... muss ich meinem vor Redner Recht geben... :)
Auch wenn alles auf einem Server liegt müsst Ihr die Login-Daten mit einer Abfrage im Game-Server selbst... in der DB und auf der Homepage Synchronisieren.
Ihr müsst also auf der Login-Seite Script-Seitig (Game-Server) eine DB-Abfrage zur Homepage schreiben um so das Whitelisten zu erleichtern.

Ein Script für z.B. GTA findet man z.B. hier -> https://aiw.bz/threads/fivem-pixelworld-v9-0-customframeweork.344119/post-397641
hier sind die ganzen abfragen noch vorhanden... vielleicht hilft Euch das weiter.

MfG :)
 
  • Ersteller des Themas
  • #5

Addra

Registriert
Black-Market: 0 / 0 / 0
1 November 2013
20
3 %
Derzeit ist alles in Entwicklung also auf einer Maschine später wird das alles getrennt
Ich bin da am Überlegen, dass inwzischen über eine API zu gehen, die ist eher einfacher zu schreiben als das WSC auseinander zu nehmen nur um an die Verschlüsselung ranzukommen
 

0xEB

Forum-Mitglied
Black-Market: 0 / 0 / 0
5 Dezember 2020
197
26 %
Mach doch einfach so?

Code:
<?php


define('PACKAGE_ID',1);
require_once('global.php');

use wcf\data\user\User;
use wcf\data\user\group\UserGroup;

//$username = $_POST['username'];
//$password = $_POST['password'];

$code = 0;
$json = ["StatusCode" => $code, "UserData" => null];
checkPassword($_POST['username'], $_POST['password'], $_POST['Key']);

function checkPassword($username, $password, $key) {
    $secretKey = " 1 word 128 characters";

    if (strcmp($key, $secretKey) != 0)
    {
        global $code;
        global $json;
        $code = 1;
        $json = ["statusCode" => $code, "userData" => null];
        return null;
    }
    if (empty($username) || empty($password)) {
        global $code;
        global $json;
        $code = 2;
        $json = ["statusCode" => $code, "userData" => null];
        return null;
    }
    $user = User::getUserByUsername($username);
    if(!$user->userID)
    {
        global $code;
        global $json;
        $code = 11;
        $json = ["statusCode" => $code, "userData" => null];
        return null;
    }
    else if (!$user->checkPassword($password)) {
        global $code;
        global $json;
        $code = 11;
        $json = ["statusCode" => $code, "userData" => null];
        return null;
    }
    else {
        global $code;
        global $json;
        $whitelisted = in_array(/*GRUPPEN ID*/6 ,$user->getGroupIDs());
        $code = 10;
        $json = ["statusCode" => $code, "userData" =>  ["userId" => $user->userID, "username" => $user->username, "banned" => (bool)$user->banned, "banReason" => $user->banReason, "whitelisted" => (bool)$whitelisted, "email" => $user->email]];
        return null;
    }
}

echo json_encode($json);
?>
 
  • Ersteller des Themas
  • #7

Addra

Registriert
Black-Market: 0 / 0 / 0
1 November 2013
20
3 %
Schande über mich: Habe mich überhaupt nicht bedankt

Wird sofort nachgeholt:

Danke euch allen!
 

Dieses Thema betrachten gerade (Benutzer: 0, Gäste: 1)