public virtual void DenyAccess <TActionParamsType>(string actionName, string roleName, string entityId, TActionParamsType T) where TActionParamsType : new() { var entityPermission = Query().SingleOrDefault(ep => ep.Action == actionName && ep.RoleName == roleName && ep.EntityId == entityId); if (entityPermission == null) { var ep = new EntityPermission { Action = actionName, EntityId = entityId, RoleName = roleName, Permission = Permission.Deny, }; var type = typeof(TActionParamsType); PropertyInfo[] propertyInfos = type.GetProperties(); foreach (var propertyInfo in propertyInfos) { ep.RawActionParams.Add(propertyInfo.Name, propertyInfo.GetValue(T).ToString()); } _dataStore.Insert(ep); } else { if (entityPermission.Permission != Permission.Deny) { entityPermission.Permission = Permission.Deny; _dataStore.Update(entityPermission); } } }
public virtual void DenyAccess(string actionName, string roleName, string entityId) { var entityPermission = Query().SingleOrDefault(ep => ep.Action == actionName && ep.RoleName == roleName && ep.EntityId == entityId); if (entityPermission == null) { var ep = new EntityPermission { Action = actionName, EntityId = entityId, RoleName = roleName, Permission = Permission.Deny }; _dataStore.Insert(ep); } else { if (entityPermission.Permission != Permission.Deny) { entityPermission.Permission = Permission.Deny; _dataStore.Update(entityPermission); } } }
//public virtual IQueryable<EntityPermission> Query(string actionName) //{ // return Query().Where(ep => ep.ActionName == actionName); //} public virtual IEnumerable <EntityPermission <TActionParamsType> > Query <TActionParamsType>(string action, string userid = null) where TActionParamsType : new() { var entityPermisions = Query().Where(ep => ep.Action == action); if (userid != null) { var roles = _rolesProvider(userid).ToList(); entityPermisions = entityPermisions.Where(ep => roles.Contains(ep.RoleName)); } var result = new List <EntityPermission <TActionParamsType> >(); var type = typeof(TActionParamsType); foreach (var entityPermission in entityPermisions) { var permsStr = new EntityPermission <TActionParamsType> { EntityId = entityPermission.EntityId, Id = entityPermission.Id, Action = entityPermission.Action, RoleName = entityPermission.RoleName, Permission = entityPermission.Permission, ActionParameters = new TActionParamsType() }; foreach (var rawActionParam in entityPermission.RawActionParams) { var prop = type.GetProperty(rawActionParam.Key); if (null != prop && prop.CanWrite) { prop.SetValue(permsStr.ActionParameters, rawActionParam.Value); } } result.Add(permsStr); } return(result); }