Chris Codeblog

Tipps, Tricks & Tutorials rund ums Programmieren

[C++ Builder]: Erstellen und Einloggen von Benutzern auf Parse

Im letzten Post habe ich erklärt wie man auf Parse Daten speichern und wieder abrufen kann. Heute möchte ich euch zeigen, wie man Benutzer erstellen und diese einloggen kann.

Anlegen der Userklasse in Parse

Als erstes brauchen wir eine Klasse in Parse in der wir die User speichern können. Zum Glück müssen wir uns dazu selber keine Gedanken machen, denn Parse kennt so eine Klasse von selbst. Dazu müssen wir nur in den Data Browser gehen und dort auf New Class klicken. Im erscheinenden muss User ausgewählt werden:

Userklasse erstellen

Und schon haben ist die Userklasse erstellt. Diese enthält standardmäßig die Spalten username, password, emailVerified, email die wir uns zunutze machen können. Logischerweise wird das Passwort nicht angezeigt.
Zusätzlich können eigene Spalten hinzugefügt werden, in denen Benutzerspezifische Daten gespeichert werden die man zusätzlich haben möchte (z. B. Vorname, Name, usw.).

Userklasse

Soll ein User eine Mail bekommen mit der er seine E-Mail-Adresse bestätigen soll, sobald er sich registriert hat, muss dies unter Settings -> Email settings eingeschaltet werden. Ebenfalls kann man dort den Text verändern der in der E-Mail stehen soll.

E-Mail Verifikation

Für mein Beispiel schalte ich dies mal ein. Nun könnte man bereits im Web-Backend neue User anlegen. Sobald ein User mit einer E-Mail-Adresse angelegt wurde, wird auch gleich eine E-Mail verschickt.

In meinem Beispiel will ich den User aber über meinProgramm registrieren, schließlich sollen neue Benutzer sich auch mit ebendiesem registrieren können.


Die GUI und der Code

Registrieren eines Benutzers
Wie schon im vorherigen Beispiel benötigt man die Parse-Komponenten. Als erstes den TParseProvider dem ich natürlich wieder die ApplicationID sowie den REST API Key hinterlege. Zusätzlich wird die Komponente TBackendUsers gebraucht. Zusätzlich lege ich im Dialog die Felder an die ich zum registrieren eines Benutzers brauche. Im Editfeld in dem das Passwort eingetragen werden soll habe ich unter PasswordChar einen Stern (*) eingetragen, damit das Passwort nicht sichtbar ist. Der Dialog:

Parse Benutzerdialog - 1

Jetzt können wir mit dem Code loslegen:

	TJSONObject *pEmail;
	TBackendEntityValue entity;

	// Der Username und das Passwort koennen beim registrieren ganz normal angegeben werden
	// weitere Daten (wie z. B. die E-Mail-Adresse) muessen per JSON uebergeben werden

	// JSON fuer die E-Mail-Adresse basteln
	pEmail = new TJSONObject();
	pEmail->AddPair("email", this->edtEMail->Text);

	// Den User auf Parse anmelden, ueber entity erhaelt man die ObjectID des neuen Users
	try
	{
		this->BackendUsers->Users->SignupUser(this->edtUsername->Text, this->edtPasswort->Text, pEmail, entity);
	}
	catch(EBackendError &exception)
	{
		MessageBoxW(0, exception.Message.c_str(), L"Fehler", MB_ICONERROR | MB_OK);
		bErfolg = false;
	}

	if (bErfolg == true)
		MessageBoxW(0, L"Du hast dich erfolgreich registriert!\r\nBitte bestätige als nächstes deine E-Mail-Adresse!", L"Glückwunsch", MB_ICONINFORMATION | MB_OK);

	delete pEmail;

Ganz wichtig dabei ist, dass die E-Mal-Adresse übergeben wird. andernfalls kann Parse logischerweise keine E-Mail verschicken.
Schön ist auch: Man muss sich um nicht um eine Duplikatsprüfung kümmern. Parse macht das in der Userklasse selbstständig. Ist der entsprechende Username oder die entsprechende E-Mail bereits in der Tabelle vorhanden bekommt man eine Aussagekräftige Fehlermeldung zurückgegeben.

Einloggen
Natürlich soll sich ein registrierter Nutzer auch einloggen können. Dazu habe ich mein Formular einfach nochmal um zwei Felder und einen Button erweitert:

Parse-Benutzerdialog 2

	bool bErfolg = true, bEMailVerifiziert;
	String strSessionToken;
	TBackendEntityValue entity;
	TJSONArray *pUser;

	// Das JSON-Array erzeugen
	pUser = new TJSONArray();

	// Den User einloggen
	try
	{
		this->BackendUsers->Users->LoginUser(this->edtUsernameLogin->Text, this->edtPasswortLogin->Text, entity, pUser);
	}
	catch(EBackendError &exception)
	{
		MessageBoxW(0, exception.Message.c_str(), L"Fehler", MB_ICONERROR | MB_OK);
		bErfolg = false;
	}

	if (bErfolg == true)
	{
		// Pruefen ob die E-Mail verifiziert ist
		if (static_cast<TJSONObject*>(pUser->Items[0])->GetValue("emailVerified")->Value() == "true")
			bEMailVerifiziert = true;
		else
			bEMailVerifiziert = false;

		// Falls die E-Mail-Adresse noch nicht bestaetigt wurde -> Meldung
		if (bEMailVerifiziert == false)
		{
			MessageBoxW(0, L"Bitte bestätige zuerst deine E-Mail-Adresse!", L"Achtung", MB_ICONINFORMATION | MB_OK);
			this->BackendUsers->Users->Logout();
		}
		else
		{
			// Session-Token
			strSessionToken = static_cast<TJSONObject*>(pUser->Items[0])->GetValue("sessionToken")->Value();

			// Irgendwas machen

			// Ausloggen
			this->BackendUsers->Users->Logout();
		}
	}

Das wars. So erstellt man User in Parse und kann diese Einloggen. Hier könnt ihr euch das Projekt herunterladen.

Ihr habt Fragen, Anregungen, Wünsche? Hinterlasst mir einen Kommentar oder schreibt eine Mail an info(at)chris-codeblog.de

[C++ Builder]: Erstellen und Einloggen von Benutzern auf Parse

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen