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); }