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
// false -> SQL, true -> LDAP
$useLDAP = false;
$host = 'localhost';
// 389 if your want to use LDAP
$port = '3306';
// Unused with LDAP
$db = 'openvpn-admin';
$user = '';
$pass = '';
?>

2
include/connect.php

@ -1,5 +1,5 @@
<?php
require(dirname(__FILE__) . "/config.php");
require_once(dirname(__FILE__) . "/config.php");
$options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$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);
}
//login with LDAP
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;
function isUsingLDAP($useLDAP) {
return isset($useLDAP) && $useLDAP === true;
}
else
function loginLDAP($serverFQDN, $username, $password)
{
//return false when login is NOK
return false;
//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
{
//return false when login is NOK
return false;
}
}
}
//get all LDAP users and place them inside a database.
function getLDAPUsers()
{
//get all LDAP users and place them inside a database.
function getLDAPUsers()
{
}
}
?>

10
include/grids.php

@ -4,8 +4,8 @@
if(!isset($_SESSION['admin_id']))
exit -1;
require(dirname(__FILE__) . '/connect.php');
require(dirname(__FILE__) . '/functions.php');
require_once(dirname(__FILE__) . '/connect.php');
require_once(dirname(__FILE__) . '/functions.php');
// ---------------- 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
else if($_GET['select'] == "log" && isset($_GET['offset'], $_GET['limit'])){
$offset = intval($_GET['offset']);

73
include/html/grids.php

@ -1,35 +1,56 @@
<!-- Users grid -->
<div class="block-grid row" id="user-grid">
<h4>
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>
</h4>
<table id="table-users" class="table"></table>
<?php
// Use MySQL
// We allow the administrator to create user
// The user table is different too
if (isUsingLDAP($useLDAP) === false) {
?>
<div id="modal-user-add" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">Add user</h4>
</div>
<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" />
<!-- Users grid -->
<div class="block-grid row" id="user-grid">
<h4>
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>
</h4>
<table id="table-users" class="table"></table>
<div id="modal-user-add" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">Add user</h4>
</div>
<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 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>
<?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>
<?php
}
?>
<!-- Logs grid -->
<div class="block-grid row" id="log-grid">

19
index.php

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

130
js/grids.js

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

6
migration.php

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

Loading…
Cancel
Save