當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript Web.hasPermissions方法代碼示例

本文整理匯總了TypeScript中sp-pnp-js.Web.hasPermissions方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript Web.hasPermissions方法的具體用法?TypeScript Web.hasPermissions怎麽用?TypeScript Web.hasPermissions使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在sp-pnp-js.Web的用法示例。


在下文中一共展示了Web.hasPermissions方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1: getCurrentUserPermissionsOnList

    public async getCurrentUserPermissionsOnList(listServerRelativeUrl: string): Promise<DiscussionPermissionLevel[]> {

        const permissionsList = [];

        const web = new Web(_spPageContextInfo.webAbsoluteUrl);
        const permissions = await web.getList(listServerRelativeUrl).getCurrentUserEffectivePermissions();
        const canAddListItems = web.hasPermissions(permissions, PermissionKind.AddListItems);
        const canManageLists = web.hasPermissions(permissions, PermissionKind.ManageLists);

        if (canAddListItems) {
            permissionsList.push(DiscussionPermissionLevel.Add);
        }

        if (canManageLists) {
            permissionsList.push(DiscussionPermissionLevel.ManageLists);
        }

        return permissionsList;
    }
開發者ID:ScoutmanPt,項目名稱:PnP,代碼行數:19,代碼來源:SocialModule.ts

示例2: getCurrentUserPermissionsOnItem

    /**
     * Gets the current user permnissions on a reply
     * @param itemId the item id
     * @param replyAuthorLoginName the reply auhtor name (to check if the current user is the actual author)
     */
    private async getCurrentUserPermissionsOnItem(itemId: number, replyAuthorLoginName: string): Promise<DiscussionPermissionLevel[]> {

        const permissionsList = [];

        const web = new Web(_spPageContextInfo.webAbsoluteUrl);
        const permissions = await web.getList(this.discussionListServerRelativeUrl).items.getById(itemId).getCurrentUserEffectivePermissions();

        const canAddListItems = web.hasPermissions(permissions, PermissionKind.AddListItems);
        const canEditListItems = web.hasPermissions(permissions, PermissionKind.EditListItems);
        const canDeleteListItems = web.hasPermissions(permissions, PermissionKind.DeleteListItems);
        const canManageLists = web.hasPermissions(permissions, PermissionKind.ManageLists);

        if (canManageLists) {
            permissionsList.push(DiscussionPermissionLevel.ManageLists);
            permissionsList.push(DiscussionPermissionLevel.Delete);
            permissionsList.push(DiscussionPermissionLevel.Edit);
        }

        if ((canEditListItems && !canManageLists) || (canDeleteListItems && !canManageLists)) {

            pnp.storage.local.deleteExpired();

            // The "WriteSecurity" property isn't availabe through REST with SharePoint 2013. In this case, we need to get the whole list XML schema to extract this info
            // Not very efficient but we do not have any other option here
            // Not List Item Level Security is different than item permissions so we can't rely on native REST methods (i.e. getCurrentUserEffectivePermissions())
            const writeSecurityStorageKey = String.format("{0}_{1}", _spPageContextInfo.webServerRelativeUrl, "commentsListWriteSecurity");
            let writeSecurity = pnp.storage.local.get(writeSecurityStorageKey);

            if (!writeSecurity) {
                const  list = await web.getList(this.discussionListServerRelativeUrl).select("SchemaXml").get();
                // tslint:disable-next-line:radix
                writeSecurity = parseInt(/WriteSecurity="(\d)"/.exec(list.SchemaXml)[1]);

                pnp.storage.local.put(writeSecurityStorageKey, writeSecurity, pnp.util.dateAdd(new Date(), "minute", 60));
            }

            // 2 = Create items and edit items that were created by the user
            if (writeSecurity === 2) {

                const userLoginNameStorageKey = String.format("{0}_{1}", _spPageContextInfo.webServerRelativeUrl, "currentUserLoginName");
                let currentUserLoginName = pnp.storage.local.get(userLoginNameStorageKey);
                if (!currentUserLoginName) {
                    const currentUser = await web.currentUser.select("LoginName").get();
                    currentUserLoginName = currentUser.LoginName;
                    pnp.storage.local.put(userLoginNameStorageKey, currentUserLoginName, pnp.util.dateAdd(new Date(), "minute", 20));
                }

                // If the current user is the author of the comment
                if (replyAuthorLoginName === currentUserLoginName) {

                    if (canEditListItems) {
                        permissionsList.push(DiscussionPermissionLevel.EditAsAuthor);
                    }

                    if (canDeleteListItems) {
                        permissionsList.push(DiscussionPermissionLevel.DeleteAsAuthor);
                    }
                }
            } else {
                if (canDeleteListItems) {
                    permissionsList.push(DiscussionPermissionLevel.Delete);
                }

                if (canEditListItems) {
                    permissionsList.push(DiscussionPermissionLevel.Edit);
                }
            }
        }

        if (canAddListItems) {
            permissionsList.push(DiscussionPermissionLevel.Add);
        }

        return permissionsList;
    }
開發者ID:ScoutmanPt,項目名稱:PnP,代碼行數:80,代碼來源:SocialModule.ts


注:本文中的sp-pnp-js.Web.hasPermissions方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。