diff --git a/src/Level3/Silex/Controller.php b/src/Level3/Silex/Controller.php index 4bf7e99..662a776 100644 --- a/src/Level3/Silex/Controller.php +++ b/src/Level3/Silex/Controller.php @@ -21,6 +21,7 @@ class Controller private $processor; private $requestFactory; private $allowedOrigin = ''; + private $allowedMethods = ''; public function __construct(RequestProcessor $processor, RequestFactory $requestFactory) { @@ -33,16 +34,28 @@ public function setAllowedOrigin($allowedOrigin) $this->allowedOrigin = $allowedOrigin; } + public function setAllowedMethods($allowedMethods) + { + $this->allowedMethods = $allowedMethods; + } + + protected function allowOrigin(Response $response, $method){ + $response->setHeader('Access-Control-Allow-Origin',$this->allowedOrigin); + $response->setHeader('Access-Control-Allow-Methods',$this->allowedMethods); + return $response; + } + public function options(Request $request) { $headers = $request->headers->all(); $headers['Access-Control-Allow-Origin'] = $this->allowedOrigin; - + $headers['Access-Control-Allow-Methods'] = $this->allowedMethods; if (isset($headers['access-control-request-headers'])) { $headers['Access-Control-Allow-Headers'] = $headers['access-control-request-headers']; } unset($headers['access-control-request-headers']); + unset($headers['access-control-request-method']); unset($headers['user-agent']); unset($headers['origin']); unset($headers['accept']); @@ -56,8 +69,7 @@ public function find(Request $request) { $level3Request = $this->createLevel3Request($request); $response = $this->processor->find($level3Request); - - $response->addHeader('Access-Control-Allow-Origin', '*'); + $this->allowOrigin($response,'find'); return $response; } @@ -65,8 +77,7 @@ public function get(Request $request) { $level3Request = $this->createLevel3Request($request); $response = $this->processor->get($level3Request); - - $response->addHeader('Access-Control-Allow-Origin', '*'); + $this->allowOrigin($response,'get'); return $response; } @@ -74,28 +85,23 @@ public function post(Request $request) { $level3Request = $this->createLevel3Request($request); $response = $this->processor->post($level3Request); - - $response->addHeader('Access-Control-Allow-Origin', '*'); + $this->allowOrigin($response,'post'); return $response; } public function put(Request $request) { $level3Request = $this->createLevel3Request($request); - $response = $this->processor->put($level3Request); - - $response->addHeader('Access-Control-Allow-Origin', '*'); + $this->allowOrigin($response,'put'); return $response; } public function delete(Request $request) { $level3Request = $this->createLevel3Request($request); - $response = $this->processor->delete($level3Request); - - $response->addHeader('Access-Control-Allow-Origin', '*'); + $this->allowOrigin($response,'delete'); return $response; } diff --git a/src/Level3/Silex/RepositoryMapper.php b/src/Level3/Silex/RepositoryMapper.php index 4008ecd..078a22a 100644 --- a/src/Level3/Silex/RepositoryMapper.php +++ b/src/Level3/Silex/RepositoryMapper.php @@ -43,14 +43,14 @@ public function mapGet($resourceKey, $uri) public function mapPost($resourceKey, $uri) { $this->app-> - post($uri, 'level3.controller:post')-> + put($uri, 'level3.controller:post')-> bind(sprintf('%s:post', $resourceKey)); } public function mapPut($resourceKey, $uri) { $this->app-> - put($uri, 'level3.controller:put')-> + post($uri, 'level3.controller:put')-> bind(sprintf('%s:put', $resourceKey)); }