Example #1
0
        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);
        }
Example #2
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;
            }
        }
        /// <summary>
        /// Checks if the User with ID provided has equal or higher permission than the permission provided
        /// </summary>
        /// <param name="userId">ID of User to check permission for</param>
        /// <param name="permission">Permission to check that User has</param>
        /// <returns></returns>
        private bool UserCanAssignRoles(int userId, UserRoleAssignment permission)
        {
            var userRoles = GetUserRoles(userId);

            return(userRoles.Any(role => role.UserRoleAssignmentAccess >= permission));
        }