[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/docs/ -> auth_api.html (source)

   1  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
   2  <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en" xml:lang="en">
   3  <head>
   4  
   5  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
   6  <meta http-equiv="content-style-type" content="text/css" />
   7  <meta http-equiv="content-language" content="en" />
   8  <meta http-equiv="imagetoolbar" content="no" />
   9  <meta name="resource-type" content="document" />
  10  <meta name="distribution" content="global" />
  11  <meta name="copyright" content="phpBB Group" />
  12  <meta name="keywords" content="" />
  13  <meta name="description" content="This is an explanation of how to use the phpBB auth/acl API" />
  14  <title>phpBB3 &bull; Auth API</title>
  15  
  16  <link href="stylesheet.css" rel="stylesheet" type="text/css" media="screen, projection" />
  17  
  18  </head>
  19  
  20  <body id="phpbb" class="section-docs">
  21  
  22  <div id="wrap">
  23      <a id="top" name="top" accesskey="t"></a>
  24      <div id="page-header">
  25          <div class="headerbar">
  26              <div class="inner"><span class="corners-top"><span></span></span>
  27  
  28              <div id="doc-description">
  29                  <a href="../index.php" id="logo"><img src="site_logo.gif" alt="" /></a>
  30                  <h1>Auth API</h1>
  31                  <p>This is an explanation of how to use the phpBB auth/acl API</p>
  32                  <p style="display: none;"><a href="#start_here">Skip</a></p>
  33              </div>
  34  
  35              <span class="corners-bottom"><span></span></span></div>
  36          </div>
  37      </div>
  38  
  39      <a name="start_here"></a>
  40  
  41      <div id="page-body">
  42  
  43  <!-- BEGIN DOCUMENT -->
  44  
  45      <p>This is an explanation of how to use the phpBB auth/acl API.</p>
  46  
  47      <h1>Auth API</h1>
  48  
  49      <div class="paragraph menu">
  50          <div class="inner"><span class="corners-top"><span></span></span>
  51  
  52          <div class="content">
  53  
  54  <ol>
  55      <li><a href="#intro">Introduction</a></li>
  56      <li><a href="#methods">Methods</a>
  57      <ol style="list-style-type: lower-roman;">
  58          <li><a href="#acl">acl</a></li>
  59          <li><a href="#acl_get">acl_get</a></li>
  60          <li><a href="#acl_gets">acl_gets</a></li>
  61          <li><a href="#acl_getf">acl_getf</a></li>
  62          <li><a href="#acl_getf_global">acl_getf_global</a></li>
  63          <li><a href="#acl_cache">acl_cache</a></li>
  64          <li><a href="#acl_clear_prefetch">acl_clear_prefetch</a></li>
  65          <li><a href="#acl_get_list">acl_get_list</a></li>
  66          <li><a href="#misc">Miscellaneous</a></li>
  67      </ol>
  68      </li>
  69      <li><a href="#admin_related">Admin related functions</a></li>
  70      <li><a href="#disclaimer">Copyright and disclaimer</a></li>
  71  </ol>
  72  
  73          </div>
  74  
  75          <span class="corners-bottom"><span></span></span></div>
  76      </div>
  77  
  78      <hr />
  79  
  80  <a name="intro"></a><h2>1. Introduction</h2>
  81  
  82      <div class="paragraph">
  83          <div class="inner"><span class="corners-top"><span></span></span>
  84  
  85          <div class="content">
  86  
  87      <h4>What is it?</h4>
  88  
  89      <p>The <code>auth</code> class contains methods related to authorisation users to access various board functions, e.g. posting, viewing, replying, logging in (and out), etc. If you need to check whether a user can carry out a task or handle user login/logouts this class is required.</p>
  90  
  91      <h4>Initialisation</h4>
  92  
  93      <p>To use any methods contained with the <code>auth</code> class it first needs to be instantiated. This is best achieved early in the execution of the script in the following manner:</p>
  94  
  95      <div class="codebox"><pre>
  96  $auth = new auth();
  97      </pre></div>
  98  
  99      <p>Once an instance of the class has been created you are free to call the various methods it contains. Please note that should you wish to use the <code>auth_admin</code> methods you will need to instantiate this separately but in the same way.</p>
 100  
 101          </div>
 102  
 103          <div class="back2top"><a href="#wrap" class="top">Back to Top</a></div>
 104  
 105          <span class="corners-bottom"><span></span></span></div>
 106      </div>
 107  
 108      <hr />
 109  
 110  <a name="methods"></a><h2>2. Methods</h2>
 111  
 112      <div class="paragraph">
 113          <div class="inner"><span class="corners-top"><span></span></span>
 114  
 115          <div class="content">
 116  
 117      <p>Following are the methods you are able to use.</p>
 118  
 119      <a name="acl"></a><h3>2.i. acl</h3>
 120      
 121      <p>The <code>acl</code> method is the initialisation routine for all the acl functions. If you intend calling any acl method you must first call this. The method takes as its one and only required parameter an associative array containing user information as stored in the database. This array must contain at least the following information; user_id, user_permissions and user_type. It is called in the following way:</p>
 122  
 123      <div class="codebox"><pre>
 124  $auth-&gt;acl(<code>userdata</code>);
 125      </pre></div>
 126  
 127      <p>Where userdata is the array containing the aforementioned data.</p>
 128  
 129      <a name="acl_get"></a><h3>2.ii. acl_get</h3>
 130  
 131      <p>This method is the primary way of determining what a user can and cannot do for a given option globally or in a given forum. The method should be called in the following way:</p>
 132  
 133      <div class="codebox"><pre>
 134  $result = $auth-&gt;acl_get(<code>option</code>[, <code>forum</code>]);
 135      </pre></div>
 136  
 137      <p>Where option is a string representing the required option, e.g. 'f_list', 'm_edit', 'a_adduser', etc. By adding a ! in front of the option, e.g. '!f_list' the result of this method will be negated. The optional forum term is the integer forum_id.</p>
 138  
 139      <p>The method returns a positive integer when the user is allowed to carry out the option and a zero if denied or the other way around if the option is prefixed with an exclamation mark.</p>
 140  
 141      <p>If you specify a forum and there is also a global setting for the specified option then this method will return a positive integer if one of them evaluates to a positive integer. An example would be the m_approve option which can be set per forum but also globally. If a user has the global option he will automatically have m_approve in every forum.</p>
 142  
 143      <p>There are some special options or <em>flags</em> which are used as prefixes for other options, e.g. 'f_' or 'm_'. These flags will automatically be set to a positive integer if the user has one or more permissions with the given prefix. A local setting will result in the flag being set only locally (so it will require a forum id to retrieve). If a user has one or more global permissions with the prefix acl_get will return a positive integer regardless of the forum id.</p>
 144  
 145      <a name="acl_gets"></a><h3>2.iii. acl_gets</h3>
 146  
 147      <p>This method is funtionally similar to <code>acl_get</code> in that it returns information on whether a user can or cannot carry out a given task. The difference here is the ability to test several different options in one go. This may be useful for testing whether a user is a moderator or an admin in one call. Rather than having to call and check <code>acl_get</code> twice.</p>
 148  
 149      <p>The method should be called thus:</p>
 150  
 151      <div class="codebox"><pre>
 152  $result = $auth-&gt;acl_gets(<code>option1</code>[, <code>option2</code>, ..., <code>optionN</code>, <code>forum</code>]);
 153      </pre></div>
 154  
 155      <p>As with the <code>acl_get</code> method the options are strings representing the required permissions to check. The forum again is an integer representing a given forum_id.</p>
 156  
 157      <p>The method will return a positive integer if <code>acl_get</code> for one of the options evaluates to a positive integer (combines permissions with OR).</p>
 158  
 159      <a name="acl_getf"></a><h3>2.iv. acl_getf</h3>
 160  
 161      <p>This method is used to find out in which forums a user is allowed to carry out an operation or to find out in which forums he is not allowed to carry out an operation. The method should be called in the following way:</p>
 162  
 163      <div class="codebox"><pre>
 164  $result = $auth-&gt;acl_getf(<code>option</code>[, <code>clean</code>]);
 165      </pre></div>
 166  
 167      <p>Just like in the <code>acl_get</code> method the option is a string specifying the permission which has to be checked (negation using ! is allowed). The second parameter is a boolean. If it is set to false this method returns all forums with either zero or a positive integer. If it is set to true only those forums with a positive integer as the result will be returned.</p>
 168  
 169      <p>The method returns an associative array of the form:</p>
 170  
 171      <div class="codebox"><pre>
 172  array(<em>forum_id1</em> =&gt; array(<em>option</em> =&gt; <em>integer</em>), <em>forum_id2</em> =&gt; ...)
 173      </pre></div>
 174  
 175      <p>Where option is the option passed to the method and integer is either zero or a positive integer and the same <code>acl_get(option, forum_id)</code> would return.</p>
 176  
 177      <a name="acl_getf_global"></a><h3>2.v. acl_getf_global</h3>
 178  
 179      <p>This method is used to find out whether a user has a permission in at least one forum or globally. This method is similar to checking whether <code>acl_getf(option, true)</code> returned one or more forums but it's faster. It should be called in the following way:</p>
 180  
 181      <div class="codebox"><pre>
 182  $result = $auth-&gt;acl_getf_global(<code>option</code>)
 183      </pre></div>
 184  
 185      <p>As with the previous methods option is a string specifying the permission which has to be checked.</p>
 186  
 187      <p>This method returns either zero or a positive integer.</p>
 188  
 189      <a name="acl_cache"></a><h3>2.vi. acl_cache</h3>
 190  
 191      <p>This should be considered a private method and not be called externally. It handles the generation of the user_permissions data from the basic user and group authorisation data. When necessary this method is called automatically by <code>acl</code>.</p>
 192  
 193      <a name="acl_clear_prefetch"></a><h3>2.vii. acl_clear_prefetch</h3>
 194  
 195      <p>This method clears the user_permissions column in the users table for the given user.  If the user ID passed is zero, the permissions cache is cleared for all users.  This method should be called whenever permissions are set.</p>
 196  
 197      <div class="codebox"><pre>
 198  // clear stored permissions for user 2
 199  $user_id = 2;
 200  $auth->acl_clear_prefetch($user_id);
 201  </pre></div>
 202  
 203      <p>This method returns null.</p>
 204  
 205      <a name="acl_get_list"></a><h3>2.viii. acl_get_list</h3>
 206  
 207      <p>This method returns an an array describing which users have permissions in given fora.  The resultant array contains an entry for permission that every user has in every forum when no arguments are passed.</p>
 208  
 209      <div class="codebox"><pre>
 210  $user_id = array(2, 53);
 211  $permissions = array('f_list', 'f_read');
 212  $forum_id = array(1, 2, 3);
 213  $result = $auth-&gt;acl_get_list($user_id, $permissions, $forum_id);
 214  </pre></div>
 215  
 216      <p>The parameters may be of the following legal types:</p>
 217          <ul>
 218              <li><strong>$user_id</strong>: <code>false</code>, int, array(int, int, int, ...)</li>
 219              <li><strong>$permissions</strong>: <code>false</code>, string, array(string, string, ...)</li>
 220              <li><strong>$forum_id</strong>: <code>false</code>, int, array(int, int, int, ...)</li>
 221          </ul>
 222  
 223      <a name="misc"></a><h3>2.ix. Miscellaneous</h3>
 224  
 225      <p>There are other methods defined in the auth class which serve mostly as private methods, but are available for use if needed.  Each of them is used to pull data directly from the database tables.  They are:</p>
 226          <ul>
 227              <li><pre>function acl_group_raw_data($group_id = false, $opts = false, $forum_id = false)</pre></li>
 228              <li><pre>function acl_user_raw_data($user_id = false, $opts = false, $forum_id = false)</pre></li>
 229              <li><pre>function acl_raw_data_single_user($user_id)</pre></li>
 230              <li><pre>function acl_raw_data($user_id = false, $opts = false, $forum_id = false)</pre></li>
 231              <li><pre>function acl_role_data($user_type, $role_type, $ug_id = false, $forum_id = false)</pre></li>
 232          </ul>
 233  
 234      <p>Of these, <code>acl_raw_data</code> is the most general, but the others will be faster if you need a smaller amount of data.</p>
 235  
 236          </div>
 237  
 238          <div class="back2top"><a href="#wrap" class="top">Back to Top</a></div>
 239  
 240          <span class="corners-bottom"><span></span></span></div>
 241      </div>
 242  
 243      <hr />
 244  
 245  <a name="admin_related"></a><h2>3. Admin related functions</h2>
 246  
 247      <div class="paragraph">
 248          <div class="inner"><span class="corners-top"><span></span></span>
 249  
 250          <div class="content">
 251  
 252      <p>A number of additional methods are available related to <code>auth</code>. These handle more basic functions such as adding user and group permissions, new options and clearing the user cache. These methods are contained within a separate class, <code>auth_admin</code>. This can be found in <code>includes/acp/auth.php</code>.</p>
 253  
 254      <p>To use any methods this class contains it first needs to be instantiated separately from <code>auth</code>. This is achieved in the same way as <code>auth</code>:</p>
 255  
 256      <div class="codebox"><pre>
 257  $auth_admin = new auth_admin();
 258      </pre></div>
 259  
 260      <p>This instance gives you access to both the methods of this specific class and that of <code>auth</code>.</p>
 261  
 262          </div>
 263  
 264          <div class="back2top"><a href="#wrap" class="top">Back to Top</a></div>
 265  
 266          <span class="corners-bottom"><span></span></span></div>
 267      </div>
 268  
 269      <hr />
 270  
 271  <a name="disclaimer"></a><h2>4. Copyright and disclaimer</h2>
 272  
 273      <div class="paragraph">
 274          <div class="inner"><span class="corners-top"><span></span></span>
 275  
 276          <div class="content">
 277  
 278      <p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
 279  
 280          </div>
 281  
 282          <div class="back2top"><a href="#wrap" class="top">Back to Top</a></div>
 283  
 284          <span class="corners-bottom"><span></span></span></div>
 285      </div>
 286  
 287  <!-- END DOCUMENT -->
 288  
 289      <div id="page-footer">
 290          <div class="version">&nbsp;</div>
 291      </div>
 292  </div></div>
 293  
 294  <div>
 295      <a id="bottom" name="bottom" accesskey="z"></a>
 296  </div>
 297  
 298  </body>
 299  </html>


Generated: Wed Oct 2 15:03:47 2013 Cross-referenced by PHPXref 0.7.1