Dotclear

Changeset 860:e6db669b069f


Ignore:
Timestamp:
08/02/12 23:08:21 (13 years ago)
Author:
JcDenis
Branch:
default
Children:
861:3e2e678fef61, 1022:6c73aaf901f8
Message:

Fixes a CSRF on users deletion.
Cleaned code on users manager, fixes #1200

Files:
2 added
5 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • admin/blog_pref.php

    r557 r860  
    523523                    ' ('.html::escapeHTML(dcUtils::getUserCN( 
    524524                         $k, $v['name'], $v['firstname'], $v['displayname'] 
    525                     )).')'; 
    526                      
    527                     if (!$v['super'] && $core->auth->isSuperAdmin()) { 
    528                          echo 
    529                          ' - <a href="permissions.php?blog_id[]='.$blog_id.'&amp;user_id[]='.$k.'">' 
    530                          .__('Change permissions').'</a>'; 
    531                     } 
    532                      
    533                     echo '</h4>'; 
     525                    )).')</h4>'; 
    534526                     
    535527                    echo '<ul>'; 
     
    542534                    } 
    543535                    echo '</ul>'; 
     536                     
     537                    if (!$v['super'] && $core->auth->isSuperAdmin()) { 
     538                         echo  
     539                         '<form action="users_actions.php" method="post">'. 
     540                         '<p><input type="submit" value="'.__('Change permissions').'" />'. 
     541                         form::hidden(array('redir'),'blog_pref.php?id='.$k). 
     542                         form::hidden(array('action'),'perms'). 
     543                         form::hidden(array('users[]'),$k). 
     544                         form::hidden(array('blogs[]'),$blog_id). 
     545                         $core->formNonce(). 
     546                         '</p>'. 
     547                         '</form>'; 
     548                    } 
    544549               } 
    545550          } 
  • admin/js/_users.js

    r548 r860  
    44     }); 
    55     $('#form-users').submit(function() { 
    6           var action = $(this).find('select[name="dispatch_action"]').val(); 
     6          var action = $(this).find('select[name="action"]').val(); 
    77          var user_ids = new Array(); 
    88          var nb_posts = new Array(); 
     
    1010          var msg_cannot_delete = false; 
    1111           
    12           $(this).find('input[name="user_id[]"]').each(function() { 
     12          $(this).find('input[name="users[]"]').each(function() { 
    1313               user_ids.push(this); 
    1414          }); 
     
    4141           
    4242          if (action == 'deleteuser') { 
    43                return window.confirm(dotclear.msg.confirm_delete_user.replace('%s',$('input[name="user_id[]"]:checked').size())); 
     43               return window.confirm(dotclear.msg.confirm_delete_user.replace('%s',$('input[name="users[]"]:checked').size())); 
    4444          } 
    4545           
  • admin/user.php

    r557 r860  
    290290if ($user_id) 
    291291{ 
    292      echo '<div class="clear fieldset"><h3>'.__('Permissions').'</h3>'; 
     292     echo '<div class="clear fieldset"><h3>'.__('Permissions').'</h3>'. 
     293     '<form action="users_actions.php" method="post">'. 
     294     '<p><input type="submit" value="'.__('Add new permissions').'" />'. 
     295     form::hidden(array('redir'),'user.php?id='.$user_id). 
     296     form::hidden(array('action'),'blogs'). 
     297     form::hidden(array('users[]'),$user_id). 
     298     $core->formNonce(). 
     299     '</p>'. 
     300     '</form>'; 
    293301      
    294302     $permissions = $core->getUserPermissions($user_id); 
     
    305313               if (count($v['p']) > 0) 
    306314               { 
    307                     echo '<h4><a href="blog.php?id='.html::escapeHTML($k).'">'. 
    308                     html::escapeHTML($v['name']).'</a> ('.html::escapeHTML($k).') - '. 
    309                     '<a href="permissions.php?blog_id[]='.$k.'&amp;user_id[]='.$user_id.'">' 
    310                     .__('Change permissions').'</a></h4>'; 
     315                    echo  
     316                    '<form action="users_actions.php" method="post">'. 
     317                    '<h4><a href="blog.php?id='.html::escapeHTML($k).'">'. 
     318                    html::escapeHTML($v['name']).'</a> ('.html::escapeHTML($k).')</h4>'; 
    311319                     
    312320                    echo '<ul>'; 
     
    316324                         } 
    317325                    } 
    318                     echo '</ul>'; 
     326                    echo '</ul>'. 
     327                    '<p><input type="submit" value="'.__('Change permissions').'" />'. 
     328                    form::hidden(array('redir'),'user.php?id='.$user_id). 
     329                    form::hidden(array('action'),'perms'). 
     330                    form::hidden(array('users[]'),$user_id). 
     331                    form::hidden(array('blogs[]'),$k). 
     332                    $core->formNonce(). 
     333                    '</p>'. 
     334                    '</form>'; 
    319335               } 
    320336          } 
    321337     } 
    322338      
    323      echo 
    324      '<p><a href="permissions_blog.php?user_id[]='.$user_id.'">'. 
    325      __('Add new permissions').'</a></p>'. 
    326      '</div>'; 
     339     echo '</div>'; 
    327340} 
    328341 
  • admin/users.php

    r565 r860  
    1515dcPage::checkSuper(); 
    1616 
    17 # Delete users 
    18 if (!empty($delete_users)) 
    19 { 
    20      foreach ($delete_users as $u) 
    21      { 
    22           try 
    23           { 
    24                # --BEHAVIOR-- adminBeforeUserDelete 
    25                $core->callBehavior('adminBeforeUserDelete',$u); 
    26                if ($u != $core->auth->userID()) { 
    27                     $core->delUser($u); 
    28                } 
    29           } 
    30           catch (Exception $e) 
    31           { 
    32                $core->error->add($e->getMessage()); 
    33           } 
    34      } 
    35      if (!$core->error->flag()) { 
    36           http::redirect('users.php?del=1'); 
    37      } 
    38 } 
    39  
    40  
    4117# Creating filter combo boxes 
    4218$sortby_combo = array( 
    43 __('Username') => 'U.user_id', 
     19__('Username') => 'user_id', 
    4420__('Last Name') => 'user_name', 
    4521__('First Name') => 'user_firstname', 
     
    5531# Actions combo box 
    5632$combo_action = array( 
    57      __('Set permissions') => 'setpermissions', 
     33     __('Set permissions') => 'blogs', 
    5834     __('Delete') => 'deleteuser' 
    5935); 
     
    8965     if ($order !== '' && in_array($order,$order_combo)) { 
    9066          $params['order'] = $sortby.' '.$order; 
     67     } else { 
     68          $order='asc'; 
     69     } 
     70      
     71     if ($sortby != 'user_id' || $order != 'asc') { 
    9172          $show_filters = true; 
    9273     } 
     74} else { 
     75     $sortby = 'user_id'; 
     76     $order = 'asc'; 
    9377} 
    9478 
     79# Get users 
    9580try { 
    9681     $rs = $core->getUsers($params); 
     
    10994} 
    11095 
    111 dcPage::open(__('users'),$starting_script); 
     96dcPage::open(__('Users'),$starting_script); 
    11297 
    11398if (!$core->error->flag()) 
     
    115100     if (!empty($_GET['del'])) { 
    116101          echo '<p class="message">'.__('User has been successfully removed.').'</p>'; 
     102     } 
     103     if (!empty($_GET['upd'])) { 
     104               echo '<p class="message">'.__('The permissions have been successfully updated.').'</p>'; 
    117105     } 
    118106      
     
    153141     # Show users 
    154142     $user_list->display($page,$nb_per_page, 
    155      '<form action="dispatcher.php" method="get" id="form-users">'. 
     143     '<form action="users_actions.php" method="post" id="form-users">'. 
    156144      
    157145     '%s'. 
     
    160148     '<p class="col checkboxes-helpers"></p>'. 
    161149      
    162      '<p class="col right"><label for="dispatch_action" class="classic">'. 
     150     '<p class="col right"><label for="action" class="classic">'. 
    163151     __('Selected users action:').' '. 
    164      form::combo('dispatch_action',$combo_action). 
     152     form::combo('action',$combo_action). 
    165153     '</label> '. 
    166154     '<input type="submit" value="'.__('ok').'" />'. 
     155     form::hidden(array('q'),html::escapeHTML($q)). 
     156     form::hidden(array('sortby'),$sortby). 
     157     form::hidden(array('order'),$order). 
     158     form::hidden(array('page'),$page). 
     159     form::hidden(array('nb'),$nb_per_page). 
     160     $core->formNonce(). 
    167161     '</p>'. 
    168162     '</div>'. 
  • inc/admin/lib.pager.php

    r270 r860  
    407407          '<tr class="line">'. 
    408408          '<td class="nowrap">'.form::hidden(array('nb_post[]'),(integer) $this->rs->nb_post). 
    409           form::checkbox(array('user_id[]'),$this->rs->user_id).'</td>'. 
     409          form::checkbox(array('users[]'),$this->rs->user_id).'</td>'. 
    410410          '<td class="maximal"><a href="user.php?id='.$this->rs->user_id.'">'. 
    411411          $this->rs->user_id.'</a>&nbsp;'.$img_status.'</td>'. 
Note: See TracChangeset for help on using the changeset viewer.

Sites map