4images Forum & Community
Welcome, Guest. Please login or register.
Did you miss your activation email?
October 30, 2014, 04:54:02 PM

Login with username, password and session length
Search:     Advanced search
Togle to toolbar
Translate this page with =>
Translate this page >
* Home Help Search Login Register
 
+  4images Forum & Community
|-+  4images Modifications / Modifikationen
| |-+  Mods & Plugins (Requests & Discussions) (Moderators: mawenzi, Rembrandt)
| | |-+  WBB3 login and logout integration
0 Members and 1 Guest are viewing this topic. « previous next »
Pages: [1] Print
Author Topic: WBB3 login and logout integration  (Read 2264 times)
Sumale.my
Addicted member
******
Offline Offline

Posts: 1787

Thank You
-Given: 161
-Receive: 75

Neverdie


View Profile
« on: November 24, 2012, 06:27:13 PM »

Hallo zusammen,

ich habe da zwei tolle Anleitungen gefunden, mit der es möglich ist Benutzer Extern aus dem Woltlab Burningboard 3 anzumelden und abzumelden.

In Verbindung mit "[Mod] WBB/4images Einzelregistrierug (Single Registration 4images and WBB)" würde das genau das richtige sein um das abzurunden.

Allerdings weis ich nicht wie ich das vernünftig einbauen soll. Wenn jemand Interesse hat um das ganze zu testen, kann ich gerne Zugangsdaten zukommen lassen. Die Single Registration "[Mod] WBB/4images Einzelregistrierug (Single Registration 4images and WBB)" ist bereits verbaut und funktioniert.

---

Hello together,

I have since found that it is possible two great guides externally to log user out of the Woltlab Burningboard 3 and log off.

In conjunction with"[Mod] WBB/4images Einzelregistrierug (Single Registration 4images and WBB)", that would be the right to complete that.

However, I don't know how I should reasonably fit that. If anyone has interest to test the whole thing, I can be pleased to access data. The single registration "[Mod] WBB/4images Einzelregistrierug (Single Registration 4images and WBB)" is already installed and working.

WBB3 Login: (https://technex.org/index.php?page=TutorialsEntry&tutorialID=17)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?php
// define relative dir to wbb installation
if (!defined('RELATIVE_WBB_DIR')) define('RELATIVE_WBB_DIR''board/');

// wbb imports
require_once(RELATIVE_WBB_DIR.'global.php');

// wcf imports
require_once(WCF_DIR.'lib/system/session/UserSession.class.php');
require_once(
WCF_DIR.'lib/system/auth/UserAuth.class.php');

class 
Login {
  
// Hier definieren wir Variablen mit Standard-Inhalten
  // user object
  
public $user null;
  
  
// given username
  
public $username '';
  
  
// given password
  
public $password '';
  
  
// error field
  
public $errorField '';
  
  
// error text
  
public $errorText '';
  
    
/**
     * Neue Instanz der Klasse, die den Ablauf steuert.
     */
    
public function __construct() {
    
// Benutzer ist bereits angemeldet, "userID" also ungleich "0" -> Wir geben den Benutzernamen aus und stoppen den Ablauf hier
    
if (WCF::getUser()->userID != 0) {
      echo 
'<p>Du bist angemeldet als <strong>'.WCF::getUser()->username.'</strong>.</p>';
      exit;
    }
    
    
// Benutzer ist noch nicht angemeldet, "userID" also gleich "0" -> Wir prüfen, ob Daten übergeben wurden und handeln entsprechend
    // Keine Daten übergeben -> Wir geben unser Loginformular aus
    
if (!count($_POST)) {
      
$this->showForm();
    }
    
// Daten übergeben -> Wir lesen diese mit readParameters() ein
    
else {
      
$this->readParameters();
    }
    }
  
    
/**
     * Lesen der eingegebenen Daten.
     */
    
public function readParameters() {
    
// Wir lesen den Benutzernamen aus den übergebenen Daten aus und entfernen unnötige Leerzeichen
        
if (isset($_POST['username'])) $this->username StringUtil::trim($_POST['username']);
        
    
// Wir lesen das Kennwort aus, welches der Benutzer eingegeben hat
        
if (isset($_POST['password'])) $this->password $_POST['password'];
        
        
// Nun prüfen wir die Daten, geben einen Fehler aus oder melden den Benutzer an
        
$this->checkLoginData();
    }
  
    
/**
     * Daten des Benutzers prüfen.
     */
    
public function checkLoginData() {
    
// Wir prüfen die Daten in einem try/catch-Block, um den Ablauf durch Exceptions unterbrechen zu können
    
try {
      
// Prüfen, ob kein Benutzername eingegeben wurde
          
if (empty($this->username)) {
        throw new 
UserInputException('username');
      }
      
      
// Prüfen, ob kein Kennwort eingegeben wurde
      
if (empty($this->password)) {
        throw new 
UserInputException('password');
      }
      
      
// Prüfen des Kennwortes und ggf. Rückgabe eines neuen Objektes
      
$this->user UserAuth::getInstance()->loginManually($this->username$this->password);
      
      
// Es ist kein Fehler aufgetreten; Wir melden den Benutzer "richtig" an und leiten ihn weiter
      
$this->doLogin();
    }
    catch (
UserInputException $e) {
      
// Setze das betroffene Eingabefeld, welches den Fehler verursacht hat
      
$this->errorField $e->getField();
      
      
// Setze einen Fehlertext (alternativ könnte man noch abfragen, welcher Fehler aufgetreten ist und den Text entsprechend anpassen)
      
$this->errorText 'Es ist ein Fehler aufgetreten. Bitte überprüfe das markierte Eingabefeld.';
      
      
// Abschließend geben wir das Formular erneut aus
      
$this->showForm();
    }
    }
  
    
/**
     * Den Benutzer "richtig" anmelden und zur Loginseite weiterleiten.
     */
    
public function doLogin() {
    
// Setze Daten des Benutzern
    
UserAuth::getInstance()->storeAccessData($this->user$this->username$this->password);
    
    
// Session ändern
    
WCF::getSession()->changeUser($this->user);
    
    
// Benutzer weiterleiten
    
HeaderUtil::redirect('login.php');
    exit;
    }
  
    
/**
     * Gibt ein einfaches Formular aus, mit dem sich ein Benutzer anmelden kann.
     */
    
public function showForm() {
    
// Wir prüfen zunächst, ob ein Fehler bekannt ist und geben den Fehlertext hier aus
    
if (!empty($this->errorText)) {
      echo 
'<p style="color:red;font-weight:bold">' $this->errorText '</p>';
    }
    
    
// Nun geben wir das eigentliche Formular aus
    // Wir senden die Daten an die Datei "login.php" mit der Methode "post"
    // Die Felder werden befüllt, sobald man Daten eingegeben hat, diese aber nicht anerkannt wurden
    // Mit einer Abfrage markieren wir das Eingabefeld, welches den Fehler verursacht hat
?>
<form action="login.php" method="post">
  <p>Benutzername:<br /><input name="username" type="text" value="<?php echo $this->username ?>" size="30"<?php if ($this->errorField == 'username') { echo ' style="border:2px solid red"'; } ?> /></p>
  <p>Kennwort:<br /><input name="password" type="password" value="<?php echo $this->password ?>" size="30"<?php if ($this->errorField == 'password') { echo ' style="border:2px solid red"'; } ?> /></p>
  <p><br /><br /></p>
  <p><input type="submit" value="Absenden"> <input type="reset" value="Abbrechen"></p>
</form>
<?php
    
}
}

// Wir "starten" unsere Klasse, die dann automatisch die weiteren Schritte abarbeitet
new Login;
?>

WBB3 Logout: (https://technex.org/index.php?page=TutorialsEntry&tutorialID=23)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
// define relative dir to wbb installation
if (!defined('RELATIVE_WBB_DIR')) define('RELATIVE_WBB_DIR''board/');

// wbb imports
require_once(RELATIVE_WBB_DIR.'global.php');

class 
Logout {
    
/**
     * Neue Instanz der Klasse, die den Ablauf steuert.
     */
    
public function __construct() {
        
// Wir prüfen, ob der Benutzer überhaupt angemeldet ist -> Wenn nicht, geben wir eine meldung aus und stoppen den Ablauf hier
        
if (WCF::getUser()->userID == 0) {
            echo 
'<p>Du bist nicht angemeldet.</p>';
            exit;
        }
        
        
// Benutzer abmelden
        
$this->doLogout();
    }
    
    
/**
     * Hier findet der eigentliche Logout statt. Nachdem der Benutzer abgemeledet wurde, wird er an die "index.php" weitergeleitet.
     */
    
public function doLogout() {
        
// Wir löschen die aktuelle Sitzung des Benutzers
        
WCF::getSession()->delete();
        
        
// Wir löschen die gesetzten Cookies
        
if (isset($_COOKIE[COOKIE_PREFIX.'userID'])) HeaderUtil::setCookie('userID'0);
        if (isset(
$_COOKIE[COOKIE_PREFIX.'password'])) HeaderUtil::setCookie('password''');
        
        
// Benutzer weiterleiten
        
HeaderUtil::redirect('index.php');
        exit;
    }
}

// Wir "starten" unsere Klasse, die dann automatisch die weiteren Schritte abarbeitet
new Logout;
?>
« Last Edit: November 24, 2012, 06:40:51 PM by Sumale.nin » Logged
Rembrandt
Moderator
4images Guru
*****
Offline Offline

Posts: 4089

Thank You
-Given: 108
-Receive: 860

Vienna


View Profile WWW
« Reply #1 on: November 25, 2012, 05:52:57 PM »

Hi!

So wie es aussieht funktioniert das nicht, da es im WBB und 4images zwei gleichnamige Klassen gibt (Template und Session) .

mfg Andi
Logged

Meine 4Images Modifikationen  Now over 100 Modification Online!    Meine 4images Demo Seite


Please do not PM me asking for help unless you've been specifically asked to do so. Such PMs will be deleted without answer. (forum rule #6)
Sumale.my
Addicted member
******
Offline Offline

Posts: 1787

Thank You
-Given: 161
-Receive: 75

Neverdie


View Profile
« Reply #2 on: November 25, 2012, 07:52:07 PM »

Das ist ja doof.
Was wäre, wenn ich diese Klassen in 4images umbenenne?
Logged
Rembrandt
Moderator
4images Guru
*****
Offline Offline

Posts: 4089

Thank You
-Given: 108
-Receive: 860

Vienna


View Profile WWW
« Reply #3 on: November 25, 2012, 08:46:01 PM »

ja kannst du schon machen, aber ob das genügt...
ob es nicht einfacher ist in der includes/session.php in der "function login" die session table vom wbb zu füllen und ein wbb cookie zu setzten.
Logged

Meine 4Images Modifikationen  Now over 100 Modification Online!    Meine 4images Demo Seite


Please do not PM me asking for help unless you've been specifically asked to do so. Such PMs will be deleted without answer. (forum rule #6)
Sumale.my
Addicted member
******
Offline Offline

Posts: 1787

Thank You
-Given: 161
-Receive: 75

Neverdie


View Profile
« Reply #4 on: November 25, 2012, 08:57:28 PM »

Mhhhhh,
ok ich versuche das mal hinzubekommen XD
Wenn nicht, kann ich mich an dich wenden?


Edit://
Ich weis gar nicht wie ich da anfangen soll....
« Last Edit: November 25, 2012, 09:38:33 PM by Sumale.nin » Logged
Pages: [1] Print 
« previous next »
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.242 seconds with 21 queries.