document = $document; $this->action = $action; } /** * Get Description * * Returns validator description * * @return string */ public function getDescription() { return $this->message; } /** * Is valid * * Returns true if valid or false if not. * * @param array $permissions * @return bool */ public function isValid($permissions) { if(!self::$status) { return true; } if(!isset($permissions[$this->action])) { $this->message = 'Missing action key: "' . $this->action . '"'; return false; } $permission = null; foreach ($permissions[$this->action] as $permission) { $permission = str_replace(':{self}', ':' . $this->document->getUid(), $permission); if(in_array($permission, self::getRoles())) { return true; } } $this->message = 'User is missing ' . $this->action . ' for ' . $permission . ' permission. only this scope "' . json_encode(self::getRoles()) . '" is given.'; return false; } /** * @param string $role */ static public function setRole($role) { self::$roles[] = $role; } /** * @return array */ static public function getRoles() { return self::$roles; } /** * @var bool */ static public $status = true; /** * */ static public function enable() { self::$status = true; } /** * */ static public function disable() { self::$status = false; } }