public bool HasAccess(int roleId, string controller, string action) /*=> true;*/ { var roleName = _roleRepository.GetRoleNameByRoleId(roleId); if (roleName == ImportantNames.AdminNormalTitle()) { return(true); } var userAccess = TableNoTracking.Where(a => a.RoleId == roleId).ToList(); foreach (var item in userAccess) { if (item.Controller.ToUpper() == controller.ToUpper() + ImportantNames.ControllerName()) { var actions = item.Actions == null ? null : JsonConvert.DeserializeObject <List <string> >(item.Actions); if (actions != null && actions.Contains(action)) { return(true); } } } return(false); }
public bool HasAccess(int role, IDictionary <string, string> path) { var roleName = _roleRepository.GetRoleNameByRoleId(role); if (roleName == ImportantNames.AdminNormalTitle()) { return(true); } var userAccess = TableNoTracking.Include(a => a.Roles).Where(a => a.Roles.Id == role).ToList(); foreach (var item in userAccess) { if (item.Controller.ToUpper() == path["controller"].ToUpper() + ImportantNames.ControllerName()) { var actions = item.Actions == null ? null : JsonConvert.DeserializeObject <List <string> >(item.Actions); if (actions != null && actions.Contains(path["action"])) { return(true); } } } return(false); }
//public async Task<SweetAlertExtenstion> CheckAndSync(params Assembly[] assemblies) //{ // var controllerInfo = GetDisplayAndNameController(assemblies); // var roles = TableNoTracking.Select(a => a.Name).ToList(); // var roleList = new List<Roles>(); // foreach (var item in controllerInfo) // { // roleList.Add(new Roles() // { // Name = item.Name, // ConcurrencyStamp = Guid.NewGuid().ToString(), // NormalizedName = item.Name.ToUpper().Trim(), // RoleTitle = item.GetCustomAttribute<ControllerRoleAttribute>()?.GetName() // }); // } // roleList = roleList.Where(a => !roles.Contains(a.Name)).ToList(); // await AddRangeAsync(roleList); // return SweetAlertExtenstion.Ok("تمامی اطلاعات ثبت شد"); //} ///// <summary> ///// گرفتن تایپ کنترلر هایی مورد نظر ///// </summary> ///// <param name="assemblies"></param> ///// <returns></returns> //public List<Type> GetDisplayAndNameController(params Assembly[] assemblies) // => typeof(ControllerRoleAttribute).GetTypesHasAttribute(assemblies).ToList(); public async Task <Tuple <int, List <RoleManageDTO> > > LoadAsyncCount( int skip = -1, int take = -1, RolesSearchViewModel model = null) { var query = Entities.Where(a => a.NormalizedName != ImportantNames.AdminNormalTitle()).ProjectTo <RoleManageDTO>(); if (!string.IsNullOrEmpty(model.RoleTitle)) { query = query.Where(x => x.RoleTitle.Contains(model.RoleTitle)); } if (!string.IsNullOrEmpty(model.Name)) { query = query.Where(x => x.Name.Contains(model.Name)); } int Count = query.Count(); query = query.OrderByDescending(x => x.Id); if (skip != -1) { query = query.Skip((skip - 1) * take); } if (take != -1) { query = query.Take(take); } return(new Tuple <int, List <RoleManageDTO> >(Count, await query.ToListAsync())); }
/// <summary> /// چک کردن اینکه این شناسه نقش ادمین است یا خیر /// </summary> /// <param name="roleId"></param> /// <returns></returns> public bool IsAdmin(int roleId) => TableNoTracking.FirstOrDefault(a => a.Id == roleId).NormalizedName == ImportantNames.AdminNormalTitle();