Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows
-
Upload
jonathan-brinley -
Category
Software
-
view
352 -
download
3
Transcript of Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows
![Page 1: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/1.jpg)
![Page 8: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/8.jpg)
![Page 10: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/10.jpg)
WP_User::get_role_caps()$this->allcaps=array();foreach((array)$this->rolesas$role){$the_role=$wp_roles->get_role($role);$this->allcaps=array_merge($this->allcaps,$the_role->capabilities);}
![Page 11: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/11.jpg)
populate_roles()
![Page 13: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/13.jpg)
current_user_can('manage_secret_settings')
add_options_page('SuperSecretSettingsPage',//PageTitle'SecretSettings',//MenuTitle'manage_secret_settings',//Capability'secret-settings',//Slug[$this,'render']//Callbackfunction)
![Page 14: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/14.jpg)
current_user_can()returncall_user_func_array(array($current_user,'has_cap'),$args);
![Page 15: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/15.jpg)
WP_User::has_cap()$caps=call_user_func_array('map_meta_cap',$args);
![Page 16: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/16.jpg)
current_user_can('edit_post',$post_id)case'edit_post':if(in_array($post->post_status,['publish','future'],true)){$caps[]=$post_type->cap->edit_published_posts;}elseif('private'==$post->post_status){$caps[]=$post_type->cap->edit_private_posts;}
![Page 18: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/18.jpg)
map_meta_cap()add_filter('map_meta_cap','add_approval_requirements',10,4);functionadd_approval_requirement($required_caps,$requested_cap,$user_id,$args){if($requested_cap=='publish_post'){if(!is_approved($args[0])){$required_caps[]='publish_unapproved_posts';}}return$required_caps;}
![Page 19: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/19.jpg)
add_role()$role=add_role('theme_switcher');
$role->add_cap('read');$role->add_cap('switch_themes');
![Page 20: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/20.jpg)
add_role()$role=add_role('page_author');
$role->add_cap('read');$role->add_cap('edit_pages');$role->add_cap('publish_pages');$role->add_cap('delete_pages');$role->add_cap('edit_published_pages');$role->add_cap('delete_published_pages');$role->add_cap('upload_files');$role->add_cap('level_1');
![Page 21: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/21.jpg)
WP_User_Query::prepare_query()if(isset($qv['who'])&&'authors'==$qv['who']&&$blog_id){$qv['meta_key']=$wpdb->get_blog_prefix($blog_id).'user_level';$qv['meta_value']=0;$qv['meta_compare']='!=';}
![Page 22: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/22.jpg)
add_action('admin_init',function(){if(get_option('my_user_roles_version',0)<1){my_register_roles_version_1();update_option('my_user_roles_version',1);}});
![Page 23: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/23.jpg)
get_role()$role=get_role('author');
$role->add_cap('edit_pages');$role->add_cap('publish_pages');$role->add_cap('delete_pages');$role->remove_cap('edit_published_posts');$role->remove_cap('delete_published_posts');
![Page 25: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/25.jpg)
capability_type
current_user_can('edit_stories')
register_post_type('story',[ 'label'=>__('Stories'), //...manymoreargs 'capability_type'=>['story','stories'],]);
![Page 26: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/26.jpg)
capabilities
current_user_can('special_publish_posts')
register_post_type('story',[ 'label'=>__('Stories'), //...manymoreargs 'capabilities'=>[ 'publish_posts'=>'special_publish_posts', ],]);
![Page 27: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/27.jpg)
map_meta_cap
current_user_can('edit_post',$story_id)
register_post_type('story',[ 'label'=>__('Stories'), //...manymoreargs 'capability_type'=>['story','stories'], 'map_meta_cap'=>true,]);
![Page 29: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/29.jpg)
map_meta_cap
add_filter('map_meta_cap','your_mapping_method',10,4)
register_post_type('story',[ 'label'=>__('Stories'), //...manymoreargs 'capability_type'=>['story','stories'], 'map_meta_cap'=>false,]);
![Page 30: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/30.jpg)
$caps=[ 'read','edit_posts', 'edit_others_posts','edit_private_posts', 'edit_published_posts','publish_posts', 'read_private_posts','delete_posts', 'delete_private_posts','delete_published_posts', 'delete_others_posts','create_posts',];
$pto=get_post_type_object('story');
foreach(['administrator','editor']as$role_name){ $role=get_role($role_name); foreach($capsas$cap){ $role->add_cap($pto->cap->{$cap}); }}
![Page 31: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/31.jpg)
//Multisitesuperadminhasallcapsbydefinition,//unlessspecificallydenied.if(is_multisite()&&is_super_admin($this->ID)){ if(in_array('do_not_allow',$caps)) returnfalse; returntrue;}
![Page 35: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/35.jpg)
user_has_capadd_filter('user_has_cap','filter_user_caps',10,4);functionfilter_user_caps($caps_the_user_has,$caps_the_user_needs,$args,$user){ $originally_requested_cap=$args[0]; $user_id=$args[1]; $other_args=array_slice($args,2);//variesper$arg[0]}
![Page 37: Right Level, Right Access: Extending User Roles and Permissions to Support Higher Ed Workflows](https://reader031.fdocuments.us/reader031/viewer/2022022414/587876951a28ab497b8b7591/html5/thumbnails/37.jpg)
user_has_capforeach($groupsas$group){$access_level=$group->get_permissions($post_type);if($access_level==Group::PERMISSION_EDITOR||$group->is_assigned_to_post($post_id)){$user_caps[$post_type_object->cap->edit_others_posts]=true;$user_caps[$post_type_object->cap->read_private_posts]=true;$user_caps[$post_type_object->cap->delete_posts]=true;$user_caps[$post_type_object->cap->delete_private_posts]=true;$user_caps[$post_type_object->cap->delete_published_posts]=true;$user_caps[$post_type_object->cap->delete_others_posts]=true;$user_caps[$post_type_object->cap->edit_private_posts]=true;}}