From da544af2f474bc88be28d38a9d03f9ea4174ccd4 Mon Sep 17 00:00:00 2001 From: Robert Lange <robert.lange@uni-leipzig.de> Date: Fri, 21 Jun 2019 12:59:52 +0200 Subject: [PATCH] refs #15445 [fid] add user role to registration * add select in final registration form * add properties to model and dto * remove dto for permissions, use simple array instead * set permission (group) in ILSAuthenticator * show !multiple! groups in profile * add select in update from * refactor User model => extra property 'role' --- composer.lock | 710 ++++-------------- fid/config/vufind/fid.ini | 2 +- module/fid/src/Controller/UserController.php | 11 +- module/fid/src/FormModel/UserCreateModel.php | 35 + module/fid/src/FormModel/UserUpdateModel.php | 34 + module/fid/src/Service/Client.php | 8 +- .../src/Service/DataTransferObject/User.php | 52 ++ .../fid/src/VuFind/Auth/ILSAuthenticator.php | 6 + themes/fid/languages/fid/de.ini | 6 +- themes/fid/languages/fid/en.ini | 6 +- themes/fid/templates/fid/user/create.phtml | 14 + themes/fid/templates/fid/user/update.phtml | 15 + themes/fid/templates/myresearch/profile.phtml | 10 +- 13 files changed, 325 insertions(+), 584 deletions(-) diff --git a/composer.lock b/composer.lock index 5f19d34a226..95515ffaf37 100644 --- a/composer.lock +++ b/composer.lock @@ -917,21 +917,21 @@ }, { "name": "myclabs/php-enum", - "version": "1.6.6", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/myclabs/php-enum.git", - "reference": "32c4202886c51fbe5cc3a7c34ec5c9a4a790345e" + "reference": "f46847626b8739de22e4ebc6b56010f317d4448d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/php-enum/zipball/32c4202886c51fbe5cc3a7c34ec5c9a4a790345e", - "reference": "32c4202886c51fbe5cc3a7c34ec5c9a4a790345e", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/f46847626b8739de22e4ebc6b56010f317d4448d", + "reference": "f46847626b8739de22e4ebc6b56010f317d4448d", "shasum": "" }, "require": { "ext-json": "*", - "php": ">=5.4" + "php": ">=7.1" }, "require-dev": { "phpunit/phpunit": "^4.8.35|^5.7|^6.0", @@ -958,31 +958,32 @@ "keywords": [ "enum" ], - "time": "2019-02-04T21:18:49+00:00" + "time": "2019-05-05T10:12:03+00:00" }, { "name": "ocramius/package-versions", - "version": "1.2.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "ad8a245decad4897cc6b432743913dad0d69753c" + "reference": "a4d4b60d0e60da2487bd21a2c6ac089f85570dbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/ad8a245decad4897cc6b432743913dad0d69753c", - "reference": "ad8a245decad4897cc6b432743913dad0d69753c", + "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/a4d4b60d0e60da2487bd21a2c6ac089f85570dbb", + "reference": "a4d4b60d0e60da2487bd21a2c6ac089f85570dbb", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0", - "php": "~7.0" + "composer-plugin-api": "^1.0.0", + "php": "^7.1.0" }, "require-dev": { - "composer/composer": "^1.3", + "composer/composer": "^1.6.3", + "doctrine/coding-standard": "^5.0.1", "ext-zip": "*", - "humbug/humbug": "dev-master", - "phpunit/phpunit": "^6.4" + "infection/infection": "^0.7.1", + "phpunit/phpunit": "^7.0.0" }, "type": "composer-plugin", "extra": { @@ -1007,7 +1008,7 @@ } ], "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2017-11-24T11:07:03+00:00" + "time": "2019-02-21T12:16:21+00:00" }, { "name": "ocramius/proxy-manager", @@ -1183,16 +1184,16 @@ }, { "name": "pear/archive_tar", - "version": "1.4.6", + "version": "1.4.7", "source": { "type": "git", "url": "https://github.com/pear/Archive_Tar.git", - "reference": "b8e33f9063a7cd1d20f079014f8382b3a7aee47e" + "reference": "7e48add6f8edc3027dd98ad15964b1a28fd0c845" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/b8e33f9063a7cd1d20f079014f8382b3a7aee47e", - "reference": "b8e33f9063a7cd1d20f079014f8382b3a7aee47e", + "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/7e48add6f8edc3027dd98ad15964b1a28fd0c845", + "reference": "7e48add6f8edc3027dd98ad15964b1a28fd0c845", "shasum": "" }, "require": { @@ -1245,7 +1246,7 @@ "archive", "tar" ], - "time": "2019-02-01T11:10:38+00:00" + "time": "2019-04-08T13:15:55+00:00" }, { "name": "pear/console_getopt", @@ -1466,16 +1467,16 @@ }, { "name": "pear/pear-core-minimal", - "version": "v1.10.7", + "version": "v1.10.9", "source": { "type": "git", "url": "https://github.com/pear/pear-core-minimal.git", - "reference": "19a3e0fcd50492c4357372f623f55f1b144346da" + "reference": "742be8dd68c746a01e4b0a422258e9c9cae1c37f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/19a3e0fcd50492c4357372f623f55f1b144346da", - "reference": "19a3e0fcd50492c4357372f623f55f1b144346da", + "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/742be8dd68c746a01e4b0a422258e9c9cae1c37f", + "reference": "742be8dd68c746a01e4b0a422258e9c9cae1c37f", "shasum": "" }, "require": { @@ -1506,7 +1507,7 @@ } ], "description": "Minimal set of PEAR core files to be used as composer dependency", - "time": "2018-12-05T20:03:52+00:00" + "time": "2019-03-13T18:15:44+00:00" }, { "name": "pear/pear_exception", @@ -2480,7 +2481,7 @@ }, { "name": "symfony/expression-language", - "version": "v3.4.22", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", @@ -2588,16 +2589,16 @@ }, { "name": "symfony/options-resolver", - "version": "v3.4.22", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "0f1cbaee6b356e72c0e025f9a4e9d76a25bf4793" + "reference": "ed3b397f9c07c8ca388b2a1ef744403b4d4ecc44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0f1cbaee6b356e72c0e025f9a4e9d76a25bf4793", - "reference": "0f1cbaee6b356e72c0e025f9a4e9d76a25bf4793", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/ed3b397f9c07c8ca388b2a1ef744403b4d4ecc44", + "reference": "ed3b397f9c07c8ca388b2a1ef744403b4d4ecc44", "shasum": "" }, "require": { @@ -2638,7 +2639,7 @@ "configuration", "options" ], - "time": "2019-01-16T09:39:14+00:00" + "time": "2019-04-10T16:00:48+00:00" }, { "name": "symfony/polyfill-apcu", @@ -2756,16 +2757,16 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.10.0", + "version": "v1.11.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", "shasum": "" }, "require": { @@ -2777,7 +2778,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { @@ -2811,7 +2812,7 @@ "portable", "shim" ], - "time": "2018-09-21T13:07:52+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { "name": "symfony/polyfill-php70", @@ -5822,16 +5823,16 @@ }, { "name": "zendframework/zend-uri", - "version": "2.6.2", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-uri.git", - "reference": "2b0bc8b999b9b417f2c59e14511e669aa4b6286f" + "reference": "b2785cd38fe379a784645449db86f21b7739b1ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/2b0bc8b999b9b417f2c59e14511e669aa4b6286f", - "reference": "2b0bc8b999b9b417f2c59e14511e669aa4b6286f", + "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/b2785cd38fe379a784645449db86f21b7739b1ee", + "reference": "b2785cd38fe379a784645449db86f21b7739b1ee", "shasum": "" }, "require": { @@ -5846,8 +5847,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6.x-dev", - "dev-develop": "2.7.x-dev" + "dev-master": "2.7.x-dev", + "dev-develop": "2.8.x-dev" } }, "autoload": { @@ -5865,7 +5866,7 @@ "uri", "zf" ], - "time": "2019-02-26T21:06:10+00:00" + "time": "2019-02-27T21:39:04+00:00" }, { "name": "zendframework/zend-validator", @@ -6477,16 +6478,16 @@ }, { "name": "composer/semver", - "version": "1.4.2", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" + "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", + "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e", + "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e", "shasum": "" }, "require": { @@ -6535,20 +6536,20 @@ "validation", "versioning" ], - "time": "2016-08-30T16:08:34+00:00" + "time": "2019-03-19T17:25:45+00:00" }, { "name": "composer/xdebug-handler", - "version": "1.3.2", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "d17708133b6c276d6e42ef887a877866b909d892" + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/d17708133b6c276d6e42ef887a877866b909d892", - "reference": "d17708133b6c276d6e42ef887a877866b909d892", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f", + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f", "shasum": "" }, "require": { @@ -6579,325 +6580,38 @@ "Xdebug", "performance" ], - "time": "2019-01-28T20:25:53+00:00" - }, - { - "name": "doctrine/collections", - "version": "v1.5.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/collections.git", - "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", - "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "~0.1@dev", - "phpunit/phpunit": "^5.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-0": { - "Doctrine\\Common\\Collections\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Collections Abstraction library", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "array", - "collections", - "iterator" - ], - "time": "2017-07-22T10:37:32+00:00" - }, - { - "name": "doctrine/common", - "version": "v2.10.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/common.git", - "reference": "30e33f60f64deec87df728c02b107f82cdafad9d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/30e33f60f64deec87df728c02b107f82cdafad9d", - "reference": "30e33f60f64deec87df728c02b107f82cdafad9d", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/inflector": "^1.0", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^1.1", - "doctrine/reflection": "^1.0", - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "^1.0", - "phpunit/phpunit": "^6.3", - "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^4.0.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.10.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", - "homepage": "https://www.doctrine-project.org/projects/common.html", - "keywords": [ - "common", - "doctrine", - "php" - ], - "time": "2018-11-21T01:24:55+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", - "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "conflict": { - "doctrine/common": "<2.9@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^4.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Doctrine Event Manager component", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "eventdispatcher", - "eventmanager" - ], - "time": "2018-06-11T11:59:03+00:00" - }, - { - "name": "doctrine/inflector", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "5527a48b7313d15261292c149e55e26eae771b0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", - "reference": "5527a48b7313d15261292c149e55e26eae771b0a", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" - ], - "time": "2018-01-09T20:05:19+00:00" + "time": "2019-05-27T17:52:04+00:00" }, { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "a2c590166b2133a4633738648b6b064edae0814a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", + "reference": "a2c590166b2133a4633738648b6b064edae0814a", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", + "doctrine/coding-standard": "^6.0", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -6917,169 +6631,12 @@ } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" - }, - { - "name": "doctrine/persistence", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/persistence.git", - "reference": "c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38", - "reference": "c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/reflection": "^1.0", - "php": "^7.1" - }, - "conflict": { - "doctrine/common": "<2.10@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^5.0", - "phpstan/phpstan": "^0.8", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", - "homepage": "https://doctrine-project.org/projects/persistence.html", - "keywords": [ - "mapper", - "object", - "odm", - "orm", - "persistence" - ], - "time": "2018-11-21T00:33:13+00:00" - }, - { - "name": "doctrine/reflection", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/reflection.git", - "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/reflection/zipball/02538d3f95e88eb397a5f86274deb2c6175c2ab6", - "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "ext-tokenizer": "*", - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "^4.0", - "doctrine/common": "^2.8", - "phpstan/phpstan": "^0.9.2", - "phpstan/phpstan-phpunit": "^0.9.4", - "phpunit/phpunit": "^7.0", - "squizlabs/php_codesniffer": "^3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Doctrine Reflection component", - "homepage": "https://www.doctrine-project.org/projects/reflection.html", - "keywords": [ - "reflection" - ], - "time": "2018-06-14T14:45:07+00:00" + "time": "2019-03-17T17:37:11+00:00" }, { "name": "friendsofphp/php-cs-fixer", @@ -7238,25 +6795,28 @@ }, { "name": "myclabs/deep-copy", - "version": "1.7.0", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", + "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { @@ -7279,7 +6839,7 @@ "object", "object graph" ], - "time": "2017-10-19T19:58:43+00:00" + "time": "2019-04-07T13:18:21+00:00" }, { "name": "pdepend/pdepend", @@ -7591,16 +7151,16 @@ }, { "name": "phpspec/prophecy", - "version": "1.8.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76", + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76", "shasum": "" }, "require": { @@ -7621,8 +7181,8 @@ } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -7650,7 +7210,7 @@ "spy", "stub" ], - "time": "2018-08-05T17:53:17+00:00" + "time": "2019-06-13T12:50:23+00:00" }, { "name": "phpunit/php-code-coverage", @@ -8746,16 +8306,16 @@ }, { "name": "symfony/config", - "version": "v3.4.22", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "c9bc510c217075d42d4a927e285917d0c2001cf4" + "reference": "177a276c01575253c95cefe0866e3d1b57637fe0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/c9bc510c217075d42d4a927e285917d0c2001cf4", - "reference": "c9bc510c217075d42d4a927e285917d0c2001cf4", + "url": "https://api.github.com/repos/symfony/config/zipball/177a276c01575253c95cefe0866e3d1b57637fe0", + "reference": "177a276c01575253c95cefe0866e3d1b57637fe0", "shasum": "" }, "require": { @@ -8806,20 +8366,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2019-01-30T11:33:42+00:00" + "time": "2019-02-23T15:06:07+00:00" }, { "name": "symfony/console", - "version": "v3.4.23", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "71ce77f37af0c5ffb9590e43cc4f70e426945c5e" + "reference": "8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/71ce77f37af0c5ffb9590e43cc4f70e426945c5e", - "reference": "71ce77f37af0c5ffb9590e43cc4f70e426945c5e", + "url": "https://api.github.com/repos/symfony/console/zipball/8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6", + "reference": "8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6", "shasum": "" }, "require": { @@ -8878,11 +8438,11 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:06:07+00:00" + "time": "2019-05-09T08:42:51+00:00" }, { "name": "symfony/css-selector", - "version": "v3.4.22", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -8935,16 +8495,16 @@ }, { "name": "symfony/debug", - "version": "v3.4.23", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "8d8a9e877b3fcdc50ddecf8dcea146059753f782" + "reference": "671fc55bd14800668b1d0a3708c3714940e30a8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/8d8a9e877b3fcdc50ddecf8dcea146059753f782", - "reference": "8d8a9e877b3fcdc50ddecf8dcea146059753f782", + "url": "https://api.github.com/repos/symfony/debug/zipball/671fc55bd14800668b1d0a3708c3714940e30a8c", + "reference": "671fc55bd14800668b1d0a3708c3714940e30a8c", "shasum": "" }, "require": { @@ -8987,20 +8547,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2019-02-24T15:45:11+00:00" + "time": "2019-05-18T13:32:47+00:00" }, { "name": "symfony/dependency-injection", - "version": "v3.4.22", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "b514f5b765cf3e4a56e9d8ebacf14b117f7a0ee1" + "reference": "8f2a0452f086a66f6d6cf53a432867b575887768" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b514f5b765cf3e4a56e9d8ebacf14b117f7a0ee1", - "reference": "b514f5b765cf3e4a56e9d8ebacf14b117f7a0ee1", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8f2a0452f086a66f6d6cf53a432867b575887768", + "reference": "8f2a0452f086a66f6d6cf53a432867b575887768", "shasum": "" }, "require": { @@ -9058,20 +8618,20 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2019-01-30T17:48:51+00:00" + "time": "2019-05-19T14:11:39+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v3.4.22", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "ed5be1663fa66623b3a7004d5d51a14c4045399b" + "reference": "a088aafcefb4eef2520a290ed82e4374092a6dff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ed5be1663fa66623b3a7004d5d51a14c4045399b", - "reference": "ed5be1663fa66623b3a7004d5d51a14c4045399b", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a088aafcefb4eef2520a290ed82e4374092a6dff", + "reference": "a088aafcefb4eef2520a290ed82e4374092a6dff", "shasum": "" }, "require": { @@ -9121,11 +8681,11 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2019-01-16T13:27:11+00:00" + "time": "2019-04-02T08:51:52+00:00" }, { "name": "symfony/filesystem", - "version": "v3.4.23", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", @@ -9175,16 +8735,16 @@ }, { "name": "symfony/finder", - "version": "v3.4.23", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "fcdde4aa38f48190ce70d782c166f23930084f9b" + "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/fcdde4aa38f48190ce70d782c166f23930084f9b", - "reference": "fcdde4aa38f48190ce70d782c166f23930084f9b", + "url": "https://api.github.com/repos/symfony/finder/zipball/fa5d962a71f2169dfe1cbae217fa5a2799859f6c", + "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c", "shasum": "" }, "require": { @@ -9220,20 +8780,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2019-02-22T14:44:53+00:00" + "time": "2019-05-24T12:25:55+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.10.0", + "version": "v1.11.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631" + "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", - "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c", + "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c", "shasum": "" }, "require": { @@ -9242,7 +8802,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { @@ -9275,20 +8835,20 @@ "portable", "shim" ], - "time": "2018-09-21T13:07:52+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { "name": "symfony/process", - "version": "v3.4.23", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e" + "reference": "afe411c2a6084f25cff55a01d0d4e1474c97ff13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/009f8dda80930e89e8344a4e310b08f9ff07dd2e", - "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e", + "url": "https://api.github.com/repos/symfony/process/zipball/afe411c2a6084f25cff55a01d0d4e1474c97ff13", + "reference": "afe411c2a6084f25cff55a01d0d4e1474c97ff13", "shasum": "" }, "require": { @@ -9324,11 +8884,11 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2019-01-16T13:27:11+00:00" + "time": "2019-05-22T12:54:11+00:00" }, { "name": "symfony/stopwatch", - "version": "v3.4.22", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", @@ -9417,16 +8977,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.1.0", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", "shasum": "" }, "require": { @@ -9453,7 +9013,7 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" + "time": "2019-06-13T22:48:21+00:00" } ], "aliases": [], diff --git a/fid/config/vufind/fid.ini b/fid/config/vufind/fid.ini index 1307453b84b..7a1f178f324 100644 --- a/fid/config/vufind/fid.ini +++ b/fid/config/vufind/fid.ini @@ -1,2 +1,2 @@ [Client] -baseUrl = http://172.18.113.133/bbi-alpha.1 \ No newline at end of file +baseUrl = http://172.18.113.133/bbi-alpha.3 \ No newline at end of file diff --git a/module/fid/src/Controller/UserController.php b/module/fid/src/Controller/UserController.php index c726f461f9c..d5db3239890 100644 --- a/module/fid/src/Controller/UserController.php +++ b/module/fid/src/Controller/UserController.php @@ -30,6 +30,7 @@ use fid\FormModel\UserUpdateModel; use fid\Service\Client; use fid\Service\ClientException; use fid\Service\DataTransferObject\Library; +use fid\Service\DataTransferObject\Permission; use fid\Service\DataTransferObject\User; use Symfony\Component\Serializer\SerializerAwareTrait; use Symfony\Component\Serializer\SerializerInterface; @@ -47,6 +48,7 @@ use Zend\View\Model\ViewModel; class UserController extends AbstractBase { use SerializerAwareTrait; + const STATUS_REQUESTED = 'requested'; /** * @var Authenticator @@ -343,6 +345,7 @@ class UserController extends AbstractBase $user->setUsername($username = $model->getUsername()); $user->setPassword($password = $model->getPassword()); $user->setHomeLibrary($model->getHomeLibrary()); + $user->setPermissions([$model->getRole() => self::STATUS_REQUESTED]); $user->setSalutation($model->getSalutation()); $user->setAcademicTitle($model->getAcademicTitle()); $user->setFirstname($model->getFirstname()); @@ -392,11 +395,17 @@ class UserController extends AbstractBase $user->setYearOfBirth($model->getYearOfBirth()); $user->setCollege($model->getCollege()); $user->setJobTitle($model->getJobTitle()); + $user->setPermissions([$model->getRole() => self::STATUS_REQUESTED]); $this->client->requestUserUpdate($user); $message = $this->translate('fid::user_update_success'); $messenger->addSuccessMessage($message); } catch (ClientException $exception) { - $message = $this->translate('fid::user_update_error'); + if (in_array($exception->getCode(), [403])) { + $message = $this->translate('fid::user_update_error_' . $exception->getCode()); + } else { + $message = $this->translate('fid::user_update_error'); + } + $messenger->addErrorMessage($message); } diff --git a/module/fid/src/FormModel/UserCreateModel.php b/module/fid/src/FormModel/UserCreateModel.php index ab2ae8adbd0..adc674bace6 100644 --- a/module/fid/src/FormModel/UserCreateModel.php +++ b/module/fid/src/FormModel/UserCreateModel.php @@ -155,6 +155,24 @@ class UserCreateModel */ protected $homeLibrary; + /** + * @var string + * @Annotation\Type("Zend\Form\Element\Select") + * @Annotation\Required(false) + * @Annotation\Validator({ + * "name": "StringLength", + * "options": {"min":1, "max":255} + * }) + * @Annotation\Options({ + * "label": "label_access_level", + * "disable_inarray_validator": true + * }) + * @Annotation\Attributes({ + * "options":{"limited_access":"label_access_level_limited_access","full_access":"label_access_level_full_access"} + * }) + */ + protected $role; + /** * @var int|null * @Annotation\Type("Zend\Form\Element\Number") @@ -318,6 +336,23 @@ class UserCreateModel $this->yearOfBirth = $yearOfBirth; } + + /** + * @return string + */ + public function getRole(): string + { + return $this->role; + } + + /** + * @param string $role + */ + public function setRole(string $role): void + { + $this->role = $role; + } + /** * @return bool */ diff --git a/module/fid/src/FormModel/UserUpdateModel.php b/module/fid/src/FormModel/UserUpdateModel.php index 28de1a1ef8a..caa1c518cfd 100644 --- a/module/fid/src/FormModel/UserUpdateModel.php +++ b/module/fid/src/FormModel/UserUpdateModel.php @@ -135,6 +135,24 @@ class UserUpdateModel */ protected $college; + /** + * @var string + * @Annotation\Type("Zend\Form\Element\Select") + * @Annotation\Required(false) + * @Annotation\Validator({ + * "name": "StringLength", + * "options": {"min":1, "max":255} + * }) + * @Annotation\Options({ + * "label": "label_access_level", + * "disable_inarray_validator": true + * }) + * @Annotation\Attributes({ + * "options":{"limited_access":"label_access_level_limited_access","full_access":"label_access_level_full_access"} + * }) + */ + protected $role; + /** * @var string|null * @Annotation\Type("Zend\Form\Element\Submit") @@ -270,6 +288,22 @@ class UserUpdateModel $this->college = $college; } + /** + * @return string + */ + public function getRole(): string + { + return $this->role; + } + + /** + * @param string $role + */ + public function setRole(string $role): void + { + $this->role = $role; + } + /** * @return string|null */ diff --git a/module/fid/src/Service/Client.php b/module/fid/src/Service/Client.php index 9211f4e79a8..08f42e33347 100644 --- a/module/fid/src/Service/Client.php +++ b/module/fid/src/Service/Client.php @@ -264,8 +264,12 @@ class Client } /** @var User $user */ - $user = $this->serializer->deserialize((string)$response->getBody(), - User::class, 'json', ['groups' => ['user:details:response']]); + $user = $this->serializer->deserialize( + (string)$response->getBody(), + User::class, + 'json', + ['groups' => ['user:details:response']] + ); return $this->session['user'] = $user; } diff --git a/module/fid/src/Service/DataTransferObject/User.php b/module/fid/src/Service/DataTransferObject/User.php index 946aeaee983..052ad1b5735 100644 --- a/module/fid/src/Service/DataTransferObject/User.php +++ b/module/fid/src/Service/DataTransferObject/User.php @@ -165,6 +165,23 @@ class User */ protected $addresses = []; + /** + * @var string|null + */ + protected $role; + + /** + * @var array[] + * @Groups({ + * "user:details:response", + * "user:creation:request", + * "user:creation:response", + * "user:update:request", + * "user:update:response" + * }) + */ + protected $permissions = []; + /** * @return string|null */ @@ -361,4 +378,39 @@ class User $address->setUser($this); } } + + /** + * @return string|null + */ + public function getRole(): ?string + { + return $this->role ?? (count($this->permissions) > 0 ? array_keys($this->permissions)[0] : null); + } + + /** + * @param string|null $role + */ + public function setRole(?string $role): void + { + $this->role = $role; + } + + /** + * @return array[] + */ + public function getPermissions(): array + { + return $this->permissions; + } + + /** + * @param array[] $permissions + */ + public function setPermissions(array $permissions): void + { + $this->permissions = $permissions; + if (count($permissions) > 0) { + $this->setRole(array_keys($permissions)[0]); + } + } } diff --git a/module/fid/src/VuFind/Auth/ILSAuthenticator.php b/module/fid/src/VuFind/Auth/ILSAuthenticator.php index 912da0374f3..7a132ae64cb 100644 --- a/module/fid/src/VuFind/Auth/ILSAuthenticator.php +++ b/module/fid/src/VuFind/Auth/ILSAuthenticator.php @@ -60,6 +60,12 @@ class ILSAuthenticator 'email' => $user->getUsername() ]; + if (($permission = $user->getPermissions()) && count($permission) > 0) { + $data['group'] = array_keys($permission); + } else { + $data['group'] = ['unknown']; + } + if ($address = $user->getAddresses()[0] ?? null) { $data['address1'] = implode(' ', array_filter([ $address->getLine1() . ',', diff --git a/themes/fid/languages/fid/de.ini b/themes/fid/languages/fid/de.ini index e8d9cff11b8..dd3b2170c7e 100644 --- a/themes/fid/languages/fid/de.ini +++ b/themes/fid/languages/fid/de.ini @@ -22,8 +22,9 @@ label_college = "Hochschule" label_password = "Passwort" label_password_confirmation = "Passwort wiederholen" label_access_level = "Ich gehöre folgender Nutzergruppe an" -label_access_level_default = "HochschullehrerInnen, wissenschaftliche MitarbeiterInnen, Mitglied einer Fachgesellschaft, DoktorandInnen, StipendiatInnen oder externe WissenschaftlerInnen (z. B. Lehrbeauftragte)" -label_access_level_other = "Studierende, Sonstige" +label_access_level_full_access = "HochschullehrerInnen, wissenschaftliche MitarbeiterInnen, Mitglied einer Fachgesellschaft, DoktorandInnen, StipendiatInnen oder externe WissenschaftlerInnen (z. B. Lehrbeauftragte)" +label_access_level_limited_access = "Studierende, Sonstige" +label_access_level_unknown = "Unbekannte oder unbestätigte Gruppe(n)." label_delivery_address = "Privatadresse als Lieferadresse verwenden" Business = "Dienstadresse" @@ -56,6 +57,7 @@ user_create_error_autologon = "Vielen Dank. Ihre Registrierung war erfolgreich. user_create_success = "Vielen Dank für Ihre Registrierung." user_update_error = "Es ist ein unerwarteter Fehler beim Aktualisieren Ihres Profils aufgetreten." +user_update_error_403 = "Es ist ein Fehler beim Aktualisieren Ihres Profils aufgetreten: Keine Berechtigung." user_update_error_expired = "Bitte loggen Sie sich ein, um Ihr Profil zu editieren." user_update_success = "Ihr Profil wurde erfolgreich aktualisiert." diff --git a/themes/fid/languages/fid/en.ini b/themes/fid/languages/fid/en.ini index 865c3ab2300..28e7cdb4c49 100644 --- a/themes/fid/languages/fid/en.ini +++ b/themes/fid/languages/fid/en.ini @@ -22,8 +22,9 @@ label_year_of_birth = "Year of birth (YYYY)" label_job_title = "Occupation" label_college = "University" label_access_level = "Please select your membership level" -label_access_level_default = "Professor, Research Associate/Assistant, Member of an Academic Association, PhD Student (also Scholarships), (Visiting) Lecturer" -label_access_level_other = "Student, Other" +label_access_level_full_access = "Professor, Research Associate/Assistant, Member of an Academic Association, PhD Student (also Scholarships), (Visiting) Lecturer" +label_access_level_limited_access = "Student, Other" +label_access_level_unknown = "Unknown or ungranted user group(s)." label_delivery_address = "Use the following address for deliveries" Business = "Office Address" @@ -57,6 +58,7 @@ user_create_success = "We have received your registration." user_update_success = "Your profile has been successfully updated." user_update_error = "An unexpected error has occurred when updating your profile." +user_update_error_403 = "An error has occurred when updating your profile: Forbidden." user_update_error_expired = "Please log in to edit your profile." password_reset_error = "An unexpected error has occurred." diff --git a/themes/fid/templates/fid/user/create.phtml b/themes/fid/templates/fid/user/create.phtml index 31120952765..4566fb0f27d 100644 --- a/themes/fid/templates/fid/user/create.phtml +++ b/themes/fid/templates/fid/user/create.phtml @@ -221,6 +221,20 @@ $elemJobTitle->setAttributes(['class' => 'form-control']); <?= $this->formElementErrors($elemJobTitle) ?> </div> +<? /* role (user group) */ ?> +<?php +/** @var Element\Select $role */ +$role = $form->get('role'); +$role->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']); +$role->setAttributes(['class' => 'inline col-sm-6']); +// $role->setValueOptions($this->$roles); // TODO Api-Call to get $roles for fid instance +?> +<div class="form-group"> + <?= $this->formLabel($role) ?> + <?= $this->formSelect($role) ?> + <?= $this->formElementErrors($role) ?> +</div> + <? /* eula privacy policy */ ?> <?php /** @var Checkbox $elemEulaAccepted */ diff --git a/themes/fid/templates/fid/user/update.phtml b/themes/fid/templates/fid/user/update.phtml index 9b2c8b78fe5..f939d2c7cb2 100644 --- a/themes/fid/templates/fid/user/update.phtml +++ b/themes/fid/templates/fid/user/update.phtml @@ -182,6 +182,21 @@ $elemJobTitle->setValue($user->getJobTitle()); <?= $this->formElementErrors($elemJobTitle) ?> </div> +<? /* role (user group) */ ?> +<?php +/** @var Element\Select $role */ +$role = $form->get('role'); +$role->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']); +$role->setAttributes(['class' => 'inline col-sm-6']); +$role->setValue($user->getRole()); +// $role->setValueOptions($this->$roles); // TODO Api-Call to get $roles for fid instance +?> +<div class="form-group"> + <?= $this->formLabel($role) ?> + <?= $this->formSelect($role) ?> + <?= $this->formElementErrors($role) ?> +</div> + <? /* submit button */ ?> <?php /** @var Submit $elemSubmit */ diff --git a/themes/fid/templates/myresearch/profile.phtml b/themes/fid/templates/myresearch/profile.phtml index 71e70016573..e2de3d26073 100644 --- a/themes/fid/templates/myresearch/profile.phtml +++ b/themes/fid/templates/myresearch/profile.phtml @@ -16,8 +16,16 @@ $arrTemplate = '<tr><th>%%LABEL%%:</th><td> %%VALUE%%</td></tr>'; <?php if (is_array($this->profile)): ?> <table class="table table-striped"> + <?php + foreach ($this->profile['group'] as $group) { + $groups[] = $this->translate('fid::label_access_level_' . $group); + } + $profile['group'] = implode (', ', $groups); + ?> + <?=$this->renderArray( - $arrTemplate, $this->profile, + $arrTemplate, + $profile, [ $this->transEsc('First Name') => 'firstname', $this->transEsc('Last Name') => 'lastname', -- GitLab