当前位置: 首页>>代码示例>>PHP>>正文


PHP USER::security_context方法代码示例

本文整理汇总了PHP中USER::security_context方法的典型用法代码示例。如果您正苦于以下问题:PHP USER::security_context方法的具体用法?PHP USER::security_context怎么用?PHP USER::security_context使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在USER的用法示例。


在下文中一共展示了USER::security_context方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: is_allowed

 /**
  * Is the requested action allowed for this user?
  * If the permission applies to content, the "obj" cannot be empty. Owner-
  * dependent permissions use the {@link OBJECT_IN_FOLDER::owner()} to
  * determine the full permission. {@link APPLICATION_USER_OPTIONS} defines a
  * few settings that control which permissions are owner-dependent. If the
  * permission set is {@link Privilege_set_user}, the "obj" must be a {@link
  * USER} instead.
  * @param string $set_name Check this set of permissions.
  * @param integer $type Check this permission (or permissions).
  * @param OBJECT_IN_FOLDER|USER $obj
  * @see OBJECT_IN_FOLDER
  * @return boolean
  */
 public function is_allowed($set_name, $type, $obj = null)
 {
     $this->assert(!$this->ad_hoc_login, 'Cannot use an ad-hoc login.', 'is_allowed', 'USER');
     $user_options = $this->app->user_options;
     $user_permissions = $this->permissions();
     if ($user_permissions->global_privileges->supports($set_name)) {
         $Result = $user_permissions->global_privileges->enabled($set_name, $type);
         if ($set_name == Privilege_set_user) {
             switch ($type) {
                 case Privilege_view:
                     if ($obj) {
                         $Result = $Result || $obj->equals($this);
                     }
                     break;
                 case Privilege_modify:
                     $Result = $Result || $user_options->users_can_edit_self && $obj->equals($this);
                     break;
             }
         }
         if ($set_name == Privilege_set_global) {
             switch ($type) {
                 case Privilege_subscribe:
                 case Privilege_password:
                     if ($obj) {
                         $Result = $Result || $obj->equals($this);
                     }
                     break;
             }
         }
     } else {
         if ($user_permissions->allow_privileges->enabled($set_name, $type)) {
             $Result = true;
         } else {
             if ($user_permissions->deny_privileges->enabled($set_name, $type)) {
                 $Result = false;
             } else {
                 /** @var FOLDER $folder */
                 $folder = $obj->security_context();
                 $folder_permissions = $folder->permissions();
                 $Result = $folder_permissions->enabled($set_name, $type);
                 if (!$Result) {
                     /** @var USER $owner */
                     $owner = $obj->owner();
                     switch ($type) {
                         case Privilege_view:
                         case Privilege_view_history:
                             $Result |= $owner->equals($this);
                             break;
                         case Privilege_modify:
                             $Result |= $user_options->users_can_modify_own_content && $owner->equals($this);
                             break;
                         case Privilege_delete:
                             $Result |= $user_options->users_can_delete_own_content && $owner->equals($this);
                             break;
                         case Privilege_purge:
                             $Result |= $user_options->users_can_purge_own_content && $owner->equals($this);
                             break;
                     }
                 }
             }
         }
     }
     return $Result;
 }
开发者ID:mvonballmo,项目名称:earthli-webcore,代码行数:78,代码来源:user.php


注:本文中的USER::security_context方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。