[wp-trac] [WordPress Trac] #8760: wp-admin user listing: hide
checkboxes unless user is editable
WordPress Trac
wp-trac at lists.automattic.com
Tue Dec 30 19:32:25 GMT 2008
#8760: wp-admin user listing: hide checkboxes unless user is editable
--------------------------+-------------------------------------------------
Reporter: jeremyclarke | Owner: jeremyclarke
Type: defect (bug) | Status: new
Priority: normal | Milestone: 2.8
Component: Security | Version:
Severity: normal | Keywords: has-patch needs-testing capabilities
--------------------------+-------------------------------------------------
For history see: #6014
I'm updating that patch so it can be added to 2.8, but i'm splitting up
the various parts so they can be added more easily.
What I want: To add security to the capabilities system because right now
edit_users can't be delegated to non-admins (in our case our content
editors). If someone has 'edit_users' they can make themself admin because
nothing stops them from editing themselves or others to be admin. I think
it should be integrated into core but don't care enough to fight. It can
be done with a plugin so my priority is to make sure that my plugin (and
Role Manager plugin) can hook into the appropriate places and add a role
comparison such that wp only lets people edit users/roles "lower" than
them (i.e. users that don't have any powers that the editor don't have).
This patch is for one bug in the system. If you have edit_users cap at all
then you are given access to users.php, the user listing screen. Because
you have that privilege and because normally edit_users means edit *any*
user right now the page just shows a checkbox next to every single user.
Instead it should determine the presence of a checkbox based on a
current_user_can('edit_user', $user_id) check for the user in that row.
Usually this would do nothing, but the current_user_can('edit_user',
$user_id) check is where my plugin does the checking, and so it will block
the checkbox for users with more caps than you. It's also just plain
logical and good API practice to add this check.
Luckily the user_row() function is already doing that check to determine
whether to make the username a link and whether to show the edit link on
hover. This patch just adds the $checkbox definition inside the if (
current_user_can( 'edit_user', $user_object->ID ) ) so that both elements
are determined by the check.
This is pretty non-controversial imho, and can be implemented easily even
if my other changes are denied.
Feedback welcome, thanks.
--
Ticket URL: <http://trac.wordpress.org/ticket/8760>
WordPress Trac <http://trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list