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);
        }
예제 #3
0
        //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()));
        }
예제 #4
0
 /// <summary>
 /// چک کردن اینکه این شناسه نقش ادمین است یا خیر
 /// </summary>
 /// <param name="roleId"></param>
 /// <returns></returns>
 public bool IsAdmin(int roleId)
 => TableNoTracking.FirstOrDefault(a => a.Id == roleId).NormalizedName == ImportantNames.AdminNormalTitle();