some steps to get an actual authentication going, consolidate includes, put DB config...
authorRobert Kaiser <kairo@kairo.at>
Sun, 23 Oct 2016 19:04:55 +0000 (21:04 +0200)
committerRobert Kaiser <kairo@kairo.at>
Sun, 23 Oct 2016 19:04:55 +0000 (21:04 +0200)
authorize.php
authsystem.css [new file with mode: 0644]
authsystem.inc.php [new file with mode: 0644]
index.php [new file with mode: 0644]
resource.php
server.inc.php [moved from server.php with 75% similarity]
token.php

index 23c93087e4aa39ccede23fc431f81d22a496a7db..33d7d5e25f4ebe8217962ec1e4bf0080d2d6dace 100644 (file)
@@ -5,8 +5,8 @@
 
 // Simple server based on https://bshaffer.github.io/oauth2-server-php-docs/cookbook
 
-// include our OAuth2 Server object
-require_once __DIR__.'/server.php';
+// Include the common auth system files (including the OAuth2 Server object).
+require_once(__DIR__.'/authsystem.inc.php');
 
 $request = OAuth2\Request::createFromGlobals();
 $response = new OAuth2\Response();
diff --git a/authsystem.css b/authsystem.css
new file mode 100644 (file)
index 0000000..21514d3
--- /dev/null
@@ -0,0 +1,5 @@
+body {
+  font-family: sans-serif;
+/*  margin: 0; */
+  background-color: #FFFFEE;
+}
diff --git a/authsystem.inc.php b/authsystem.inc.php
new file mode 100644 (file)
index 0000000..f209d60
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+// error reporting (for testing)
+ini_set('display_errors', 1); error_reporting(E_ALL);
+
+// Read DB settings
+$dbdata = json_decode(file_get_contents('/etc/kairo/auth_db.json'), true);
+if (!is_array($dbdata)) { trigger_error('DB configuration not found', E_USER_ERROR); }
+
+// Extended DOM document class
+require_once('../kairo/include/cbsm/util/document.php-class');
+
+bindtextdomain('kairo_auth', 'en'); // XXX: Should negotiate locale.
+bind_textdomain_codeset('kairo_auth', 'utf-8');
+
+// include our OAuth2 Server object
+require_once(__DIR__.'/server.inc.php');
+?>
diff --git a/index.php b/index.php
new file mode 100644 (file)
index 0000000..12ad92d
--- /dev/null
+++ b/index.php
@@ -0,0 +1,59 @@
+<?php
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Include the common auth system files (including the OAuth2 Server object).
+require_once(__DIR__.'/authsystem.inc.php');
+
+// Start HTML document as a DOM object.
+extract(ExtendedDocument::initHTML5()); // sets $document, $html, $head, $title, $body
+$document->formatOutput = true; // we want a nice output
+
+$style = $head->appendElement('link');
+$style->setAttribute('rel', 'stylesheet');
+$style->setAttribute('href', 'authsystem.css');
+
+$title->appendText('KaiRo.at Authentication Server');
+$h1 = $body->appendElement('h1', 'KaiRo.at Authentication Server');
+
+$logged_in = false;
+$user_id = 0;
+$user_email = '';
+
+if ($logged_in) {
+  $div = $body->appendElement('div', $user_email);
+  $div->setAttribute('class', 'loginheader');
+  $div = $body->appendElement('div');
+  $div->setAttribute('class', 'loginlinks');
+  $link = $div->appendLink('?logout', _('Log out'));
+  $link->setAttribute('title', _('Log out user of the system'));
+}
+else { // not logged in
+  $form = $body->appendForm('#', 'POST', 'loginform');
+  $form->setAttribute('class', 'loginarea');
+  $label = $form->appendLabel('login_email', _('Email').':');
+  $label->setAttribute('id', 'emailprompt');
+  $label->setAttribute('class', 'loginprompt');
+  $inptxt = $form->appendInputText('form[email]', 30, 20, 'login_email', (intval($user_id)?$user_email:''));
+  $inptxt->setAttribute('class', 'login');
+  $form->appendElement('br');
+  $label = $form->appendLabel('login_pwd', _('Password').':');
+  $label->setAttribute('id', 'pwdprompt');
+  $label->setAttribute('class', 'loginprompt');
+  $inptxt = $form->appendInputPassword('form[pwd]', 20, 20, 'login_pwd', '');
+  $inptxt->setAttribute('class', 'login');
+  $form->appendElement('br');
+  $cbox = $form->appendInputCheckbox('form[remember]', 'login_remember', 'true', false);
+  $cbox->setAttribute('class', 'logincheck');
+  $label = $form->appendLabel('login_remember', _('Remember me'));
+  $label->setAttribute('id', 'rememprompt');
+  $label->setAttribute('class', 'loginprompt');
+  $form->appendElement('br');
+  $submit = $form->appendInputSubmit(_('Log in'));
+  $submit->setAttribute('class', 'loginbutton');
+}
+
+// Send HTML to client.
+print($document->saveHTML());
+?>
index fdd5a91842d4268c07dbeda92c9236605fb3cead..436f4153a737b4c27d7cde3c341375fb66c13389 100644 (file)
@@ -5,8 +5,8 @@
 
 // Simple server based on https://bshaffer.github.io/oauth2-server-php-docs/cookbook
 
-// include our OAuth2 Server object
-require_once __DIR__.'/server.php';
+// Include the common auth system files (including the OAuth2 Server object).
+require_once(__DIR__.'/authsystem.inc.php');
 
 // Handle a request to a resource and authenticate the access token
 if (!$server->verifyResourceRequest(OAuth2\Request::createFromGlobals())) {
similarity index 75%
rename from server.php
rename to server.inc.php
index 20f22b0256b1d8b7d29bee8939ce257cecc580f2..6a82b50002b8197e47b273c331568ad5ce85a4c6 100644 (file)
@@ -5,19 +5,14 @@
 
 // Simple server based on https://bshaffer.github.io/oauth2-server-php-docs/cookbook
 
-$dsn      = 'mysql:dbname=kairo_at_auth;host=localhost';
-$username = 'kairo_at_auth';
-$password = '6z0KIuUsHJhgD5rB';
-
-// error reporting (this is a demo, after all!)
-ini_set('display_errors',1);error_reporting(E_ALL);
+// $dbata needs to be set and be an associative array with the members 'dsn', 'username', and 'password'.
 
 // Autoloading (composer is preferred, but for this example let's just do this)
 require_once('../oauth2-server-php/src/OAuth2/Autoloader.php');
 OAuth2\Autoloader::register();
 
 // $dsn is the Data Source Name for your database, for exmaple "mysql:dbname=my_oauth2_db;host=localhost"
-$storage = new OAuth2\Storage\Pdo(array('dsn' => $dsn, 'username' => $username, 'password' => $password));
+$storage = new OAuth2\Storage\Pdo($dbdata);
 
 // Pass a storage object or array of storage objects to the OAuth2 server class
 $server = new OAuth2\Server($storage);
index 31bb0cca959877e3db4949fa6ec7b4c110eacc0a..44fcdc85807a16568556c9c6ae3110f59e25612e 100644 (file)
--- a/token.php
+++ b/token.php
@@ -5,8 +5,8 @@
 
 // Simple server based on https://bshaffer.github.io/oauth2-server-php-docs/cookbook
 
-// include our OAuth2 Server object
-require_once __DIR__.'/server.php';
+// Include the common auth system files (including the OAuth2 Server object).
+require_once(__DIR__.'/authsystem.inc.php');
 
 // Handle a request for an OAuth2.0 Access Token and send the response to the client
 $server->handleTokenRequest(OAuth2\Request::createFromGlobals())->send();