Skip to content

Commit

Permalink
merge r27810 from branch 2.6 to trunk
Browse files Browse the repository at this point in the history
bug 3055: add security pwg_token on API methods introduced in Piwigo 2.6
(pwg.groups.addUser, pwg.groups.deleteUser, pwg.groups.setInfo, pwg.users.add,
pwg.users.setInfo, pwg.permissions.add, pwg.permissions.remove)



git-svn-id: http://piwigo.org/svn/trunk@27811 68402e56-0260-453c-a942-63ccdbb3a9ee
  • Loading branch information
plegall committed Mar 17, 2014
1 parent 61b4fd3 commit b08c46f
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 2 deletions.
7 changes: 5 additions & 2 deletions admin/themes/default/template/user_list.tpl
Expand Up @@ -56,7 +56,7 @@ jQuery(document).ready(function() {
jQuery.ajax({
url: "ws.php?format=json&method=pwg.users.add",
type:"POST",
data: jQuery(this).serialize(),
data: jQuery(this).serialize()+"&pwg_token="+pwg_token,
beforeSend: function() {
jQuery("#addUserForm .errors").hide();
Expand Down Expand Up @@ -345,6 +345,7 @@ jQuery(document).ready(function() {
url: "ws.php?format=json&method=pwg.users.setInfo",
type:"POST",
data: {
pwg_token:pwg_token,
user_id:userId,
password: jQuery('#user'+userId+' .changePassword input[type=text]').val()
},
Expand Down Expand Up @@ -396,6 +397,7 @@ jQuery(document).ready(function() {
url: "ws.php?format=json&method=pwg.users.setInfo",
type:"POST",
data: {
pwg_token:pwg_token,
user_id:userId,
username: jQuery('#user'+userId+' .changeUsername input[type=text]').val()
},
Expand Down Expand Up @@ -467,6 +469,7 @@ jQuery(document).ready(function() {
var userId = jQuery(this).data('user_id');
var formData = jQuery('#user'+userId+' form').serialize();
formData += '&pwg_token='+pwg_token;
if (jQuery('#user'+userId+' form select[name="group_id[]"] option:selected').length == 0) {
formData += '&group_id=-1';
Expand Down Expand Up @@ -708,6 +711,7 @@ jQuery(document).ready(function() {
var action = jQuery("select[name=selectAction]").prop("value");
var method = 'pwg.users.setInfo';
var data = {
pwg_token: pwg_token,
user_id: selection
};

Expand All @@ -718,7 +722,6 @@ jQuery(document).ready(function() {
return false;
}
method = 'pwg.users.delete';
data.pwg_token = pwg_token;
break;
case 'group_associate':
method = 'pwg.groups.addUser';
Expand Down
15 changes: 15 additions & 0 deletions include/ws_functions/pwg.groups.php
Expand Up @@ -165,6 +165,11 @@ function ws_groups_delete($params, &$service)
*/
function ws_groups_setInfo($params, &$service)
{
if (get_pwg_token() != $params['pwg_token'])
{
return new PwgError(403, 'Invalid security token');
}

$updates = array();

// does the group exist ?
Expand Down Expand Up @@ -221,6 +226,11 @@ function ws_groups_setInfo($params, &$service)
*/
function ws_groups_addUser($params, &$service)
{
if (get_pwg_token() != $params['pwg_token'])
{
return new PwgError(403, 'Invalid security token');
}

// does the group exist ?
$query = '
SELECT COUNT(*)
Expand Down Expand Up @@ -264,6 +274,11 @@ function ws_groups_addUser($params, &$service)
*/
function ws_groups_deleteUser($params, &$service)
{
if (get_pwg_token() != $params['pwg_token'])
{
return new PwgError(403, 'Invalid security token');
}

// does the group exist ?
$query = '
SELECT COUNT(*)
Expand Down
10 changes: 10 additions & 0 deletions include/ws_functions/pwg.permissions.php
Expand Up @@ -146,6 +146,11 @@ function ws_permissions_getList($params, &$service)
*/
function ws_permissions_add($params, &$service)
{
if (get_pwg_token() != $params['pwg_token'])
{
return new PwgError(403, 'Invalid security token');
}

include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');

if (!empty($params['group_id']))
Expand Down Expand Up @@ -203,6 +208,11 @@ function ws_permissions_add($params, &$service)
*/
function ws_permissions_remove($params, &$service)
{
if (get_pwg_token() != $params['pwg_token'])
{
return new PwgError(403, 'Invalid security token');
}

include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');

$cat_ids = get_subcat_ids($params['cat_id']);
Expand Down
10 changes: 10 additions & 0 deletions include/ws_functions/pwg.users.php
Expand Up @@ -275,6 +275,11 @@ function ws_users_getList($params, &$service)
*/
function ws_users_add($params, &$service)
{
if (get_pwg_token() != $params['pwg_token'])
{
return new PwgError(403, 'Invalid security token');
}

global $conf;

if ($conf['double_password_type_in_admin'])
Expand Down Expand Up @@ -363,6 +368,11 @@ function ws_users_delete($params, &$service)
*/
function ws_users_setInfo($params, &$service)
{
if (get_pwg_token() != $params['pwg_token'])
{
return new PwgError(403, 'Invalid security token');
}

global $conf, $user;

include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
Expand Down
7 changes: 7 additions & 0 deletions ws.php
Expand Up @@ -772,6 +772,7 @@ function ws_addDefaultMethods( $arr )
'name' => array('flags'=>WS_PARAM_OPTIONAL),
'is_default' => array('flags'=>WS_PARAM_OPTIONAL,
'type'=>WS_TYPE_BOOL),
'pwg_token' => array(),
),
'Updates a group. Leave a field blank to keep the current value.',
$ws_functions_root . 'pwg.groups.php',
Expand All @@ -785,6 +786,7 @@ function ws_addDefaultMethods( $arr )
'group_id' => array('type'=>WS_TYPE_ID),
'user_id' => array('flags'=>WS_PARAM_FORCE_ARRAY,
'type'=>WS_TYPE_ID),
'pwg_token' => array(),
),
'Adds one or more users to a group.',
$ws_functions_root . 'pwg.groups.php',
Expand All @@ -798,6 +800,7 @@ function ws_addDefaultMethods( $arr )
'group_id' => array('type'=>WS_TYPE_ID),
'user_id' => array('flags'=>WS_PARAM_FORCE_ARRAY,
'type'=>WS_TYPE_ID),
'pwg_token' => array(),
),
'Removes one or more users from a group.',
$ws_functions_root . 'pwg.groups.php',
Expand Down Expand Up @@ -850,6 +853,7 @@ function ws_addDefaultMethods( $arr )
'password_confirm' => array('flags'=>WS_PARAM_OPTIONAL),
'email' => array('default'=>null),
'send_password_by_mail' => array('default'=>false, 'type'=>WS_TYPE_BOOL),
'pwg_token' => array(),
),
'Registers a new user.',
$ws_functions_root . 'pwg.users.php',
Expand Down Expand Up @@ -899,6 +903,7 @@ function ws_addDefaultMethods( $arr )
'type'=>WS_TYPE_BOOL),
'enabled_high' => array('flags'=>WS_PARAM_OPTIONAL,
'type'=>WS_TYPE_BOOL),
'pwg_token' => array(),
),
'Updates a user. Leave a field blank to keep the current value.
<br>"username", "password" and "email" are ignored if "user_id" is an array.
Expand Down Expand Up @@ -936,6 +941,7 @@ function ws_addDefaultMethods( $arr )
'type'=>WS_TYPE_ID),
'recursive' => array('default'=>false,
'type'=>WS_TYPE_BOOL),
'pwg_token' => array(),
),
'Adds permissions to an album.',
$ws_functions_root . 'pwg.permissions.php',
Expand All @@ -952,6 +958,7 @@ function ws_addDefaultMethods( $arr )
'type'=>WS_TYPE_ID),
'user_id' => array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL,
'type'=>WS_TYPE_ID),
'pwg_token' => array(),
),
'Removes permissions from an album.',
$ws_functions_root . 'pwg.permissions.php',
Expand Down

0 comments on commit b08c46f

Please sign in to comment.