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; } }
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)); }
/// <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); }
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); }
protected override bool hasPermission(CswNbtAPIGenericRequest GenericRequest, CswNbtAPIReturn Return) { return(true); //TODO: search permissions? }