Adds Permission model and framework for testing permission manager.
This commit is contained in:
Generated
+104
-101
@@ -4,6 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"hash": "30e4866a38047b4a1fd9c55cf08f22ec",
|
||||
"content-hash": "db8bc30537b2e353991fb5f1034910bf",
|
||||
"packages": [
|
||||
{
|
||||
@@ -44,7 +45,7 @@
|
||||
"slug",
|
||||
"transliterator"
|
||||
],
|
||||
"time": "2015-09-28T16:26:35+00:00"
|
||||
"time": "2015-09-28 16:26:35"
|
||||
},
|
||||
{
|
||||
"name": "composer/ca-bundle",
|
||||
@@ -102,20 +103,20 @@
|
||||
"ssl",
|
||||
"tls"
|
||||
],
|
||||
"time": "2016-11-02T18:11:27+00:00"
|
||||
"time": "2016-11-02 18:11:27"
|
||||
},
|
||||
{
|
||||
"name": "composer/composer",
|
||||
"version": "1.3.0",
|
||||
"version": "1.3.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/composer/composer.git",
|
||||
"reference": "e53f9e5381e70f76e098136343e27d92601eade7"
|
||||
"reference": "91dbca556764dcece45e1ba3aab14de2deaa9fec"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/composer/composer/zipball/e53f9e5381e70f76e098136343e27d92601eade7",
|
||||
"reference": "e53f9e5381e70f76e098136343e27d92601eade7",
|
||||
"url": "https://api.github.com/repos/composer/composer/zipball/91dbca556764dcece45e1ba3aab14de2deaa9fec",
|
||||
"reference": "91dbca556764dcece45e1ba3aab14de2deaa9fec",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -179,7 +180,7 @@
|
||||
"dependency",
|
||||
"package"
|
||||
],
|
||||
"time": "2016-12-23T23:47:04+00:00"
|
||||
"time": "2017-01-07 17:08:51"
|
||||
},
|
||||
{
|
||||
"name": "composer/semver",
|
||||
@@ -241,7 +242,7 @@
|
||||
"validation",
|
||||
"versioning"
|
||||
],
|
||||
"time": "2016-08-30T16:08:34+00:00"
|
||||
"time": "2016-08-30 16:08:34"
|
||||
},
|
||||
{
|
||||
"name": "composer/spdx-licenses",
|
||||
@@ -302,29 +303,27 @@
|
||||
"spdx",
|
||||
"validator"
|
||||
],
|
||||
"time": "2016-09-28T07:17:45+00:00"
|
||||
"time": "2016-09-28 07:17:45"
|
||||
},
|
||||
{
|
||||
"name": "d11wtq/boris",
|
||||
"version": "v1.0.8",
|
||||
"version": "v1.0.10",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/borisrepl/boris.git",
|
||||
"reference": "125dd4e5752639af7678a22ea597115646d89c6e"
|
||||
"reference": "31055b15e2d3fe47f31f6aa8e277f8f3fc7eb483"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/borisrepl/boris/zipball/125dd4e5752639af7678a22ea597115646d89c6e",
|
||||
"reference": "125dd4e5752639af7678a22ea597115646d89c6e",
|
||||
"url": "https://api.github.com/repos/borisrepl/boris/zipball/31055b15e2d3fe47f31f6aa8e277f8f3fc7eb483",
|
||||
"reference": "31055b15e2d3fe47f31f6aa8e277f8f3fc7eb483",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-pcntl": "*",
|
||||
"ext-posix": "*",
|
||||
"ext-readline": "*"
|
||||
"ext-readline": "*",
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"bin": [
|
||||
"bin/boris"
|
||||
@@ -336,7 +335,11 @@
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"time": "2014-01-17T12:21:18+00:00"
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "A tiny, but robust REPL (Read-Evaluate-Print-Loop) for PHP.",
|
||||
"time": "2015-03-01 08:05:19"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/annotations",
|
||||
@@ -404,7 +407,7 @@
|
||||
"docblock",
|
||||
"parser"
|
||||
],
|
||||
"time": "2016-12-30T15:59:45+00:00"
|
||||
"time": "2016-12-30 15:59:45"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/cache",
|
||||
@@ -474,7 +477,7 @@
|
||||
"cache",
|
||||
"caching"
|
||||
],
|
||||
"time": "2016-10-29T11:16:17+00:00"
|
||||
"time": "2016-10-29 11:16:17"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/collections",
|
||||
@@ -540,20 +543,20 @@
|
||||
"collections",
|
||||
"iterator"
|
||||
],
|
||||
"time": "2015-04-14T22:21:58+00:00"
|
||||
"time": "2015-04-14 22:21:58"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/common",
|
||||
"version": "v2.6.2",
|
||||
"version": "v2.7.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/doctrine/common.git",
|
||||
"reference": "7bce00698899aa2c06fe7365c76e4d78ddb15fa3"
|
||||
"reference": "930297026c8009a567ac051fd545bf6124150347"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/doctrine/common/zipball/7bce00698899aa2c06fe7365c76e4d78ddb15fa3",
|
||||
"reference": "7bce00698899aa2c06fe7365c76e4d78ddb15fa3",
|
||||
"url": "https://api.github.com/repos/doctrine/common/zipball/930297026c8009a567ac051fd545bf6124150347",
|
||||
"reference": "930297026c8009a567ac051fd545bf6124150347",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -562,10 +565,10 @@
|
||||
"doctrine/collections": "1.*",
|
||||
"doctrine/inflector": "1.*",
|
||||
"doctrine/lexer": "1.*",
|
||||
"php": "~5.5|~7.0"
|
||||
"php": "~5.6|~7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.8|~5.0"
|
||||
"phpunit/phpunit": "^5.4.6"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@@ -613,24 +616,24 @@
|
||||
"persistence",
|
||||
"spl"
|
||||
],
|
||||
"time": "2016-11-30T16:50:46+00:00"
|
||||
"time": "2017-01-13 14:02:13"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/dbal",
|
||||
"version": "v2.5.5",
|
||||
"version": "v2.5.8",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/doctrine/dbal.git",
|
||||
"reference": "9f8c05cd5225a320d56d4bfdb4772f10d045a0c9"
|
||||
"reference": "6314d55f60f85f0295c90688397b75c13faf9f0e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/doctrine/dbal/zipball/9f8c05cd5225a320d56d4bfdb4772f10d045a0c9",
|
||||
"reference": "9f8c05cd5225a320d56d4bfdb4772f10d045a0c9",
|
||||
"url": "https://api.github.com/repos/doctrine/dbal/zipball/6314d55f60f85f0295c90688397b75c13faf9f0e",
|
||||
"reference": "6314d55f60f85f0295c90688397b75c13faf9f0e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"doctrine/common": ">=2.4,<2.7-dev",
|
||||
"doctrine/common": ">=2.4,<2.8-dev",
|
||||
"php": ">=5.3.2"
|
||||
},
|
||||
"require-dev": {
|
||||
@@ -684,7 +687,7 @@
|
||||
"persistence",
|
||||
"queryobject"
|
||||
],
|
||||
"time": "2016-09-09T19:13:33+00:00"
|
||||
"time": "2017-01-17 17:48:38"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/inflector",
|
||||
@@ -751,7 +754,7 @@
|
||||
"singularize",
|
||||
"string"
|
||||
],
|
||||
"time": "2015-11-06T14:35:42+00:00"
|
||||
"time": "2015-11-06 14:35:42"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/instantiator",
|
||||
@@ -805,7 +808,7 @@
|
||||
"constructor",
|
||||
"instantiate"
|
||||
],
|
||||
"time": "2015-06-14T21:17:01+00:00"
|
||||
"time": "2015-06-14 21:17:01"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/lexer",
|
||||
@@ -859,7 +862,7 @@
|
||||
"lexer",
|
||||
"parser"
|
||||
],
|
||||
"time": "2014-09-09T13:34:57+00:00"
|
||||
"time": "2014-09-09 13:34:57"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/orm",
|
||||
@@ -935,7 +938,7 @@
|
||||
"database",
|
||||
"orm"
|
||||
],
|
||||
"time": "2016-12-18T15:42:34+00:00"
|
||||
"time": "2016-12-18 15:42:34"
|
||||
},
|
||||
{
|
||||
"name": "gedmo/doctrine-extensions",
|
||||
@@ -1014,7 +1017,7 @@
|
||||
"tree",
|
||||
"uploadable"
|
||||
],
|
||||
"time": "2016-12-21T13:46:54+00:00"
|
||||
"time": "2016-12-21 13:46:54"
|
||||
},
|
||||
{
|
||||
"name": "justinrainbow/json-schema",
|
||||
@@ -1080,7 +1083,7 @@
|
||||
"json",
|
||||
"schema"
|
||||
],
|
||||
"time": "2016-12-22T16:43:46+00:00"
|
||||
"time": "2016-12-22 16:43:46"
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
@@ -1158,7 +1161,7 @@
|
||||
"logging",
|
||||
"psr-3"
|
||||
],
|
||||
"time": "2016-11-26T00:15:39+00:00"
|
||||
"time": "2016-11-26 00:15:39"
|
||||
},
|
||||
{
|
||||
"name": "psr/log",
|
||||
@@ -1205,7 +1208,7 @@
|
||||
"psr",
|
||||
"psr-3"
|
||||
],
|
||||
"time": "2016-10-10T12:19:37+00:00"
|
||||
"time": "2016-10-10 12:19:37"
|
||||
},
|
||||
{
|
||||
"name": "seld/cli-prompt",
|
||||
@@ -1253,7 +1256,7 @@
|
||||
"input",
|
||||
"prompt"
|
||||
],
|
||||
"time": "2016-04-18T09:31:41+00:00"
|
||||
"time": "2016-04-18 09:31:41"
|
||||
},
|
||||
{
|
||||
"name": "seld/jsonlint",
|
||||
@@ -1299,7 +1302,7 @@
|
||||
"parser",
|
||||
"validator"
|
||||
],
|
||||
"time": "2016-11-14T17:59:58+00:00"
|
||||
"time": "2016-11-14 17:59:58"
|
||||
},
|
||||
{
|
||||
"name": "seld/phar-utils",
|
||||
@@ -1343,20 +1346,20 @@
|
||||
"keywords": [
|
||||
"phra"
|
||||
],
|
||||
"time": "2015-10-13T18:44:15+00:00"
|
||||
"time": "2015-10-13 18:44:15"
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v3.2.1",
|
||||
"version": "v3.2.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/console.git",
|
||||
"reference": "d12aa9ca20f4db83ec58410978dab6afcb9d6aaa"
|
||||
"reference": "4f9e449e76996adf310498a8ca955c6deebe29dd"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/d12aa9ca20f4db83ec58410978dab6afcb9d6aaa",
|
||||
"reference": "d12aa9ca20f4db83ec58410978dab6afcb9d6aaa",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/4f9e449e76996adf310498a8ca955c6deebe29dd",
|
||||
"reference": "4f9e449e76996adf310498a8ca955c6deebe29dd",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1406,20 +1409,20 @@
|
||||
],
|
||||
"description": "Symfony Console Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-12-11T14:34:22+00:00"
|
||||
"time": "2017-01-08 20:47:33"
|
||||
},
|
||||
{
|
||||
"name": "symfony/debug",
|
||||
"version": "v3.2.1",
|
||||
"version": "v3.2.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/debug.git",
|
||||
"reference": "9f923e68d524a3095c5a2ae5fc7220c7cbc12231"
|
||||
"reference": "810ba5c1c5352a4ddb15d4719e8936751dff0b05"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/debug/zipball/9f923e68d524a3095c5a2ae5fc7220c7cbc12231",
|
||||
"reference": "9f923e68d524a3095c5a2ae5fc7220c7cbc12231",
|
||||
"url": "https://api.github.com/repos/symfony/debug/zipball/810ba5c1c5352a4ddb15d4719e8936751dff0b05",
|
||||
"reference": "810ba5c1c5352a4ddb15d4719e8936751dff0b05",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1463,20 +1466,20 @@
|
||||
],
|
||||
"description": "Symfony Debug Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-11-16T22:18:16+00:00"
|
||||
"time": "2017-01-02 20:32:22"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v3.2.1",
|
||||
"version": "v3.2.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/filesystem.git",
|
||||
"reference": "8d4cf7561a5b17e5eb7a02b80d0b8f014a3796d4"
|
||||
"reference": "a0c6ef2dc78d33b58d91d3a49f49797a184d06f4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/8d4cf7561a5b17e5eb7a02b80d0b8f014a3796d4",
|
||||
"reference": "8d4cf7561a5b17e5eb7a02b80d0b8f014a3796d4",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/a0c6ef2dc78d33b58d91d3a49f49797a184d06f4",
|
||||
"reference": "a0c6ef2dc78d33b58d91d3a49f49797a184d06f4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1512,20 +1515,20 @@
|
||||
],
|
||||
"description": "Symfony Filesystem Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-11-24T00:46:43+00:00"
|
||||
"time": "2017-01-08 20:47:33"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
"version": "v3.2.1",
|
||||
"version": "v3.2.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/finder.git",
|
||||
"reference": "a69cb5d455b4885ca376dc5bb3e1155cc8c08c4b"
|
||||
"reference": "8c71141cae8e2957946b403cc71a67213c0380d6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/a69cb5d455b4885ca376dc5bb3e1155cc8c08c4b",
|
||||
"reference": "a69cb5d455b4885ca376dc5bb3e1155cc8c08c4b",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/8c71141cae8e2957946b403cc71a67213c0380d6",
|
||||
"reference": "8c71141cae8e2957946b403cc71a67213c0380d6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1561,7 +1564,7 @@
|
||||
],
|
||||
"description": "Symfony Finder Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-12-13T09:39:43+00:00"
|
||||
"time": "2017-01-02 20:32:22"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
@@ -1620,20 +1623,20 @@
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2016-11-14T01:06:16+00:00"
|
||||
"time": "2016-11-14 01:06:16"
|
||||
},
|
||||
{
|
||||
"name": "symfony/process",
|
||||
"version": "v3.2.1",
|
||||
"version": "v3.2.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/process.git",
|
||||
"reference": "02ea84847aad71be7e32056408bb19f3a616cdd3"
|
||||
"reference": "350e810019fc52dd06ae844b6a6d382f8a0e8893"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/process/zipball/02ea84847aad71be7e32056408bb19f3a616cdd3",
|
||||
"reference": "02ea84847aad71be7e32056408bb19f3a616cdd3",
|
||||
"url": "https://api.github.com/repos/symfony/process/zipball/350e810019fc52dd06ae844b6a6d382f8a0e8893",
|
||||
"reference": "350e810019fc52dd06ae844b6a6d382f8a0e8893",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1669,20 +1672,20 @@
|
||||
],
|
||||
"description": "Symfony Process Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-11-24T10:40:28+00:00"
|
||||
"time": "2017-01-02 20:32:22"
|
||||
},
|
||||
{
|
||||
"name": "symfony/yaml",
|
||||
"version": "v3.2.1",
|
||||
"version": "v3.2.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/yaml.git",
|
||||
"reference": "a7095af4b97a0955f85c8989106c249fa649011f"
|
||||
"reference": "50eadbd7926e31842893c957eca362b21592a97d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/yaml/zipball/a7095af4b97a0955f85c8989106c249fa649011f",
|
||||
"reference": "a7095af4b97a0955f85c8989106c249fa649011f",
|
||||
"url": "https://api.github.com/repos/symfony/yaml/zipball/50eadbd7926e31842893c957eca362b21592a97d",
|
||||
"reference": "50eadbd7926e31842893c957eca362b21592a97d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1724,7 +1727,7 @@
|
||||
],
|
||||
"description": "Symfony Yaml Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2016-12-10T10:07:06+00:00"
|
||||
"time": "2017-01-03 13:51:32"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
@@ -1777,7 +1780,7 @@
|
||||
"issues": "https://github.com/Block8/php-docblock-checker/issues",
|
||||
"source": "https://github.com/Block8/php-docblock-checker"
|
||||
},
|
||||
"time": "2016-07-31T06:01:25+00:00"
|
||||
"time": "2016-07-31 06:01:25"
|
||||
},
|
||||
{
|
||||
"name": "myclabs/deep-copy",
|
||||
@@ -1819,7 +1822,7 @@
|
||||
"object",
|
||||
"object graph"
|
||||
],
|
||||
"time": "2016-10-31T17:19:45+00:00"
|
||||
"time": "2016-10-31 17:19:45"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/reflection-common",
|
||||
@@ -1873,7 +1876,7 @@
|
||||
"reflection",
|
||||
"static analysis"
|
||||
],
|
||||
"time": "2015-12-27T11:43:31+00:00"
|
||||
"time": "2015-12-27 11:43:31"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/reflection-docblock",
|
||||
@@ -1918,7 +1921,7 @@
|
||||
}
|
||||
],
|
||||
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
||||
"time": "2016-09-30T07:12:33+00:00"
|
||||
"time": "2016-09-30 07:12:33"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/type-resolver",
|
||||
@@ -1965,7 +1968,7 @@
|
||||
"email": "me@mikevanriel.com"
|
||||
}
|
||||
],
|
||||
"time": "2016-11-25T06:54:22+00:00"
|
||||
"time": "2016-11-25 06:54:22"
|
||||
},
|
||||
{
|
||||
"name": "phpspec/prophecy",
|
||||
@@ -2028,7 +2031,7 @@
|
||||
"spy",
|
||||
"stub"
|
||||
],
|
||||
"time": "2016-11-21T14:58:47+00:00"
|
||||
"time": "2016-11-21 14:58:47"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/dbunit",
|
||||
@@ -2083,7 +2086,7 @@
|
||||
"testing",
|
||||
"xunit"
|
||||
],
|
||||
"time": "2016-12-02T14:39:14+00:00"
|
||||
"time": "2016-12-02 14:39:14"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-code-coverage",
|
||||
@@ -2146,7 +2149,7 @@
|
||||
"testing",
|
||||
"xunit"
|
||||
],
|
||||
"time": "2016-12-20T15:22:42+00:00"
|
||||
"time": "2016-12-20 15:22:42"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-file-iterator",
|
||||
@@ -2193,7 +2196,7 @@
|
||||
"filesystem",
|
||||
"iterator"
|
||||
],
|
||||
"time": "2016-10-03T07:40:28+00:00"
|
||||
"time": "2016-10-03 07:40:28"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-text-template",
|
||||
@@ -2234,7 +2237,7 @@
|
||||
"keywords": [
|
||||
"template"
|
||||
],
|
||||
"time": "2015-06-21T13:50:34+00:00"
|
||||
"time": "2015-06-21 13:50:34"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-timer",
|
||||
@@ -2278,7 +2281,7 @@
|
||||
"keywords": [
|
||||
"timer"
|
||||
],
|
||||
"time": "2016-05-12T18:03:57+00:00"
|
||||
"time": "2016-05-12 18:03:57"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-token-stream",
|
||||
@@ -2327,7 +2330,7 @@
|
||||
"keywords": [
|
||||
"tokenizer"
|
||||
],
|
||||
"time": "2016-11-15T14:06:22+00:00"
|
||||
"time": "2016-11-15 14:06:22"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/phpunit",
|
||||
@@ -2409,7 +2412,7 @@
|
||||
"testing",
|
||||
"xunit"
|
||||
],
|
||||
"time": "2016-12-28T07:18:51+00:00"
|
||||
"time": "2016-12-28 07:18:51"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/phpunit-mock-objects",
|
||||
@@ -2468,7 +2471,7 @@
|
||||
"mock",
|
||||
"xunit"
|
||||
],
|
||||
"time": "2016-12-08T20:27:08+00:00"
|
||||
"time": "2016-12-08 20:27:08"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/code-unit-reverse-lookup",
|
||||
@@ -2513,7 +2516,7 @@
|
||||
],
|
||||
"description": "Looks up which function or method a line of code belongs to",
|
||||
"homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
|
||||
"time": "2016-02-13T06:45:14+00:00"
|
||||
"time": "2016-02-13 06:45:14"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/comparator",
|
||||
@@ -2577,7 +2580,7 @@
|
||||
"compare",
|
||||
"equality"
|
||||
],
|
||||
"time": "2016-11-19T09:18:40+00:00"
|
||||
"time": "2016-11-19 09:18:40"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/diff",
|
||||
@@ -2629,7 +2632,7 @@
|
||||
"keywords": [
|
||||
"diff"
|
||||
],
|
||||
"time": "2015-12-08T07:14:41+00:00"
|
||||
"time": "2015-12-08 07:14:41"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/environment",
|
||||
@@ -2679,7 +2682,7 @@
|
||||
"environment",
|
||||
"hhvm"
|
||||
],
|
||||
"time": "2016-11-26T07:53:53+00:00"
|
||||
"time": "2016-11-26 07:53:53"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/exporter",
|
||||
@@ -2746,7 +2749,7 @@
|
||||
"export",
|
||||
"exporter"
|
||||
],
|
||||
"time": "2016-11-19T08:54:04+00:00"
|
||||
"time": "2016-11-19 08:54:04"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/global-state",
|
||||
@@ -2797,7 +2800,7 @@
|
||||
"keywords": [
|
||||
"global state"
|
||||
],
|
||||
"time": "2015-10-12T03:26:01+00:00"
|
||||
"time": "2015-10-12 03:26:01"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/object-enumerator",
|
||||
@@ -2843,7 +2846,7 @@
|
||||
],
|
||||
"description": "Traverses array structures and object graphs to enumerate all referenced objects",
|
||||
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
|
||||
"time": "2016-11-19T07:35:10+00:00"
|
||||
"time": "2016-11-19 07:35:10"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/recursion-context",
|
||||
@@ -2896,7 +2899,7 @@
|
||||
],
|
||||
"description": "Provides functionality to recursively process PHP variables",
|
||||
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
||||
"time": "2016-11-19T07:33:16+00:00"
|
||||
"time": "2016-11-19 07:33:16"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/resource-operations",
|
||||
@@ -2938,7 +2941,7 @@
|
||||
],
|
||||
"description": "Provides a list of PHP built-in functions that operate on resources",
|
||||
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
|
||||
"time": "2015-07-28T20:34:47+00:00"
|
||||
"time": "2015-07-28 20:34:47"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/version",
|
||||
@@ -2981,7 +2984,7 @@
|
||||
],
|
||||
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
|
||||
"homepage": "https://github.com/sebastianbergmann/version",
|
||||
"time": "2016-10-03T07:35:21+00:00"
|
||||
"time": "2016-10-03 07:35:21"
|
||||
},
|
||||
{
|
||||
"name": "webmozart/assert",
|
||||
@@ -3031,7 +3034,7 @@
|
||||
"check",
|
||||
"validate"
|
||||
],
|
||||
"time": "2016-11-23T20:04:58+00:00"
|
||||
"time": "2016-11-23 20:04:58"
|
||||
}
|
||||
],
|
||||
"aliases": [],
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace LotGD\Core\Models;
|
||||
|
||||
use Doctrine\ORM\Mapping\Entity;
|
||||
use Doctrine\ORM\Mapping\Table;
|
||||
|
||||
use LotGD\Core\Exceptions\ArgumentException;
|
||||
use LotGD\Core\Tools\Model\Creator;
|
||||
use LotGD\Core\Tools\Model\Deletor;
|
||||
|
||||
/**
|
||||
* Represents a permission.
|
||||
*
|
||||
* @Entity()
|
||||
* @Table(name="permissions")
|
||||
*/
|
||||
class Permission implements CreateableInterface
|
||||
{
|
||||
use Creator;
|
||||
use Deletor;
|
||||
|
||||
/** @Id @Column(type="string"); */
|
||||
private $id;
|
||||
/** @Column(type="string") */
|
||||
private $library;
|
||||
/** @Column(type="string") */
|
||||
private $name;
|
||||
|
||||
static $fillable = [
|
||||
"id",
|
||||
"library",
|
||||
"name"
|
||||
];
|
||||
|
||||
/**
|
||||
* Returns the id of this entity.
|
||||
* @return string
|
||||
*/
|
||||
public function getId(): string
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets this entity's id if it's not set yet.
|
||||
* @param string $id
|
||||
*/
|
||||
public function setId(string $id)
|
||||
{
|
||||
if (empty($this->id)) {
|
||||
$this->id = $id;
|
||||
}
|
||||
else {
|
||||
throw new ArgumentException("Cannot reset id.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the library this permission belongs to.
|
||||
* @return string
|
||||
*/
|
||||
public function getLibrary(): string
|
||||
{
|
||||
return $this->library;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the library this permission belongs to.
|
||||
* @param string $library
|
||||
*/
|
||||
public function setLibrary(string $library)
|
||||
{
|
||||
$this->library = $library;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets this entity's human readable name.
|
||||
* @return string
|
||||
*/
|
||||
public function getName(): string
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets this entity's human readable name.
|
||||
* @param string $name
|
||||
*/
|
||||
public function setName(string $name)
|
||||
{
|
||||
$this->name = $name;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace LotGD\Core\Models;
|
||||
|
||||
/**
|
||||
* Extend this class to provide an association between an entity and a permission.
|
||||
*/
|
||||
abstract class PermissionAssociation
|
||||
{
|
||||
/** @OneToOne(targetEntity="Permission", mappedBy="owner") */
|
||||
protected $permissionId;
|
||||
/** @Column(type="int") */
|
||||
protected $permissionState;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace LotGD\Core\Models;
|
||||
|
||||
/**
|
||||
* Implement this interface if an entity has associates permissions.
|
||||
*/
|
||||
interface PermissionableInterface
|
||||
{
|
||||
/**
|
||||
* Returns true if objects has a entry related to a given permission.
|
||||
* @param string $permissionId
|
||||
* @return bool
|
||||
*/
|
||||
public function hasPermission(string $permissionId): bool;
|
||||
|
||||
/**
|
||||
* Returns the permission
|
||||
* @param string $permissionId
|
||||
* @return Permission
|
||||
*/
|
||||
public function getPermission(string $permissionId): Permission;
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace LotGD\Core;
|
||||
|
||||
/**
|
||||
* Permissions can be managed with the PermissionManager.
|
||||
*
|
||||
* The PermissionManager class provides methods to work with permissions. It can
|
||||
* be used to create or delete permissions, to remove, allow or deny permissions
|
||||
* to actors and to check whether an actor has a certain permission or if it is
|
||||
* explicitely denied from him.
|
||||
*
|
||||
* The wording used in this class is:
|
||||
* - allowed, the actor has a certain permission in the allowed state.
|
||||
* - denied, the actor has a certain permission in the denied state.
|
||||
*
|
||||
* To make this more clear, the following table summarizes how different methods
|
||||
* react.
|
||||
*
|
||||
* Method
|
||||
* State: | Unset | Allowed | Denied
|
||||
* -------------------+-------+---------+---------
|
||||
* isAllowed | False | True | False
|
||||
* isDenied | False | False | True
|
||||
* hasPermissionSet | False | True | True
|
||||
*/
|
||||
class PermissionManager
|
||||
{
|
||||
const Allowed = 1;
|
||||
const Denied = -1;
|
||||
|
||||
const Superuser = "lotgd/core/superuser";
|
||||
const AddScenes = "lotgd/core/scene/add";
|
||||
const EditScenes = "lotgd/core/scene/edit";
|
||||
const DeleteScenes = "lotgd/core/scene/delete";
|
||||
const AddCharacters = "lotgd/core/characters/add";
|
||||
const EditCharacters = "lotgd/core/characters/edit";
|
||||
const DeleteCharacters = "lotgd/core/characters/delete";
|
||||
|
||||
/**
|
||||
* Checks if an actor has a permission set. No assumption can be made if it's allowed or denied.
|
||||
* @param \LotGD\Core\PermissionableInterface $actor
|
||||
* @param string $permissionId
|
||||
* @return bool True if the permission has been set, be it allowed or denied.
|
||||
*/
|
||||
public function hasPermissionSet(
|
||||
PermissionableInterface $actor,
|
||||
string $permissionId
|
||||
): bool {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if an actor is allowed a given permission.
|
||||
* @param \LotGD\Core\PermissionableInterface $actor
|
||||
* @param string $permissionId
|
||||
* @return bool True if the actor has the permission set and it's state is allowed.
|
||||
*/
|
||||
public function isAllowed(
|
||||
PermissionableInterface $actor,
|
||||
string $permissionId
|
||||
): bool {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if an actor is denied a given permission.
|
||||
* @param \LotGD\Core\PermissionableInterface $actor
|
||||
* @param string $permissionId
|
||||
* @return bool True if the actor has the permission set and it's state is denied.
|
||||
*/
|
||||
public function isDenied(
|
||||
PermissionableInterface $actor,
|
||||
string $permissionId
|
||||
): bool {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace LotGD\Core\Tools\Model;
|
||||
|
||||
use LotGD\Core\Models\Permission;
|
||||
|
||||
/**
|
||||
* Tools to work with a permission type field.
|
||||
*/
|
||||
trait PermissionAssociationable
|
||||
{
|
||||
/**
|
||||
* @ManyToOne(targetEntity="LotGD\Core\Models\Permission", inversedBy="permission")
|
||||
* @JoinColumn(name="permission_id", referencedColumnName="id")
|
||||
*/
|
||||
protected $permission;
|
||||
/** @Column(type="integer") */
|
||||
protected $permissionState;
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace LotGD\Core\Tools\Model;
|
||||
|
||||
use LotGD\Core\Models\Permission;
|
||||
|
||||
/**
|
||||
* Tools to work with a permission type field.
|
||||
*/
|
||||
trait Permissionable
|
||||
{
|
||||
/** @var array Associations between permission-id and PermissionAssociation entity. */
|
||||
private $_permissions = [];
|
||||
|
||||
protected function loadPermissions()
|
||||
{
|
||||
if (empty($this->_permissions)) {
|
||||
foreach ($this->permissions as $permission) {
|
||||
$this->_permissions[$permission->getId()] = $permission;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function hasPermission(string $permissionId): bool
|
||||
{
|
||||
$this->loadPermissions();
|
||||
|
||||
return isset($this->_permissions[$permissionId]);
|
||||
}
|
||||
|
||||
public function getPermission(string $permissionId): Permission
|
||||
{
|
||||
$this->loadPermissions();
|
||||
|
||||
return $this->_permissions[$permissionId];
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
#!/bin/bash -ex
|
||||
phpunit
|
||||
phpunit --stop-on-failure
|
||||
./vendor/bin/phpdoccheck -d src --no-ansi
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace LotGD\Core\Tests\Managers;
|
||||
|
||||
use LotGD\Core\Models\PermissionableInterface;
|
||||
use LotGD\Core\Models\PermissionAssociation;
|
||||
use LotGD\Core\Tools\Model\Permissionable;
|
||||
|
||||
use LotGD\Core\Tests\CoreModelTestCase;
|
||||
use LotGD\Core\Tests\Ressources\Models\User;
|
||||
use LotGD\Core\Tests\Ressources\Models\UserPermissionAssociation;
|
||||
|
||||
/**
|
||||
* Description of PermissionManagerTest
|
||||
*/
|
||||
class PermissionManagerTest extends CoreModelTestCase
|
||||
{
|
||||
protected $dataset = "permission-manager";
|
||||
|
||||
public function testSomething()
|
||||
{
|
||||
|
||||
$this->assertTrue(True);
|
||||
}
|
||||
}
|
||||
@@ -47,6 +47,7 @@ abstract class ModelTestCase extends \PHPUnit_Extensions_Database_TestCase
|
||||
$libraryConfigurationManager = new LibraryConfigurationManager($composerManager, getcwd());
|
||||
$directories = $libraryConfigurationManager->getEntityDirectories();
|
||||
$directories[] = implode(DIRECTORY_SEPARATOR, [__DIR__, '..', 'src', 'Models']);
|
||||
$directories[] = implode(DIRECTORY_SEPARATOR, [__DIR__, 'Ressources', 'TestModels']);
|
||||
|
||||
// Read db annotations from model files
|
||||
$configuration = Setup::createAnnotationMetadataConfiguration($directories, true);
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace LotGD\Core\Tests\Models;
|
||||
|
||||
use LotGD\Core\Exceptions\ArgumentException;
|
||||
use LotGD\Core\Models\Permission;
|
||||
use LotGD\Core\Tests\CoreModelTestCase;
|
||||
|
||||
/**
|
||||
* Tests the Permission model.
|
||||
*/
|
||||
class PermissionModelTest extends CoreModelTestCase
|
||||
{
|
||||
/** @var string default data set */
|
||||
protected $dataset = "permission";
|
||||
|
||||
public function testIfPermissionsCanBeFetched()
|
||||
{
|
||||
$em = $this->getEntityManager();
|
||||
$permission = $em->getRepository(Permission::class)->find("lotgd/core/superuser");
|
||||
|
||||
$this->assertInstanceOf(Permission::class, $permission);
|
||||
$this->assertEquals("lotgd/core/superuser", $permission->getId());
|
||||
$this->assertEquals("lotgd/core", $permission->getLibrary());
|
||||
$this->assertEquals("Superuser. Superseeds all flags.", $permission->getName());
|
||||
}
|
||||
|
||||
public function testIfPermissionsCanBeCreated()
|
||||
{
|
||||
$permission = Permission::create([
|
||||
"id" => "test/core/testpermission",
|
||||
"library" => "test/core",
|
||||
"name"=> "A permission for testing."
|
||||
]);
|
||||
|
||||
$this->assertInstanceOf(Permission::class, $permission);
|
||||
|
||||
$em = $this->getEntityManager();
|
||||
$permission->save($em);
|
||||
$em->clear();
|
||||
|
||||
$permission = $em->getRepository(Permission::class)->find("test/core/testpermission");
|
||||
|
||||
$this->assertInstanceOf(Permission::class, $permission);
|
||||
$this->assertEquals("test/core/testpermission", $permission->getId());
|
||||
$this->assertEquals("test/core", $permission->getLibrary());
|
||||
$this->assertEquals("A permission for testing.", $permission->getName());
|
||||
}
|
||||
|
||||
public function testIfIdCannotBeChanged()
|
||||
{
|
||||
$em = $this->getEntityManager();
|
||||
$permission = $em->getRepository(Permission::class)->find("lotgd/core/superuser");
|
||||
|
||||
$this->expectException(ArgumentException::class);
|
||||
|
||||
$permission->setId("another id.");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace LotGD\Core\Tests\Ressources\TestModels;
|
||||
|
||||
use Doctrine\ORM\Mapping\Entity;
|
||||
use Doctrine\ORM\Mapping\Table;
|
||||
|
||||
use LotGD\Core\Models\PermissionableInterface;
|
||||
use LotGD\Core\Tools\Model\Permissionable;
|
||||
|
||||
/**
|
||||
* @Entity
|
||||
* @Table("TestUsers")
|
||||
*/
|
||||
class User implements PermissionableInterface {
|
||||
use Permissionable;
|
||||
|
||||
/** @Id @Column(type="integer") @GeneratedValue */
|
||||
private $id;
|
||||
/** @Column(type="string", length=50); */
|
||||
private $name;
|
||||
/** @OneToMany(targetEntity="UserPermissionAssociation", mappedBy="owner", cascade={"persist", "remove"}) */
|
||||
private $permissions;
|
||||
|
||||
public function getId(): int
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getName(): string
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
public function setName(string $name)
|
||||
{
|
||||
$this->name = $name;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace LotGD\Core\Tests\Ressources\TestModels;
|
||||
|
||||
use Doctrine\ORM\Mapping\Entity;
|
||||
use Doctrine\ORM\Mapping\Table;
|
||||
|
||||
use LotGD\Core\Models\PermissionAssociation;
|
||||
use LotGD\Core\Tools\Model\PermissionAssociationable;
|
||||
|
||||
/**
|
||||
* @Entity
|
||||
* @Table("TestUserAssociations")
|
||||
*/
|
||||
class UserPermissionAssociation {
|
||||
use PermissionAssociationable;
|
||||
|
||||
/**
|
||||
* @Id @ManyToOne(targetEntity="User", inversedBy="permissions")
|
||||
*/
|
||||
private $owner;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
## YAML Template.
|
||||
testUsers:
|
||||
-
|
||||
id: 1
|
||||
name: "Test User 1"
|
||||
testUserAssociations:
|
||||
-
|
||||
owner_id: 1
|
||||
permission_id: "lotgd/core/superuser"
|
||||
permissionState: 1
|
||||
|
||||
permissions:
|
||||
-
|
||||
id: "lotgd/core/superuser"
|
||||
library: "lotgd/core"
|
||||
name: "Superuser. Superseeds all flags."
|
||||
@@ -0,0 +1,6 @@
|
||||
## YAML Template.
|
||||
permissions:
|
||||
-
|
||||
id: "lotgd/core/superuser"
|
||||
library: "lotgd/core"
|
||||
name: "Superuser. Superseeds all flags."
|
||||
Reference in New Issue
Block a user