WordPress User Permissions

WordPress User Permissions – Access को Limit करना एक ऐसा तरीका है जिसके माध्‍यम से हम WordPress Capabilities के साथ Deal करते हुए इस बात को निश्चित करते हैं कि किसी Particular User के पास किसी Task को Perform करने से सम्बंधित Permissions हैं या नहीं।

Default रूप से केवल WordPress Administrator ही WordPress System को पूरी तरह से Access कर सकता है। Admin के अलावा कोई भी अन्‍य User, WordPress System को एक Limit से ज्यादा Access नहीं कर सकता।

इसलिए कोई Particular User, किसी Specific Role के लिए Specified Capabilities से अधिक Capabilities को Access न कर सके, इस बात को ध्‍यान में रखते हुए ही Plugin या Theme Develop किया जाना जरूरी होता है, अन्‍यथा WordPress System में Security Issues Trigger होने की सम्भावना रहती है। WordPress में मूल रूप से दो तरह की Capabilities हो सकती हैं:

  • Role Capabilities : इसके अन्तर्गत Capabilities को किसी Individual Roles के साथ Associate किया जाता है और वे Capabilities उस User को Assign हो जाती हैं, जो उस Particular Role से Associate होता है।
  • Meta Capabilities: इसके अन्तर्गत किसी Particular Object जैसे कि User, Post, Link आदि के साथ किसी Specific Capability को Add किया जाता है।

इन दोनों कि बीच अन्तर करने का सबसे सरल तरीका यही है कि हम एक उदाहरण का प्रयोग करें। मानलो Amit नाम के किसी User के साथ Associated Role में edit_posts की Capability है। यानी Amit किसी Post को Edit कर सकता है। लेकिन इसका मतलब ये नहीं है कि Amit किसी दूसरे User Sumit के किसी Post को Edit कर सकता है, जिसकी Capability भी Amit के समान ही है क्योंकि दोनों ही समान Role से Associated हैं। बल्कि यदि Amit, Sumit के Post को Edit करना चाहता है, तो उसके पास edit_post नाम की Meta Capability का होना जरूरी है, लेकिन WordPress में हम किसी Meta Capability को Check करते हुए किसी Action को Perform नहीं करवा सकते।

इस Task को पूरा करने के लिए WordPress के map_meta_cap() API Function का प्रयोग करते हुए इस बात को तय किया जाता है कि क्‍या Amit, Sumit के Posts को Edit कर सकता है या नहीं और इस बात को तय करने के लिए ये API Function, Role Capabilities का एक Array Return करता है, जिसे किसी Particular UserPost के Against Check किया जाता है।

जब एक Plugin Develop के रूप में हम हमारे Plugin के लिए किसी Settings Page को WordPress Admin Panel में Add करते हैं, तो उस समय हमें Capability को Input करना जरूरी होता है। परिणामस्वरूप WordPress उस Capability के आधार पर सभी जरूरी Capabilities को Handle करता है और हमें हमारे Plugin के लिए Custom Codes द्वारा Access Limiting के बारे में चिन्ता करने की जरूरत नहीं रहती। इस Concept को हमने Settings API को Discuss करते समय Use किया था।

Checking User Permissions

जब हम User की Permissions को Check करना चाहते हैं, तब हम सामान्‍यत: इस बात को Check करते हैं कि कोई Particular User के पास कोई Specific Capabilities हैं या नहीं या किसी Particular User के पास किसी Specific Object के लिए Meta Capability Exist है या नहीं। हालांकि ज्यादातर Situations में Plugin Developer को Meta Capabilities के साथ कोई Action Perform नहीं करना होता।

current_user_can( $capability, $args ) API Function

ये API Function इस बात को Check करने की सुविधा Provide करता है कि क्‍या Currently Logged-In User के पास किसी Specific Task को पूरा करने के लिए जरूरी Capabilities यानी Permission हैं या नहीं। यदि User के Pass पर्याप्त Permission हों, तो ये API Function true Return करता है, जबकि यदि User Logged-In न हो या User के पास पर्याप्त Permission न हो, तो ये API Function false Return करता है।

इस API Function में $capability Parameter के रूप में हम एक Single Capability को Specify करते हैं, जिसे Current User के Role के Against Check किया जाना होता है। जबकि यदि हम किसी Object के Against Meta Capability Check करना चाहते हैं, तो उस स्थिति में दूसरे Argument $args के रूप में हमें किसी Object ID जैसे कि Post ID को Specify करना होता है।

कुछ Capabilities के साथ $args Parameter में “edit_post” या “delete_page” जैसी Meta Capabilities को Specify करना जरूरी होता है। हालांकि ये API Function किसी Non-Existing या Junk Post ID के लिए भी true Return कर सकता है।

$capability Parameter के रूप में हम जो Capability Specify करते हैं, वह Case-Sensitive होता है, इसलिए Capability को हमेंशा Lowercase Letters का प्रयोग करते हुए ही Specify करना चाहिए। साथ ही इस API Function में कभी भी किसी Role Name को Parameter की तरह Specify नहीं करना चाहिए क्योंकि Role को Check करने के लिए WordPress में अलग से API Functions को Define किया गया है। साथ ही किसी Specific Role के Exist होने का मतलब ये नहीं है कि उस Role के साथ कोई Particular Capability Exist ही होगी क्योंकि WordPress में Roles Hierarchical नहीं होते।

इस API Function का प्रयोग हम न केवल Default WordPress Capabilities को उपयोग में लेने के लिए कर सकते हैं बल्कि Custom Capabilities को Check करने के लिए भी हम इन्हें Use कर सकते हैं। इस API Function को हम कुछ निम्नानुसार तरीके से Use कर सकते हैं:

/* Check if the current user can edit posts. */
if ( current_user_can( 'edit_posts' ) ) {
/* Link to the edit posts page in the admin. */
echo '<a href="' . admin_url('edit.php' ) . '"> Edit Posts </a>';
}

जब हम किसी Plugin में उपरोक्तानुसार तरीके से current_user_can() API Function को Use करते हैं, तो इस Code में Specified if Statement इस बात को Check करता है, क्‍या Current User किसी Post को Edit कर सकता है या नहीं। यदि User Current Post को Edit कर सकता है, तो इसका मतलब है कि Current User एक Admin Role का User है। परिणामस्वरूप Admin URL के लिए WordPress के edit.php Page को Open किया जा सकता है।

जबकि यदि हम Meta Capability को Check करना चाहते हैं, तो हमें इसी Code को कुछ निम्नानुसार तरीके से Modify करते हुए Meta Capability को Specify करना होता है, जिसमें दूसरे Parameter के रूप में हमें उस Post ID को Specify करना होता है, जिसे Current User Edit करना चाहता है। यदि Current User के पास उस Post को Edit करने की Capability हो, तो ये API Function true Return करता है अन्‍यथा false Return करते हुए if Statement Block में Exist नहीं करता:

/* Check if the current user can edit posts. */
if ( current_user_can( 'edit_posts', 10 ) ) {
/* Update the post meta. */
update_post_meta( 100, 'meta_key', 'meta_value' );
}

current_user_can_for_blog($blog_id, $capability ) API Function

ये API Function मूल रूप से किसी Multisite WordPress Installation के लिए Useful होता है। ये API Function current_user_can() API Function की तरह ही काम करता है, लेकिन इसके पहले Parameter के रूप में हमें उस Blog का ID Specify करना होता है, जिसके लिए हम किसी Capability को Check कर रहे होते हैं।

Read more…

author_can( $post_id, $capability ) API Function
user_can( $user_id, $capability ) API Function
map_meta_cap( $cap, $capability ) API Function
is_super_admin() API Function
current_user_can() API Function

WordPress Roles and Capabilities - Default and Custom
WordPress Role Manager

WordPress in Hindi - BccFalna.comये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Advance WordPress in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।

Advance WordPress in Hindi | Page: 835 | Format: PDF

BUY NOW GET DEMO REVIEWS