예제 #1
0
        public IActionResult Add([FromBody] AddResourceViewModel model)
        {
            var resource = resourceService.Detail(model.Content);

            if (resource != null)
            {
                return(APIResult.失败.SetMessage(string.Format(LocalResource.AlreadyExists, model.Content)));
            }

            var check = CheckParent(model.ParentId);

            if (check.Code != APIResult.OK)
            {
                return(check);
            }

            resource = resourceService.Add(
                new M_Resource
            {
                Authorize = model.Authorize,
                Name      = model.Name,
                Content   = model.Content,
                Type      = model.Type,
                ParentId  = model.ParentId,
                Sort      = model.Sort
            });

            return(APIResult.成功.SetData("id", resource.Id));
        }
예제 #2
0
        private async Task <APIResult> CheckResource(HttpContext ctx, string path)
        {
            resource = resourceService.Detail(path);
            if (resource == null)
            {
                return(APIResult.失败.SetMessage(LocalResource.NotFound));
            }

            if (resource.Authorize)
            {
                var token = ctx.Request.Headers["token"];
                if (string.IsNullOrEmpty(token))
                {
                    return(APIResult.用户_未登录);
                }

                int.TryParse(await redisClient.GetDatabase().StringGetAsync(SignInKey + token), out userId);
                var roleId = roleService.GetRoles(userId).Select(f => f.Id).ToList();
                if (roleId.Count == 0)
                {
                    return(APIResult.没有访问权限);
                }
                else
                {
                    var access = roleService.ValidatorRole(resource.Id, roleId.ToArray());
                    if (!access)
                    {
                        return(APIResult.没有访问权限);
                    }
                }
            }

            return(APIResult.成功);
        }