Hallo DevNL,
Ik ben al een tijdje bezig aan XAuth, een website waarmee je in kunt loggen op andere websites of apps.
**Hoe gebruik je XAuth?**
1. Klik op de website waar je in wilt loggen op de knop 
[img]http://image.prntscr.com/image/ae4b75f59d5842618c7c1d34b029ebbf.png[/img].
Als je al een account hebt:
2. Voer je e-mailadres en wachtwoord in, en klik op de inlogknop.

[img]http://image.prntscr.com/image/d3f9e3d4e30542b1afc27c9b097ba7b9.png[/img]
3. Autoriseer de app. Je ziet hier alle gegevens die de app van je wilt hebben. Dit hoef je maar één keer te doen: de volgende keer dat je in wil loggen gaat alles vanzelf.

[img]http://image.prntscr.com/image/c2a2d6f4f14a4dcab1387a34ad513336.png[/img]
**Dit syteem gebruiken op je eigen site?**
Dat is nog niet mogelijk, maar binnenkort wel. Ik ben bezig met het developers-gedeelte, waar je een eigen app kunt moeten registreren.
Ik heb ook een PHP-library gemaakt waarmee je makkelijk het inlogsysteem kunt gebruiken. Deze zie je ook in de voorbeeldcode in de snippets 2a en 2b.
**Voortgang**
Inloggen, account aanmaken en activeren -- af
Inloggen op andere website & autoriseren -- af
Algemene layout/stijl -- af, misschien nog wat aanpassingen
Developerspagina (app registreren voor eigen site) -- nog niet begonnen
Disclaimer etc. -- nog niet begonnen
Inloggegevens vergeten -- nog niet begonnen
Als jullie vragen hebben, stel maar.
Groetjes,
@Xesau
[hr]
Hieronder nog wat snippets :)
**Codesnippets**
1. De ``profile``-service. Hiermee kan een app een aantal profielgegevens ophalen, afhankelijk van de permissies waarvoor je de app geauthoriseerd hebt.
[code]
# /service/profile
public static function profile() {
self::service($user, $authorization);
$result = [];
$app = $authorization->app;
if ($app->wants_email === '1')
$result['email_address'] = $user->email;
if ($app->wants_name === '1') {
$result['first_name'] = $user->first_name;
$result['last_name'] = $user->last_name;
}
if ($app->wants_other_apps === '1') {
$otherApps = $user->getApps()
->where('id', '!=', $app);
$appArray = [];
foreach($otherApps as $app)
$appArray[] = [$app->id, $app->name];
$result['other_apps'] = $appArray;
}
[..................]
self::result($result);
}[/code]
2. Een website die het XAuth-inlogsysteem gebruikt:
2a. De inlogknop
[code]<?php
$privateKey = '..............';
$publicKey = '..............';
include 'XAuth.php';
use Xesau\Auth;
$app = new Xesau\Auth\App($privateKey, $publicKey);
$url = $app->generateLoginURL('https://mijn-website.nl/xauth-login.php');
?>
<link rel="stylesheet" href="https://www.xesau.eu/auth/content/skin/assets/css/login-button.css" />
<a class="login-with-xauth" href="<?= $url ?>">Inloggen met XAuth</a>[/code]
2b. De code om het inloggen af te handelen (xauth-login.php)
[code]$privateKey = '...............';
$publicKey = '...............';
include 'XAuth.php';
use Xesau\Auth;
$app = new Xesau\Auth\App($privateKey, $publicKey);
$accessToken = $app->exchangeCode($_GET['code']);
// Gebruik XAuth-user-id om in te loggen:
$profile = $app->getService('profile');
$userID = $profile->user_id;
$user = getUserWithID($userID);
// Gebruiker zoeken of maken
if ($user !== null) {
$_SESSION['user_id'] = $user->id;
} else {
$user = createUser($user->id, $profile->first_name, $profile->last_name, $profile->email_address);
$_SESSION['user_id'] = $user->id;
}
// Access-token instellen/updaten zodat andere pagina's informatie kunnen ophalen
$user->xauth_access_token = $accessToken;
// Doorsturen naar gebruikerspagina of zoiets.
header('Location: user.php');[/code]