diff options
author | Bjoern Schiessle <bjoern@schiessle.org> | 2017-01-17 14:36:44 +0100 |
---|---|---|
committer | Bjoern Schiessle <bjoern@schiessle.org> | 2017-01-18 15:25:16 +0100 |
commit | 32e0ec3e585d516749f9b1a096abb78ca3003d61 (patch) | |
tree | af8696d0fdf301e1f3c98143fcf9e930317d28e2 /lib | |
parent | 29a0a239183c9a2b8ab89b32b7ce5afde922159b (diff) | |
download | nextcloud-server-32e0ec3e585d516749f9b1a096abb78ca3003d61.tar.gz nextcloud-server-32e0ec3e585d516749f9b1a096abb78ca3003d61.zip |
handle optional annotation parameters
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php | 2 | ||||
-rw-r--r-- | lib/private/AppFramework/Utility/ControllerMethodReflector.php | 21 |
2 files changed, 20 insertions, 3 deletions
diff --git a/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php b/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php index dcfab3544b8..edba6a3e759 100644 --- a/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php +++ b/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php @@ -192,7 +192,7 @@ class SecurityMiddleware extends Middleware { } if($this->reflector->hasAnnotation('BruteForceProtection')) { - $action = $this->request->getRequestUri(); + $action = $this->reflector->getAnnotationParameter('BruteForceProtection'); $this->throttler->sleepDelay($this->request->getRemoteAddress(), $action); $this->throttler->registerAttempt($action, $this->request->getRemoteAddress()); } diff --git a/lib/private/AppFramework/Utility/ControllerMethodReflector.php b/lib/private/AppFramework/Utility/ControllerMethodReflector.php index 9f653b0384e..034fc3a1759 100644 --- a/lib/private/AppFramework/Utility/ControllerMethodReflector.php +++ b/lib/private/AppFramework/Utility/ControllerMethodReflector.php @@ -56,7 +56,9 @@ class ControllerMethodReflector implements IControllerMethodReflector{ // extract everything prefixed by @ and first letter uppercase preg_match_all('/^\h+\*\h+@(?P<annotation>[A-Z]\w+)(\h+(?P<parameter>\w+))?$/m', $docs, $matches); - $this->annotations = $matches[1]; + foreach($matches['annotation'] as $key => $annontation) { + $this->annotations[$annontation] = $matches['parameter'][$key]; + } // extract type parameter information preg_match_all('/@param\h+(?P<type>\w+)\h+\$(?P<var>\w+)/', $docs, $matches); @@ -112,7 +114,22 @@ class ControllerMethodReflector implements IControllerMethodReflector{ * @return bool true if the annotation is found */ public function hasAnnotation($name){ - return in_array($name, $this->annotations); + return array_key_exists($name, $this->annotations); + } + + + /** + * Get optional annotation parameter + * @param string $name the name of the annotation + * @return string + */ + public function getAnnotationParameter($name){ + $parameter = ''; + if($this->hasAnnotation($name)) { + $parameter = $this->annotations[$name]; + } + + return $parameter; } |