public IActionResult DeleteStreamSolution(string name, string authByUserId, string code)
        {
            var auth = new GoogleAuthDataModel()
            {
                AuthByUserID = authByUserId,
                Code         = code
            };
            var auditUser = currentUserService.CurrentUser;

            if (auth?.AuthByUserID != null && auditUser?.Id != auth?.AuthByUserID)
            {
                if (auth.Verify(googleAuthService, currentUserService.CurrentUser?.Id))
                {
                    auditUser = usersService.GetById(auth.AuthByUserID);
                }
                else
                {
                    return(new JsonResult(ActionStatusMessage.Account.Auth.AuthCode.Invalid));
                }
            }

            ApplyAuditStream node = applyAuditStreamServices.EditSolution(name);

            if (node == null)
            {
                return(new JsonResult(ActionStatusMessage.ApplyMessage.AuditStreamMessage.StreamSolution.NotExist));
            }
            // 检查删除目标的权限
            var result = CheckPermission(auditUser, null, node.RegionOnCompany, node.RegionOnCompany);

            if (result != null && result.Status != 0)
            {
                return(new JsonResult(result));
            }

            var nStr  = (node.Nodes?.Length ?? 0) == 0 ? Array.Empty <string>() : node.Nodes.Split("##");
            var nList = context.ApplyAuditStreamNodeActionDb.Where(node => nStr.Contains(node.Name));

            // 检查包含节点的权限
            result = CheckPermissionNodes(auditUser, nList);
            if (result != null && result.Status != 0)
            {
                return(new JsonResult(result));
            }
            node.Remove();
            context.ApplyAuditStreams.Update(node);
            context.SaveChanges();

            return(new JsonResult(ActionStatusMessage.Success));
        }
Пример #2
0
        /// <summary>
        /// 检查是否符合授权
        /// </summary>
        /// <param name="auth"></param>
        /// <param name="permission">需要何授权</param>
        /// <param name="operation">进行何操作</param>
        /// <param name="targetCompany">被授权方使用何单位,为空表示需要root授权</param>
        /// <param name="description"></param>
        private User CheckPermission(GoogleAuthDataModel auth, PermissionDescription permission = null, Operation operation = Operation.Update, string targetCompany = "", string description = null)
        {
            var authUser = auth.AuthUser(googleAuthService, usersService, currentUserService.CurrentUser?.Id);

            if (authUser == null)
            {
                throw new ActionStatusMessageException(ActionStatusMessage.UserMessage.NotExist);
            }
            if (permission == null)
            {
                permission = DictionaryAllPermission.Grade.Subject;
            }
            if (!userActionServices.Permission(authUser.Application.Permission, permission, operation, authUser.Id, targetCompany, description))
            {
                throw new ActionStatusMessageException(auth.PermitDenied());
            }
            return(authUser);
        }
Пример #3
0
        public IActionResult DeleteStreamNode(string name, string authByUserId, string code)
        {
            var auth = new GoogleAuthDataModel()
            {
                AuthByUserID = authByUserId,
                Code         = code
            };
            var auditUser = currentUserService.CurrentUser;

            if (auth?.AuthByUserID != null && auth?.AuthByUserID != null && auditUser?.Id != auth?.AuthByUserID)
            {
                if (auth.Verify(googleAuthService, currentUserService.CurrentUser?.Id))
                {
                    auditUser = usersService.GetById(auth.AuthByUserID);
                }
                else
                {
                    return(new JsonResult(ActionStatusMessage.Account.Auth.AuthCode.Invalid));
                }
            }

            var n = applyAuditStreamServices.EditNode(name);

            if (n != null)
            {
                // 判断此目标的权限
                var result = CheckPermission(auditUser, n.ToDtoModel(), n.RegionOnCompany, n.RegionOnCompany);
                if (result.Status == 0)
                {
                    n.Remove();
                    context.ApplyAuditStreamNodeActions.Update(n);
                    context.SaveChanges();
                }
            }
            else
            {
                return(new JsonResult(ActionStatusMessage.ApplyMessage.AuditStreamMessage.Node.NotExist));
            }
            return(new JsonResult(ActionStatusMessage.Success));
        }