コード例 #1
0
ファイル: SPDGClientListItem.cs プロジェクト: vipasane/SPDG
        public override void ShareWithPeople(IEnumerable <string> emails, bool isEdit)
        {
            if (emails == null || !emails.Any())
            {
                return;
            }
            var userRoles = new List <UserRoleAssignment>();

            foreach (var user in emails)
            {
                UserRoleAssignment role = new UserRoleAssignment();
                role.UserId = user;
                role.Role   = isEdit ? Role.Edit : Role.View;
                userRoles.Add(role);
            }
            string message = "Please accept this invite.";

            //the parameter before the message is responsible for sending emails
            DocumentSharingManager.UpdateDocumentSharingInfo(_context, (string)_item["EncodedAbsUrl"], userRoles, true, true, false, message, true, true);


            _context.ExecuteQuery();


            // alternatively we can do this like below, but this does not add any people
            // Web.CreateAnonymousLink(_context, (string)_item["EncodedAbsUrl"], false);
            // Web.CreateOrganizationSharingLink(_context, (string) _item["EncodedAbsUrl"], true);
            // _context.ExecuteQuery();

            // for web sharing the following can be used
            //  WebSharingManager.UpdateWebSharingInformation(_context, _item.ParentList.ParentWeb, userRoles, true, message, true, true);
        }
コード例 #2
0
        public static void CreateAndShareFolder(ClientContext context, string folderName, string userEmail)
        {
            var listTitle  = "Dokumente";
            var rootFolder = "Testfolder_ROOT/";

            var folder = CreateFolder(context.Web, listTitle, rootFolder + folderName);

            var users = new List <UserRoleAssignment>();

            users.Add(new UserRoleAssignment()
            {
                UserId = userEmail,
                Role   = Role.Edit,
            });

            var serverRelativeUrl = folder.ServerRelativeUrl;
            var absoluteUrl       = new Uri(context.Url).GetLeftPart(UriPartial.Authority) + serverRelativeUrl;


            // Diest konnte eine Spur auf den richtign Weg sein!
            // https://social.technet.microsoft.com/wiki/contents/articles/39365.sharepoint-online-sharing-settings-with-csom.aspx?Sort=MostUseful&PageIndex=1#Property

            //var spoTenant = new Microsoft.Online.SharePoint.TenantAdministration.Tenant(context);
            //context.Load(spoTenant);
            //context.ExecuteQuery();
            //spoTenant.RequireAcceptingAccountMatchInvitedAccount = true;
            //context.Load(spoTenant);
            //context.ExecuteQuery();

            /* User gets Email, but with "public" Sharing-Link */
            //var userSharingResults = DocumentSharingManager.UpdateDocumentSharingInfo(context,
            //    absoluteUrl,
            //    users,
            //    validateExistingPermissions: false,
            //    additiveMode: true,
            //    sendServerManagedNotification: true,
            //    customMessage: null,
            //    includeAnonymousLinksInNotification: true,
            //    propagateAcl: false);

            /* User gets Email, but needs an MS-Account to View */
            var userSharingResults = DocumentSharingManager.UpdateDocumentSharingInfo(context, absoluteUrl, users,
                                                                                      validateExistingPermissions: false,
                                                                                      additiveMode: false,
                                                                                      sendServerManagedNotification: true,
                                                                                      customMessage: null,
                                                                                      includeAnonymousLinksInNotification: false,
                                                                                      propagateAcl: true);

            context.ExecuteQuery();
            if (userSharingResults.FirstOrDefault()?.Status != true)
            {
                Console.WriteLine($"Fehler beim Erstellen {userSharingResults.FirstOrDefault()?.Message}");
            }
        }
コード例 #3
0
        // Token: 0x06000022 RID: 34 RVA: 0x000022A8 File Offset: 0x000004A8
        public IList <IUserSharingResult> DocumentSharingManagerUpdateDocumentSharingInfo(string resourceAddress, IList <UserRoleAssignment> userRoleAssignments, bool validateExistingPermissions, bool additiveMode, bool sendServerManagedNotification, string customMessage, bool includeAnonymousLinksInNotification)
        {
            IList <UserSharingResult> list  = DocumentSharingManager.UpdateDocumentSharingInfo(this.BackingClientContext, resourceAddress, userRoleAssignments, validateExistingPermissions, additiveMode, sendServerManagedNotification, customMessage, includeAnonymousLinksInNotification);
            List <IUserSharingResult> list2 = new List <IUserSharingResult>();

            foreach (UserSharingResult result in list)
            {
                list2.Add(new UserSharingResultWrapper(result));
            }
            return(list2);
        }
コード例 #4
0
        /// <summary>
        /// This method will send notifications to external users
        /// </summary>
        /// <param name="externalSharingRequest"></param>
        /// <returns></returns>
        private GenericResponseVM SendExternalNotification(MatterInformationVM matterInformation, string permission, string externalEmail)
        {
            var clientUrl = $"{matterInformation.Client.Url}";

            try
            {
                var users = new List <UserRoleAssignment>();
                UserRoleAssignment userRole = new UserRoleAssignment();
                userRole.UserId = externalEmail;
                switch (permission.ToLower())
                {
                case "full control":
                    userRole.Role = SharePoint.Client.Sharing.Role.Owner;
                    break;

                case "contribute":
                    userRole.Role = SharePoint.Client.Sharing.Role.Edit;
                    break;

                case "read":
                    userRole.Role = SharePoint.Client.Sharing.Role.View;
                    break;
                }
                users.Add(userRole);
                #region Doc Sharing API
                //Need to use MatterGuid instead of Id
                string matterLandingPageUrl        = $"{clientUrl}/sitepages/{matterInformation.Matter.MatterGuid + ServiceConstants.ASPX_EXTENSION}";
                string catalogSiteAssetsLibraryUrl = $"{generalSettings.CentralRepositoryUrl}/SitePages/home.aspx";
                using (var clientContext = spoAuthorization.GetClientContext(clientUrl))
                {
                    //Send notification to the matter landing page url with permission the user has selected
                    IList <UserSharingResult> matterLandingPageResult = DocumentSharingManager.UpdateDocumentSharingInfo(clientContext,
                                                                                                                         matterLandingPageUrl,
                                                                                                                         users, true, true, true, "The following matter page has been shared with you", true, true);
                    clientContext.ExecuteQuery();
                }
                return(null);

                #endregion
            }
            catch (Exception ex)
            {
                throw;
            }
        }