/** * Return an array of roles which may be granted the permission based on * the options. * * @param mixed $options Options provided from configuration. * * @return array */ public function getPermissions($options) { // Check if any regex matches.... $ip = $this->request->getServer()->get('REMOTE_ADDR'); if ($this->ipAddressUtils->isInRange($ip, (array) $options)) { // Match? Grant to all users (guest or logged in). return ['guest', 'loggedin']; } // No match? No permissions. return []; }
/** * Test isInRange() * * @return void */ public function testIsInRange() { $utils = new IpAddressUtils(); $this->assertFalse($utils->isInRange('127.0.0.1', ['127.0.0.0'])); $this->assertTrue($utils->isInRange('127.0.0.1', ['127.0.0.1'])); $this->assertTrue($utils->isInRange('127.0.0.1', ['127.0.0'])); $this->assertFalse($utils->isInRange('127.0.0.1', [])); $this->assertFalse($utils->isInRange('127.0.0.1', [''])); $this->assertTrue($utils->isInRange('127.0.0.1', ['127.0.0.0-127.0.0.2'])); $this->assertTrue($utils->isInRange('127.0.0.1', ['192.168.0.1-192.168.0.2', '127.0.0.0-127.0.0.2'])); $this->assertFalse($utils->isInRange('127.0.0.1', ['192.168.0.1-192.168.0.2', '127.0.0.2-127.0.0.4'])); $this->assertTrue($utils->isInRange('2001:db8::ef90:1', ['2001:db8::ef90:0-2001:db8::ef90:2'])); $this->assertTrue($utils->isInRange('2001:db8::ef90:1', ['2001:0db8::ef90:1'])); $this->assertTrue($utils->isInRange('2001:db8::ef90:1', ['2001:0db8'])); $this->assertFalse($utils->isInRange('2001:db8::ef90:1', ['2001:0db9'])); }