Agusto Xaverius P Sipahutar

Job:Making some bugs and patch
Moss/Wss,C#,Sql Server,WWF,K2.BlackPearl
Motto : Keep Study and study
See also: Other Geeks@INDC

News




MCP Logo
MCTS Logo

MCP ID# 3542391

My Curiculum Vitae


Agusto Xaverius P S's Facebook profile

Other Article

My Community

My Article/Share Knowledge

Others Moss/Wss Site

My Other Website/Blogs

My Share (Ebook,etc)

Preventing deleting item on Wss/Moss 2007

Tadi malam ngobrol ama client dan ada request untuk tidak bisa menghapus document yang di buat tetapi user tersebut punya hak akses untuk create document / upload document.

Daripada pikir panjang untuk menghapus link delete item di context menunya akhirnya saya langsung memberikan solusi bila user tersebut delete item tersebut akan di berikan notifikasi "You don't have authorized to delete this item".

Setelah client setuju akhirnya saya membuat event dan coding untuk handle event tersebut. 

Coding sbb :


using System;
using System.Security.Permissions;
using System.Runtime.InteropServices;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using System.Diagnostics;
using System.IO;
using System.Configuration;

namespace Agusto.Dms.SpEvent
{
    [CLSCompliant(false)]
    public class MyItemEvent : SPItemEventReceiver
    {
        private SPWeb spWeb = null;
              
        /// <summary>
        /// Initializes a new instance of the Microsoft.SharePoint.SPItemEventReceiver class.
        /// </summary>
        public MyItemEvent ()
        {
        }
            

        /// <summary>
        /// Synchronous before event that occurs before an existing item is completely deleted.
        /// </summary>
        /// <param name="properties">
        /// A Microsoft.SharePoint.SPItemEventProperties object that represents properties of the event handler.
        /// </param>
        [SharePointPermission(SecurityAction.LinkDemand, ObjectModel = true)]
        public override void ItemDeleting(SPItemEventProperties properties)
        {
            string LoginName = properties.UserLoginName;
            if (!LoginName.ToLower().Equals(@"sharepoint\system"))
            {
                try
                {
                    using (spWeb = new SPSite(properties.SiteId).OpenWeb())
                    {
                        SPUser user = spWeb.Users[LoginName];
                        if (!user.IsSiteAdmin)
                        {
                            properties.ErrorMessage = @"You don't have authorized to delete this item";
                            properties.Cancel = true;
                        }
                    }
                }
                catch (Exception ex)
                {
                    properties.ErrorMessage = ex.Message + "," + ex.Source;
                    properties.Cancel = true;
                }
            }       
        }

       }
    }
}

 

Dengan code ini akhirnya user yang punya hak akses read/contributor tidak bisa delete item, tetapi system account dan account yang di set sebagi full control dari site akan bisa hapus item tersebut.

Share this post: | | | |
Posted: Apr 17 2008, 05:14 AM by agusto | with 1 comment(s) |
Filed under:

Comments

Sites « Dot Net Solutions said:

Pingback from  Sites &laquo; Dot Net Solutions

# February 1, 2010 9:26 PM