Browse Source

Prepare ui for ldap

feature/ldap
Chocobozzz 8 years ago
parent
commit
12ae387298
  1. 7
      include/config.php
  2. 2
      include/connect.php
  3. 40
      include/functions.php
  4. 10
      include/grids.php
  5. 73
      include/html/grids.php
  6. 19
      index.php
  7. 130
      js/grids.js
  8. 6
      migration.php

7
include/config.php

@ -1,7 +1,14 @@
<?php <?php
// false -> SQL, true -> LDAP
$useLDAP = false;
$host = 'localhost'; $host = 'localhost';
// 389 if your want to use LDAP
$port = '3306'; $port = '3306';
// Unused with LDAP
$db = 'openvpn-admin'; $db = 'openvpn-admin';
$user = ''; $user = '';
$pass = ''; $pass = '';
?> ?>

2
include/connect.php

@ -1,5 +1,5 @@
<?php <?php
require(dirname(__FILE__) . "/config.php"); require_once(dirname(__FILE__) . "/config.php");
$options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO("mysql:host=$host;port=$port;dbname=$db", $user, $pass, $options); $bdd = new PDO("mysql:host=$host;port=$port;dbname=$db", $user, $pass, $options);

40
include/functions.php

@ -42,29 +42,31 @@
return password_verify($pass, $hash); return password_verify($pass, $hash);
} }
//login with LDAP function isUsingLDAP($useLDAP) {
return isset($useLDAP) && $useLDAP === true;
function loginLDAP($serverFQDN, $username, $password)
{
//connect to LDAP server or AD server. Both work
$ldap = ldap_connect($serverFQDN);
//check if user exists if works return true if not return false
if ($bind = ldap_bind($ldap, $username, $password))
{
//return true when login is OK.
return true;
} }
else
function loginLDAP($serverFQDN, $username, $password)
{ {
//return false when login is NOK //connect to LDAP server or AD server. Both work
return false; $ldap = ldap_connect($serverFQDN);
//check if user exists if works return true if not return false
if ($bind = ldap_bind($ldap, $username, $password))
{
//return true when login is OK.
return true;
}
else
{
//return false when login is NOK
return false;
}
} }
}
//get all LDAP users and place them inside a database. //get all LDAP users and place them inside a database.
function getLDAPUsers() function getLDAPUsers()
{ {
} }
?> ?>

10
include/grids.php

@ -4,8 +4,8 @@
if(!isset($_SESSION['admin_id'])) if(!isset($_SESSION['admin_id']))
exit -1; exit -1;
require(dirname(__FILE__) . '/connect.php'); require_once(dirname(__FILE__) . '/connect.php');
require(dirname(__FILE__) . '/functions.php'); require_once(dirname(__FILE__) . '/functions.php');
// ---------------- SELECT ---------------- // ---------------- SELECT ----------------
@ -37,6 +37,12 @@
} }
} }
else if ($_GET['select'] == "user_ldap") {
// Fake data for now
echo json_encode([ [ "user_ldap_id" => "blabla", "user_ldap_online" => 1 ] ]);
}
// Select the logs // Select the logs
else if($_GET['select'] == "log" && isset($_GET['offset'], $_GET['limit'])){ else if($_GET['select'] == "log" && isset($_GET['offset'], $_GET['limit'])){
$offset = intval($_GET['offset']); $offset = intval($_GET['offset']);

73
include/html/grids.php

@ -1,35 +1,56 @@
<!-- Users grid --> <?php
<div class="block-grid row" id="user-grid"> // Use MySQL
<h4> // We allow the administrator to create user
OpenVPN Users <button data-toggle="modal" data-target="#modal-user-add" type="button" class="btn btn-success btn-xs"><span class="glyphicon glyphicon-plus"></span></button> // The user table is different too
</h4> if (isUsingLDAP($useLDAP) === false) {
<table id="table-users" class="table"></table> ?>
<div id="modal-user-add" class="modal fade" tabindex="-1" role="dialog"> <!-- Users grid -->
<div class="modal-dialog" role="document"> <div class="block-grid row" id="user-grid">
<div class="modal-content"> <h4>
<div class="modal-header"> OpenVPN Users <button data-toggle="modal" data-target="#modal-user-add" type="button" class="btn btn-success btn-xs"><span class="glyphicon glyphicon-plus"></span></button>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> </h4>
<h4 class="modal-title">Add user</h4> <table id="table-users" class="table"></table>
</div>
<div class="modal-body"> <div id="modal-user-add" class="modal fade" tabindex="-1" role="dialog">
<div class="form-group"> <div class="modal-dialog" role="document">
<label for="modal-user-add-username">Username</label> <div class="modal-content">
<input type="text" name="username" id="modal-user-add-username" class="form-control" autofocus/> <div class="modal-header">
</div> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<div class="form-group"> <h4 class="modal-title">Add user</h4>
<label for="modal-user-add-password">Password</label> </div>
<input type="password" name="password" id="modal-user-add-password" class="form-control" /> <div class="modal-body">
<div class="form-group">
<label for="modal-user-add-username">Username</label>
<input type="text" name="username" id="modal-user-add-username" class="form-control" autofocus/>
</div>
<div class="form-group">
<label for="modal-user-add-password">Password</label>
<input type="password" name="password" id="modal-user-add-password" class="form-control" />
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" id="modal-user-add-save">Save</button>
</div>
</div> </div>
</div> </div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" id="modal-user-add-save">Save</button>
</div>
</div> </div>
</div> </div>
<?php
}
else {
?>
<!-- Users LDAP grid -->
<div class="block-grid row" id="user-ldap-grid">
<h4>
OpenVPN Users (LDAP)
</h4>
<table id="table-users-ldap" class="table"></table>
</div> </div>
</div> <?php
}
?>
<!-- Logs grid --> <!-- Logs grid -->
<div class="block-grid row" id="log-grid"> <div class="block-grid row" id="log-grid">

19
index.php

@ -1,8 +1,9 @@
<?php <?php
session_start(); session_start();
require(dirname(__FILE__) . '/include/functions.php'); require_once(dirname(__FILE__) . '/include/config.php');
require(dirname(__FILE__) . '/include/connect.php'); require_once(dirname(__FILE__) . '/include/connect.php');
require_once(dirname(__FILE__) . '/include/functions.php');
// Disconnecting ? // Disconnecting ?
if(isset($_GET['logout'])){ if(isset($_GET['logout'])){
@ -157,8 +158,8 @@
} }
// Print the installation form // Print the installation form
else { else {
require(dirname(__FILE__) . '/include/html/menu.php'); require_once(dirname(__FILE__) . '/include/html/menu.php');
require(dirname(__FILE__) . '/include/html/form/installation.php'); require_once(dirname(__FILE__) . '/include/html/form/installation.php');
} }
exit(-1); exit(-1);
@ -169,8 +170,8 @@
if(isset($error) && $error == true) if(isset($error) && $error == true)
printError('Login error'); printError('Login error');
require(dirname(__FILE__) . '/include/html/menu.php'); require_once(dirname(__FILE__) . '/include/html/menu.php');
require(dirname(__FILE__) . '/include/html/form/configuration.php'); require_once(dirname(__FILE__) . '/include/html/form/configuration.php');
} }
@ -179,8 +180,8 @@
if(isset($error) && $error == true) if(isset($error) && $error == true)
printError('Login error'); printError('Login error');
require(dirname(__FILE__) . '/include/html/menu.php'); require_once(dirname(__FILE__) . '/include/html/menu.php');
require(dirname(__FILE__) . '/include/html/form/login.php'); require_once(dirname(__FILE__) . '/include/html/form/login.php');
} }
// --------------- GRIDS --------------- // --------------- GRIDS ---------------
@ -200,7 +201,7 @@
</nav> </nav>
<?php <?php
require(dirname(__FILE__) . '/include/html/grids.php'); require_once(dirname(__FILE__) . '/include/html/grids.php');
} }
?> ?>
</body> </body>

130
js/grids.js

@ -19,8 +19,7 @@ $(function () {
// ------------------------- USERS definitions ------------------------- // ------------------------- USERS definitions -------------------------
var $userTable = $('#table-users'); var $userTable = $('#table-users');
var $modalUserAdd = $('#modal-user-add'); var $userLDAPTable = $('#table-users-ldap');
var $userAddSave = $modalUserAdd.find('#modal-user-add-save');
function addUser(username, password) { function addUser(username, password) {
$.ajax({ $.ajax({
@ -53,26 +52,30 @@ $(function () {
}); });
} }
var userEditable = { if ($userTable.length !== 0) {
url: gridsUrl, var $modalUserAdd = $('#modal-user-add');
params: function (params) { var $userAddSave = $modalUserAdd.find('#modal-user-add-save');
params.set_user = true;
return params; var userEditable = {
}, url: gridsUrl,
success: function () { params: function (params) {
refreshTable($userTable); params.set_user = true;
return params;
},
success: function () {
refreshTable($userTable);
}
} }
}
// ES 2015 so be prudent // ES 2015 so be prudent
if (typeof Object.assign == 'function') { if (typeof Object.assign == 'function') {
var userDateEditable = Object.assign({ type: 'date', placement: 'bottom' }, userEditable); var userDateEditable = Object.assign({ type: 'date', placement: 'bottom' }, userEditable);
} else { } else {
console.warn('Your browser does not support Object.assign. You will not be able to modify the date inputs.'); console.warn('Your browser does not support Object.assign. You will not be able to modify the date inputs.');
}
} }
// ------------------------- ADMIN definitions ------------------------- // ------------------------- ADMIN definitions -------------------------
var $adminTable = $('#table-admins'); var $adminTable = $('#table-admins');
var $modalAdminAdd = $('#modal-admin-add'); var $modalAdminAdd = $('#modal-admin-add');
@ -121,53 +124,72 @@ $(function () {
} }
} }
// ------------------------- ADMIN definitions ------------------------- // ------------------------- LOGS definitions -------------------------
var $logTable = $('#table-logs'); var $logTable = $('#table-logs');
// -------------------- USERS -------------------- // -------------------- USERS --------------------
// Bootstrap table definition // Bootstrap table definition
$userTable.bootstrapTable({
url: gridsUrl, if ($userTable.length !== 0) {
sortable: false, $userTable.bootstrapTable({
queryParams: function (params) { url: gridsUrl,
params.select = 'user'; sortable: false,
return params; queryParams: function (params) {
}, params.select = 'user';
// Primary key return params;
idField: 'user_id', },
columns: [ // Primary key
{ title: "ID", field: "user_id", editable: userEditable }, idField: 'user_id',
{ title: "Pass", field: "user_pass", editable: userEditable }, columns: [
{ title: "Mail", field: "user_mail", editable: userEditable }, { title: "ID", field: "user_id", editable: userEditable },
{ title: "Phone", field: "user_phone", editable: userEditable }, { title: "Pass", field: "user_pass", editable: userEditable },
{ title: "Online", field: "user_online" }, { title: "Mail", field: "user_mail", editable: userEditable },
{ title: "Enabled", field: "user_enable" }, { title: "Phone", field: "user_phone", editable: userEditable },
{ title: "Start Date", field: "user_start_date", editable: userDateEditable }, { title: "Online", field: "user_online" },
{ title: "End Date", field: "user_end_date", editable: userDateEditable }, { title: "Enabled", field: "user_enable" },
{ { title: "Start Date", field: "user_start_date", editable: userDateEditable },
title: 'Delete', { title: "End Date", field: "user_end_date", editable: userDateEditable },
field: "user_del", {
formatter: deleteFormatter, title: 'Delete',
events: { field: "user_del",
'click .glyphicon': function (e, value, row) { formatter: deleteFormatter,
if (confirm('Are you sure you want to delete this user?')) { events: {
deleteUser(row.user_id); 'click .glyphicon': function (e, value, row) {
if (confirm('Are you sure you want to delete this user?')) {
deleteUser(row.user_id);
}
} }
} }
} }
} ]
] });
});
// When we want to add a user // When we want to add a user
$userAddSave.on('click', function () { $userAddSave.on('click', function () {
var $usernameInput = $modalUserAdd.find('input[name=username]'); var $usernameInput = $modalUserAdd.find('input[name=username]');
var $passwordInput = $modalUserAdd.find('input[name=password]'); var $passwordInput = $modalUserAdd.find('input[name=password]');
addUser($usernameInput.val(), $passwordInput.val()); addUser($usernameInput.val(), $passwordInput.val());
$modalUserAdd.modal('hide'); $modalUserAdd.modal('hide');
}); });
}
else {
$userLDAPTable.bootstrapTable({
url: gridsUrl,
sortable: false,
queryParams: function (params) {
params.select = 'user_ldap';
return params;
},
// Primary key
idField: 'user_ldap_id',
columns: [
{ title: "ID", field: "user_ldap_id"},
{ title: "Online", field: "user_ldap_online" },
]
});
}
// -------------------- ADMINS -------------------- // -------------------- ADMINS --------------------

6
migration.php

@ -7,9 +7,9 @@
$www = $argv[1]; $www = $argv[1];
require("$www/include/config.php"); require_once("$www/include/config.php");
require("$www/include/connect.php"); require_once("$www/include/connect.php");
require("$www/include/functions.php"); require_once("$www/include/functions.php");
$migrations = getMigrationSchemas(); $migrations = getMigrationSchemas();

Loading…
Cancel
Save