void IPPWSecurity.CheckSecurity(Type type, SecurityActionFlag securityActionFlag)
 {
     if (!((IPPWSecurity)this).HasSufficientSecurity(type, securityActionFlag))
     {
         throw new DaoSecurityException(type, securityActionFlag);
     }
 }
        bool IPPWSecurity.HasSufficientSecurity(Type type, SecurityActionFlag securityActionFlag)
        {
            Contract.Assume(
                Thread.CurrentPrincipal.Identity != null
                && Thread.CurrentPrincipal.Identity.IsAuthenticated);

            return default(bool);
        }
        public DaoSecurityException(Type checkedType, SecurityActionFlag requestedSecurityAction)
			: base(string.Format("Access denied for action '{0}' on type '{1}'", requestedSecurityAction, checkedType.Name))
        {
            Contract.Requires(checkedType != null);
            Contract.Ensures(checkedType == CheckedType);
            Contract.Ensures(requestedSecurityAction == RequestedSecurityAction);

            CheckedType = checkedType;
            RequestedSecurityAction = requestedSecurityAction;
        }
 bool IPPWSecurity.HasSufficientSecurity(Type type, SecurityActionFlag securityActionFlag)
 {
     lock (s_SecurityActionSyncObj)
     {
         List<PPWSecurityActionAttribute> securityList;
         if (!s_SecurityAction.TryGetValue(type, out securityList))
         {
             securityList = type
                 .GetCustomAttributes(false)
                 .OfType<PPWSecurityActionAttribute>()
                 .ToList();
             s_SecurityAction.Add(type, securityList);
         }
         IPrincipal principal = Thread.CurrentPrincipal;
         return securityList
             .Exists(s =>
                     (s.SecurityAction & securityActionFlag) == securityActionFlag
                     && principal.IsInRole(s.Role));
     }
 }
 bool IPPWSecurity.HasSufficientSecurity(Type type, SecurityActionFlag securityActionFlag)
 {
     lock (s_SecurityActionSyncObj)
     {
         List<PPWSecurityActionAttribute> securityList;
         if (!s_SecurityAction.TryGetValue(type, out securityList))
         {
             securityList = type
                 .GetCustomAttributes(false)
                 .OfType<PPWSecurityActionAttribute>()
                 .ToList();
             s_SecurityAction.Add(type, securityList);
         }
         IPrincipal principal;
         if (Thread.CurrentPrincipal.Identity.IsAuthenticated)
         {
             principal = Thread.CurrentPrincipal;
         }
         else
         {
             WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();
             if (windowsIdentity != null && windowsIdentity.IsAuthenticated)
             {
                 principal = new WindowsPrincipal(windowsIdentity);
             }
             else
             {
                 return false;
             }
         }
         return securityList
             .Exists(s =>
                     (s.SecurityAction & securityActionFlag) == securityActionFlag
                     && principal.IsInRole(s.Role));
     }
 }
 void IPPWSecurity.CheckSecurity(Type type, SecurityActionFlag securityActionFlag)
 {
     Contract.Assume(
         Thread.CurrentPrincipal.Identity != null
         && Thread.CurrentPrincipal.Identity.IsAuthenticated);
 }