diff --git a/html/forms/token-item-create.inc.php b/html/forms/token-item-create.inc.php new file mode 100644 index 0000000000..dc6da67c38 --- /dev/null +++ b/html/forms/token-item-create.inc.php @@ -0,0 +1,44 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if(!is_numeric($_POST['user_id']) || !isset($_POST['token'])) +{ + echo('ERROR: error with data, please ensure a valid user and token have been specified.'); + exit; +} +elseif(strlen($_POST['token']) > 32) +{ + echo('ERROR: The token is more than 32 characters'); + exit; +} +elseif(strlen($_POST['token']) < 16) +{ + echo('ERROR: The token is less than 16 characters'); + exit; +} +else +{ + $create = dbInsert(array('user_id' => $_POST['user_id'], 'token_hash' => $_POST['token'], 'description' => $_POST['description']), 'api_tokens'); + if($create > '0') + { + echo('API token has been created'); + $_SESSION['api_token'] = TRUE; + exit; + } + else + { + echo('ERROR: An error occurred creating the API token'); + exit; + } +} diff --git a/html/forms/token-item-remove.inc.php b/html/forms/token-item-remove.inc.php new file mode 100644 index 0000000000..1b4522f39d --- /dev/null +++ b/html/forms/token-item-remove.inc.php @@ -0,0 +1,36 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if(!is_numeric($_POST['token_id'])) +{ + echo('error with data'); + exit; +} +else +{ + if($_POST['confirm'] == 'yes') + { + $delete = dbDelete('api_tokens', '`id` = ?', array($_POST['token_id'])); + if($delete > '0') + { + echo('API token has been removed'); + exit; + } + else + { + echo('An error occurred removing the API token'); + exit; + } + } +} diff --git a/html/pages/api-access.inc.php b/html/pages/api-access.inc.php index 5f1ed58be7..adfb69e3b2 100644 --- a/html/pages/api-access.inc.php +++ b/html/pages/api-access.inc.php @@ -14,26 +14,109 @@ if ($_SESSION['userlevel'] == '10') { +if(empty($_POST['token'])) { + $_POST['token'] = bin2hex(openssl_random_pseudo_bytes(16)); +} ?> +'); + if($_SESSION['api_token'] === TRUE) + { + echo(" + "); + unset($_SESSION['api_token']); + } +echo(' +
+
+ +
+
+
+
+   +
+
@@ -57,12 +140,12 @@ if ($_SESSION['userlevel'] == '10') $api_disabled = ''; } echo(' - + - + '); } @@ -93,8 +176,51 @@ if ($_SESSION['userlevel'] == '10') }); }); $('#confirm-delete').on('show.bs.modal', function(e) { - $(this).find('.danger').attr('href', $(e.relatedTarget).data('href')); - $('.debug-url').html('Delete URL: ' + $(this).find('.danger').attr('href') + ''); + token_id = $(e.relatedTarget).data('token_id'); + $("#token_id").val(token_id); + event.preventDefault(); + }); + $('#token-removal').click('', function(e) { + event.preventDefault(); + token_id = $("#token_id").val(); + $.ajax({ + type: "POST", + url: "/ajax_form.php", + data: $('form.remove_token_form').serialize() , + success: function(msg){ + $("#thanks").html('
'+msg+'
'); + $("#confirm-delete").modal('hide'); + $("#"+token_id).remove(); + }, + error: function(){ + $("#thanks").html('
An error occurred removing the token.
'); + $("#confirm-delete").modal('hide'); + } + }); + }); + $('#token-create').click('', function(e) { + event.preventDefault(); + $.ajax({ + type: "POST", + url: "/ajax_form.php", + data: $('form.create_token_form').serialize(), + success: function(msg){ + $("#thanks").html('
'+msg+'
'); + $("#create-token").modal('hide'); + if(msg.indexOf("ERROR:") <= -1) { + location.reload(); + } + }, + error: function(){ + $("#thanks").html('
An error occurred removing the token.
'); + $("#create-token").modal('hide'); + } + }); + }); + $('#pass-gen').click('', function(e) { + event.preventDefault(); + token = $.password(32,false); + $('#token').val(token); });
'.$api['username'].' '.$api['token_hash'].' '.$api['description'].' Delete