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


PHP permissions::getUserPermissions方法代码示例

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


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

示例1: getUserWarns

/**
 * Возвращает список предупреждение пользователя для попап окна.
 * 
 * @param int    $uid       UID пользователя
 * @param array  $contextId Контекст (для лога админских действий)
 * @param string $draw_func способ отображения
 *
 * @return object xajaxResponse
 */
function getUserWarns($uid = 0, $contextId = '', $draw_func = '')
{
    session_start();
    $objResponse = new xajaxResponse();
    if (hasPermissions('users')) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/permissions.php';
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
        $user = new users();
        $user->GetUserByUID($uid);
        if ($user->uid) {
            $aPermissions = permissions::getUserPermissions($_SESSION['uid']);
            $admin_log = new admin_log('user', $_SESSION['uid'], $aPermissions);
            $aWarns = $admin_log->getUserWarns($nCount, $uid);
            $sCount = $nCount ? $nCount : '0';
            $sWarns = $user->warn ? $user->warn : '0';
            $objResponse->assign('a_user_warns', 'href', '/users/' . $user->login);
            $objResponse->assign('s_user_warns', 'innerHTML', $user->uname . ' ' . $user->usurname . ' [' . $user->login . ']');
            $objResponse->assign('e_user_warns', 'innerHTML', $sWarns);
            $objResponse->assign('n_user_warns', 'innerHTML', $sCount);
            if ($nCount) {
                $sTable = '<table id="t_user_warns" class="notice-table">';
                $nCount = 1;
                foreach ($aWarns as $aOne) {
                    $sReason = $aOne['admin_comment'] ? hyphen_words($aOne['admin_comment'], true) : '&lt;без причины&gt;';
                    $sAdmin = $aOne['adm_login'] ? '<a target="_blank" href="/users/' . $aOne['adm_login'] . '">' . $aOne['adm_login'] . '</a>' : 'не известно';
                    $sDate = $aOne['act_time'] ? date('d.m.Y H:i', strtotime($aOne['act_time'])) : 'не известно';
                    $sTable .= '<tr>
                    	<td class="cell-number">' . $nCount . '.</td>
                    	<td class="cell-uwarn">' . $sReason . '</td>
                    	<td class="cell-who">Выдан: [' . $sAdmin . ']
                    	<td class="cell-date">' . $sDate . '</td>
                        <td' . ($aOne['src_id'] ? ' id="i_user_warns_' . $aOne['src_id'] . '"' : '') . '>' . ($aOne['src_id'] ? '<a href="javascript:void(0);" onclick="banned.warnUser(' . $uid . ',' . $aOne['src_id'] . ',\'' . $draw_func . '\',\'' . $contextId . '\',0);"><img src="/images/btn-remove2.png" alt="" width="11" height="11" /></a>' : '') . '</td>
                    </tr>';
                    ++$nCount;
                }
                $sTable .= '</table>';
                $objResponse->assign('d_user_warns', 'innerHTML', $sTable);
            } else {
                $objResponse->assign('d_user_warns', 'innerHTML', '&nbsp;');
            }
            $sBanTitle = $user->is_banned || $user->ban_where ? 'Разбанить' : 'Забанить';
            $objResponse->script('adminLogOverlayClose();');
            $objResponse->script("\$('ov-notice4').setStyle('display', '');");
            $objResponse->script('adjustUserWarnsHTML();');
            $objResponse->assign('b_user_warns', 'innerHTML', '<button onclick="adminLogOverlayClose();banned.userBan(' . $uid . ', \'' . $contextId . '\',0)">' . $sBanTitle . '</button><a class="lnk-dot-grey" href="javascript:void(0);" onclick="adminLogOverlayClose();">Отмена</a>');
        }
    }
    return $objResponse;
}
开发者ID:kapai69,项目名称:fl-ru-damp,代码行数:58,代码来源:admin_log.server.php

示例2: header

<?php

if (!defined('IS_SITE_ADMIN')) {
    header('Location: /404.php');
    exit;
}
$s = 'style="color: #666;"';
if (!isset($aPermissions)) {
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/permissions.php';
    $aPermissions = permissions::getUserPermissions($uid);
}
foreach ($aPermissions as $sPermission) {
    $sVar = 'bHas' . ucfirst($sPermission);
    ${$sVar} = true;
}
if ($bHasAll || $bHasAdm) {
    ?>

    <?php 
    if ($bHasAll || $bHasUsers || $bHasProjects || $bHasBlogs || $bHasCommunes) {
        ?>
    <div class="admin-menu">
    	<h3>Действия</h3>
    	<ul>
            <?php 
        if ($bHasAll || $bHasUsers || $bHasProjects || $bHasBlogs || $bHasCommunes) {
            ?>
    		<li><a <?php 
            echo $menu_item == 1 ? $s : '';
            ?>
 href="/siteadmin/admin_log/?site=log">Лента всех действий</a></li>
开发者ID:kapai69,项目名称:fl-ru-damp,代码行数:31,代码来源:newmenu.php

示例3: hasPermissions

/**
 * Проверяем имеет ли пользователь разрешенные права доступа
 * 
 * @todo: делает запрос даже если НЕТ! юзера? - доработано
 * 
 * @param   string      код права доступа
 * @param   integer     ID пользователя
 * @return  boolean     true - имеет, false - нет
 */
function hasPermissions($permission, $uid = 0)
{
    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/permissions.php";
    $uid = intval($uid);
    if (!$uid) {
        $uid = get_uid(false);
    }
    //Если забанен или незалогин то прав у тебя нет!
    if ($uid <= 0) {
        return false;
    }
    if ($uid != $_SESSION['uid']) {
        $user_permissions = permissions::getUserPermissions($uid);
    } else {
        $user_permissions = $_SESSION['permissions'];
    }
    if (!$user_permissions) {
        $user_permissions = array();
    }
    return in_array($permission, $user_permissions) || in_array('all', $user_permissions);
}
开发者ID:Nikitian,项目名称:fl-ru-damp,代码行数:30,代码来源:stdf.php

示例4: Auth


//.........这里部分代码省略.........
             $opauthModel = new OpauthModel();
             $is_2fa = $opauthModel->getMultilevel($res['uid']);
             if (isset($is_2fa['type'])) {
                 //$is_2fa - авторизация через выбранную соцсеть
                 //0 - нужна обычная авторизация так как вход был выполнен через соцсеть
                 $params['2fa_provider'] = array('type' => !$is_opauth ? $is_2fa['type'] : 0, 'uid' => $res['uid'], 'login' => $res['login']);
                 //Сбрасываем авторизацию
                 $res = array();
                 //переходим ко 2ой стадии
                 return self::AUTH_STATUS_2FA;
             }
         }
     }
     //Более нам параметр этапов авторизации не нужен
     unset($params['2fa_provider']);
     /**
      * Успешная авторизация.
      */
     if (count($res)) {
         list($email, $trole, $tname, $tsurname, $tid, $is_banned, $ban_where, $active, $sum, $bonus_sum, $log, $anti_uid, $is_pro_test, $is_pro_new, $is_chuck, $sex, $settings, $splash_show, $is_verify, $reg_date, $activate_code, $photo, $is_profi, $birthday) = array_values($res);
         if ($activate_code != '' && $active == 't') {
             $this->checkRegDate($tid, $reg_date);
         }
         if ($is_banned) {
             return -1;
         }
         //if ($active=='f') return -2; //##0027983
         if (!$this->CheckUserAllowIP($ip, $tid)) {
             return -3;
         }
         $params['birthday'] = $birthday ? strtotime($birthday) : null;
         $params['age'] = $params['birthday'] ? intval(ElapsedYears($params['birthday'])) : null;
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/permissions.php';
         $params['permissions'] = permissions::getUserPermissions($tid);
         $params['email'] = $email;
         $params['role'] = $trole;
         $params['name'] = $tname;
         $params['surname'] = $tsurname;
         $params['uid'] = $tid;
         $params['user_ip'] = $ip;
         $params['ac_sum'] = zin($sum);
         $params['bn_sum'] = zin($bonus_sum);
         $params['login'] = $log;
         $params['is_pro_new'] = $is_pro_new;
         $params['pro_test'] = $is_pro_test;
         $params['is_chuck'] = $is_chuck;
         $params['is_verify'] = $is_verify;
         $params['sex'] = $sex;
         $params['reg_date'] = $reg_date;
         $params['photo'] = $photo;
         if (!is_emp($trole)) {
             $params['is_profi'] = $is_profi === 't';
         }
         if ($anti_uid) {
             $anti_class = is_emp($trole) ? 'freelancer' : 'employer';
             require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/{$anti_class}.php";
             $anti = new $anti_class();
             $anti->GetUserByUID($anti_uid);
             $params['anti_uid'] = $anti->uid;
             $params['anti_login'] = $anti->login;
             $params['anti_surname'] = $anti->usurname;
             $params['anti_name'] = $anti->uname;
         }
         if (!is_emp($params['role'])) {
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php';
             if ($po_summary = projects_offers::GetFrlOffersSummary($params['uid'])) {
开发者ID:kapai69,项目名称:fl-ru-damp,代码行数:67,代码来源:users.php

示例5: setDeleted

/**
 * Удаление сущности
 * 
 * @param  string $sId составной уникальный ID сущности
 * @param  int $sUid UID сздателя сущности
 * @param  string $sReason причина удаления
 * @param  string $sDrawFunc имя функции для выполнения после сохранения
 * @param  string $sParams JSON кодированные дополнительные параметры
 * @return xajaxResponse 
 */
function setDeleted($sId = '', $sUid = 0, $sReason = '', $sDrawFunc = '', $sParams = '')
{
    session_start();
    $objResponse = new xajaxResponse();
    list($rec_content_id, $rec_id, $rec_type) = explode('_', $sId);
    $aParams = _jsonArray($sParams);
    if ($sDrawFunc == 'stream0' || $sDrawFunc == 'stream1' || $sDrawFunc == 'stream2') {
        // удаление в потоках
        resolveContent($aParams['content_id'], $aParams['stream_id'], $sId, 2, $sUid, $aParams['content_cnt'], $aParams['status'], $aParams['is_sent'], $sReason, $objResponse);
    } else {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/permissions.php';
        $aPermissions = permissions::getUserPermissions($_SESSION['uid']);
        $user_content = new user_content($_SESSION['uid'], $aPermissions);
        $bSend = false;
        if ($user_content->hasContentPermissions($rec_content_id)) {
            if (strpos($sReason, '%USERNAME%') !== false && $sUid) {
                $user = new users();
                $user->GetUserByUID($sUid);
                $sReason = str_replace('%USERNAME%', $user->uname . ' ' . $user->usurname, $sReason);
            }
            switch ($rec_content_id) {
                case user_content::MODER_MSSAGES:
                    switch ($sDrawFunc) {
                        // дейсвие из переписки между юзерами
                        case 'updateLetter':
                            updateLetter($rec_id, $sUid, 2, $sReason, $objResponse);
                            break;
                        case 'delLetter':
                            // в потоке - важно чтобы поток не был потерян либо перехвачен
                        // в потоке - важно чтобы поток не был потерян либо перехвачен
                        default:
                            delLetter($aParams['stream_id'], $sUid, $rec_id . '_' . $rec_type, $sReason, $objResponse);
                            break;
                    }
                    break;
                case user_content::MODER_BLOGS:
                    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/blogs.php';
                    if ($rec_type == 1) {
                        // post
                        blogs::MarkDeleteBlog($_SESSION['uid'], $rec_id, $group, $base, $thread_id, $page, $msg, 0, $sReason);
                    } else {
                        // comment
                        blogs::MarkDeleteMsg($_SESSION['uid'], $rec_id, getRemoteIP(), $err, 0, $sReason);
                    }
                    $bSend = true;
                    break;
                case user_content::MODER_TSERVICES:
                    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/tservices/tservices.php';
                    $tserviceObj = new tservices();
                    if ($tserviceObj->Blocked($rec_id, $_SESSION['uid'], $sReason)) {
                        $objResponse->script("\$('ov-notice22-r').toggleClass('b-shadow_hide');");
                        $objResponse->script("\$\$('#__tservices_blocked,#__tservices_unblocked').toggleClass('b-button_hide');");
                    }
                    break;
                case user_content::MODER_SBR_REQV:
                    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr_meta.php';
                    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Finance/FinanceSmail.php';
                    if (sbr_meta::reqvBlocked($rec_id, $_SESSION['uid'], $sReason, 0, $_SESSION['login'])) {
                        $finSmail = new FinanceSmail();
                        $finSmail->financeBlocked($rec_id, $sReason);
                        $objResponse->script("\$('ov-notice22-r').toggleClass('b-shadow_hide');");
                        $objResponse->script("\$\$('#__finance_blocked,#__finance_unblocked').toggleClass('b-button_hide');");
                    }
                    break;
                default:
                    break;
            }
            if ($bSend) {
                $user_content->sendNotification($_SESSION['uid'], $sUid, $rec_content_id, $rec_id, $rec_type, 2, $sReason);
                $objResponse->script('window.location.reload(true)');
            }
        }
        return $objResponse;
    }
    $objResponse->script("delete banned.buffer['delreason_{$sId}'];");
    $objResponse->script("parent.\$\$(\"div[id^='ov-notice']\").setStyle('display', 'none');");
    $objResponse->script("parent.\$('ov-notice22-r').toggleClass('b-shadow_hide');");
    return $objResponse;
}
开发者ID:Nikitian,项目名称:fl-ru-damp,代码行数:90,代码来源:banned.server.php

示例6: _parsePortfolioOne

/**
 * Парсит HTML одной работы в портфолио
 * 
 * @param  array $aOne массив с данными комментария
 * @param  int $status статус: 0 - не проверенно, 1 - утверждено, 2 - удалено
 * @param  string $sKind опционально. тип записи
 * @param  array $aStream данные о потоке
 * @param  int $nCnt количество записей в потоке
 * @param  int $nContentId идентификатор сущности из admin_contents (фактический из потоков, то есть со сборными)
 * @return string HTML
 */
function _parsePortfolioOne($aOne = array(), $status = 0, $sKind = '0', $aStream = array(), $nCnt = 0, $nContentId = 0)
{
    global $stop_words, $user_content, $sTeam;
    $sReturn = '';
    $sAttach = '';
    if ($aOne['is_video'] == 't') {
        // работа есть видео
        if ($aOne['prev_pict']) {
            // есть отдельно загруженное превью
            $sInner = '<img src="' . WDCPREFIX . '/users/' . $aOne['login'] . '/upload/' . $aOne['prev_pict'] . '" alt="' . $aOne['prev_pict'] . '" title="' . $aOne['prev_pict'] . '" />';
        } else {
            // нет отдельно загруженного превью
            $sInner = $aOne['video_link'];
        }
        $sAttach = '<div class="b-post__txt b-post__txt_padbot_15 b-post__txt_fontsize_15"><strong>Ссылка на YouTube/RuTube/Vimeo видео:</strong> <br/><a href="http://' . $aOne['video_link'] . '" target="_blank">' . $sInner . '</a></div>';
    } elseif ($aOne['pict']) {
        // работа есть файл
        $ext = CFile::getext($aOne['pict']);
        $preview = $aOne['prev_pict'];
        $sPreview = '';
        if (in_array($ext, $GLOBALS['graf_array']) && $ext != 'swf') {
            // работа есть картинка
            if ($aOne['pict'] != substr($preview, 3, strlen($preview))) {
                // превью сделано не на основе оригинальной картинки либо вообще отсутствует
                $sInner = '<img src="' . WDCPREFIX . '/users/' . $aOne['login'] . '/upload/tn_' . $aOne['pict'] . '" alt="' . $aOne['pict'] . '" title="' . $aOne['pict'] . '" />';
                if ($preview) {
                    // превью загружено отдельно
                    $sPreview = 'Превью: <br/><img src="' . WDCPREFIX . '/users/' . $aOne['login'] . '/upload/' . $preview . '" alt="' . $preview . '" title="' . $preview . '" />';
                }
            } else {
                // превью сделано на основе оригинальной картинки
                $sInner = '<img src="' . WDCPREFIX . '/users/' . $aOne['login'] . '/upload/' . $preview . '" alt="' . $preview . '" title="' . $preview . '" />';
            }
        } else {
            //работа не есть картинка
            if ($preview) {
                // есть отдельно загруженное превью
                $sInner = '<img src="' . WDCPREFIX . '/users/' . $aOne['login'] . '/upload/' . $preview . '" alt="' . $preview . '" title="' . $preview . '" />';
            } else {
                // нет отдельно загруженного превью
                $sInner = 'Работа';
            }
        }
        $sAttach = '<div class="b-post__txt b-post__txt_padbot_15 b-post__txt_fontsize_15">
            <a href="' . WDCPREFIX . '/users/' . $aOne['login'] . '/upload/' . $aOne['pict'] . '" target="_blank">' . $sInner . '</a><br/>
            ' . $sPreview . '
            </div>';
    }
    $txt_cost = view_cost2($aOne['cost'], '', '', false, $aOne['cost_type']);
    $txt_time = view_time($aOne['time_value'], $aOne['time_type']);
    $is_txt_time = $txt_cost != '' && $txt_time != '';
    $sLink = $GLOBALS['host'] . '/users/' . $aOne['login'];
    $sLink2 = $aOne['link'] ? '<div class="b-post__txt b-post__txt_padbot_15 b-post__txt_fontsize_15"><strong>Ссылка:</strong> <br/><a href="' . $aOne['link'] . '" target="_blank">' . $aOne['link'] . '</a></div>' : '';
    $sTitle = $status != 1 ? $stop_words->replace(xmloutofrangechars($aOne['name'])) : xmloutofrangechars($aOne['name']);
    $sTitle = reformat($sTitle, 52, 0, 1);
    $aOne['descr'] = nl2br($aOne['descr']);
    // грязный хак так как close_tags стала съедать переносы строк
    $sMessage = close_tags($aOne['descr'], 'b,i,p,ul,li');
    $sMessage = $status != 1 ? $stop_words->replace(xmloutofrangechars($aOne['descr'])) : xmloutofrangechars($aOne['descr']);
    $sMessage = reformat($sMessage, 60, 0, 0, 1);
    $aOne['is_sent'] = '0';
    $aOne['context_code'] = '1';
    $aOne['context_link'] = $sLink;
    $aOne['context_title'] = $aOne['uname'] . ' ' . $aOne['usurname'] . ' [' . $aOne['login'] . ']';
    $sJSParams = "{'content_id': {$nContentId}, 'stream_id': '{$aStream['stream_id']}', 'content_cnt': {$nCnt}, 'status': {$status}, 'is_sent': '{$aOne['is_sent']}'}";
    $sEditIcon = _parseEditIcon('admEditPortfolio', $aOne['id'], $status, $sKind, $sJSParams);
    $bIsModer = $user_content->hasContentPermissions($nContentId, permissions::getUserPermissions($aOne['user_id']));
    $sModified = $aOne['moduser_id'] && ($aOne['moduser_id'] != $aOne['user_id'] || $bIsModer) ? '<div class="b-post__txt b-post__txt_padbot_15"><span style="color:red;">Работа была отредактирована. ' . ($aOne['modified_reason'] ? 'Причина: ' . $aOne['modified_reason'] : 'Без причины') . '</span></div>' : '';
    $sPRO = $aOne['moderator_status'] == -1 ? '<div class="b-post__txt b-post__txt_fontsize_11"><span style="color: #cc4642;">У пользователя был аккаунт PRO</span></div>' : '';
    $sPro = $aOne['is_pro'] == 't' ? view_pro2($aOne['is_pro_test'] == 't' ? true : false) . '&nbsp;' : '';
    $sReturn .= '
<div class="b-post b-post_bordtop_dfe3e4 b-post_padtop_15 b-post_marg_20_10" id="my_div_content_' . $aOne['content_id'] . '_' . $aOne['id'] . '_' . $sKind . '">
    ' . _parseHidden($aOne, $sKind) . '
    ' . _parseOkIcon($status, $aOne['content_id'], $aOne['id'], $sKind, $aOne['user_id']) . '
    ' . _parsePostTime($status, $aOne['post_time']) . '
    <div class="b-username b-username_padbot_5">' . ($aOne['is_team'] == 't' ? $sTeam : $sPro) . '<a class="b-username__link b-username__link_color_fd6c30 b-username__link_fontsize_11 b-username__link_bold" href="/users/' . $aOne['login'] . '" target="_blank">' . $aOne['uname'] . ' ' . $aOne['usurname'] . ' [' . $aOne['login'] . ']</a></div>
    ' . ($aOne['warn'] ? '<div class="b-username_padbot_5"><a onclick="parent.user_content.getUserWarns(' . $aOne['user_id'] . ');" href="javascript:void(0);" class="notice">Предупреждения:&nbsp;<span id="warn_' . $aOne['user_id'] . '_' . $aOne['content_id'] . '_' . $aOne['id'] . '">' . intval($aOne['warn']) . '</span></a></div>' : '<div class="b-username_padbot_5 user-notice">Предупреждений нет</div>') . '
    ' . $sPRO . '
    ' . _parseMass($aOne, $status, $sKind) . '
    <div class="b-post__txt b-post__txt_padbot_10 b-post__txt_fontsize_15"><span class="b-post__bold">Новая работа:</span> <a class="b-post__link b-post__link_fontsize_15" href="/users/' . $aOne['login'] . '/viewproj.php?prjid=' . $aOne['id'] . '" target="_blank">' . $sTitle . '</a></div>
    <div class="b-post__txt b-post__txt_fontsize_15">' . $sMessage . '</div>
    <div class="b-post__txt b-post__txt_fontsize_15">' . $txt_cost . ($is_txt_time ? ', ' : '') . ($txt_time != '' ? $txt_time : '') . '</div>

    ' . $sAttach . '
    ' . $sLink2 . '

    ' . $sModified . '
    ' . _parseDelIcons($aOne, 'user_id', $status, $sKind, $sJSParams, $sEditIcon) . '
</div>';
//.........这里部分代码省略.........
开发者ID:Nikitian,项目名称:fl-ru-damp,代码行数:101,代码来源:user_content.server.php

示例7: ucfirst

require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages_spam.php';
$nMessagesSpamCount = messages_spam::getSpamCount();
// количество жалоб на проекты
if (!isset($nComplainProjectsCount)) {
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
    $nComplainProjectsCount = projects::GetComplainPrjsCount();
}
?>

<div class="admin-menu">

    <h3>Модераторская</h3>
    <?php 
if (!isset($aPermissions)) {
    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/permissions.php";
    $aPermissions = permissions::getUserPermissions(get_uid(false));
}
foreach ($aPermissions as $sPermission) {
    $sVar = 'bHas' . ucfirst($sPermission);
    ${$sVar} = true;
}
?>
    <?php 
if ($bHasAll || $bHasAdm) {
    ?>

        <?php 
    if ($bHasAll || $bHasUsers || $bHasProjects || $bHasBlogs || $bHasCommunes) {
        ?>
        - Действия<br/>
        <?php 
开发者ID:Nikitian,项目名称:fl-ru-damp,代码行数:31,代码来源:leftmenu.php


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