public void Edit(CswNbtAPIReturn Return, CswNbtAPIGenericRequest GenericRequest)
        {
            if (hasPermission(GenericRequest, Return))
            {
                try
                {
                    CswNbtNode Node = _CswNbtResources.Nodes.GetNode(GenericRequest.NodeId);
                    if (null != Node && GenericRequest.MetaDataName == Node.getNodeType().NodeTypeName)
                    {
                        if (null != GenericRequest.ResourceToUpdate)
                        {
                            foreach (string propKey in GenericRequest.ResourceToUpdate.PropertyData.properties.Keys)
                            {
                                CswNbtWcfProperty wcfProp = GenericRequest.ResourceToUpdate.PropertyData.properties[propKey];
                                ReadPropertyData(Node, wcfProp);
                            }
                        }

                        if (Node.IsTemp)
                        {
                            Node.PromoteTempToReal();
                        }
                        else
                        {
                            Node.postChanges(false);
                        }
                    }
                    else
                    {
                        Return.Status = HttpStatusCode.NotFound;
                    }
                }
                catch (Exception)
                {
                    Return.Status = HttpStatusCode.InternalServerError;
                }
            }
            else
            {
                Return.Status = HttpStatusCode.Forbidden;
            }
        }
Beispiel #2
0
        public void Update(CswNbtResource ResourceToUpdate, string metadataname, string id)
        {
            WebOperationContext ctx = WebOperationContext.Current;

            CswNbtAPIReturn         Ret = new CswNbtAPIReturn();
            CswNbtAPIGenericRequest Req = new CswNbtAPIGenericRequest(metadataname, id);

            bool idsMatch = true;

            if (null != ResourceToUpdate)
            {
                Req.ResourceToUpdate = ResourceToUpdate;
                if (ResourceToUpdate.NodeId.PrimaryKey != Req.NodeId.PrimaryKey)
                {
                    //if someone posts a different node with a different ID in the URI template that's a problem.
                    ctx.OutgoingResponse.StatusCode = HttpStatusCode.InternalServerError;
                    idsMatch = false;
                }
            }

            if (idsMatch)
            {
                var SvcDriver = new CswWebSvcDriver <CswNbtAPIReturn, CswNbtAPIGenericRequest>(
                    CswWebSvcResourceInitializer: new CswWebSvcResourceInitializerNbt(_Context, null),
                    ReturnObj: Ret,
                    WebSvcMethodPtr: CswNbtWebServiceUPDATE.Edit,
                    ParamObj: Req
                    );

                SvcDriver.run();
                ctx.OutgoingResponse.StatusCode = Ret.Status;
            }

            if (ctx.OutgoingResponse.StatusCode != HttpStatusCode.OK)
            {
                Ret = null;
            }
        }
 protected override bool hasPermission(CswNbtAPIGenericRequest GenericRequest, CswNbtAPIReturn Return)
 {
     return(base.hasPermission(_CswNbtResources, CswEnumNbtNodeTypePermission.Delete, GenericRequest, Return));
 }
Beispiel #4
0
        /// <summary>
        /// Based on the input, verifies if the user has permission to continue
        /// </summary>
        public bool hasPermission(CswNbtResources NbtResources, CswEnumNbtNodeTypePermission Permission, CswNbtAPIGenericRequest GenericRequest, CswNbtAPIReturn Return)
        {
            bool ret = false;
            CswNbtMetaDataNodeType NodeType = NbtResources.MetaData.getNodeType(GenericRequest.MetaDataName);

            if (null != NodeType)
            {
                if (NbtResources.Permit.canAnyTab(Permission, NodeType, User: NbtResources.CurrentNbtUser))
                {
                    ret = true;
                }
                else
                {
                    Return.Status = Return.Status = HttpStatusCode.Forbidden; //Permission denied
                }
            }
            else
            {
                Return.Status = Return.Status = HttpStatusCode.NotFound;
            }
            return(ret);
        }
Beispiel #5
0
 protected abstract bool hasPermission(CswNbtAPIGenericRequest GenericRequest, CswNbtAPIReturn Return);
        public static void Edit(ICswResources CswResources, CswNbtAPIReturn Return, CswNbtAPIGenericRequest GenericRequest)
        {
            CswNbtWebServiceUPDATE PUT = new CswNbtWebServiceUPDATE((CswNbtResources)CswResources);

            PUT.Edit(Return, GenericRequest);
        }
Beispiel #7
0
 protected override bool hasPermission(CswNbtAPIGenericRequest GenericRequest, CswNbtAPIReturn Return)
 {
     return(true); //TODO: search permissions?
 }