From 5df7397b4276a8f23e5537b7ba84394f4238dbed Mon Sep 17 00:00:00 2001
From: Peter Zhang
Date: Fri, 8 Jul 2022 23:24:54 +1200
Subject: update invite user (#19366)
* update invite
update invite
* update tests and VUE error
update tests and VUE error
* built vue files
* update ui
update ui
* update vue
update vue
* update vue
update vue
* built vue files
* Update UsersManager_spec.js
update tests
* update clean
update clean
* Update UsersManager_spec.js
update success
* Update UsersManager_spec.js
remove popup error
* update tests order
update tests order
* Update UsersManager_next_click.png
updateui
* revert screenshot
revert screenshot
* delete if user if declined
delete use if declined
add privacy
split templated into 3 parts
* remove decline
remove decline
* add invited by column
add invited by column
* Revert "add invited by column"
This reverts commit e2358cb493684dc26fdf9a436d00a29981365861.
* Update UserRepository.php
add view user display
* add email tests and update admin email
add email tests and update admin email
* update php cs
update php cs
* add expire task and default setting
add expire task and default setting
* add api tests
add api tests
* add filter
add filter
* update ui tests
update ui tests
* built vue files
* update tests
update tests
* update signup and tests
update signup and tests
* update tests
update tests
* update screenshots
update screenshots
* update screenshots
update screenshots
* update ui
update ui
* update typo
update typo
* built vue files
* Update core/Updates/4.12.0-b1.php
Co-authored-by: Ben Burgess <88810029+bx80@users.noreply.github.com>
* Update plugins/UsersManager/API.php
Co-authored-by: Ben Burgess <88810029+bx80@users.noreply.github.com>
* Update plugins/UsersManager/UsersManager.php
Co-authored-by: Ben Burgess <88810029+bx80@users.noreply.github.com>
* Update plugins/UsersManager/lang/en.json
Co-authored-by: Ben Burgess <88810029+bx80@users.noreply.github.com>
* Update config/global.ini.php
Co-authored-by: Ben Burgess <88810029+bx80@users.noreply.github.com>
* update email date
update email date
* update typo
update typo
* update UI
update UI
* Updated UI screenshot
* Update plugins/Login/lang/en.json
Co-authored-by: Stefan Giehl
* Update plugins/Login/templates/invitationDecline.twig
Co-authored-by: Stefan Giehl
* update some feedbacks
update some feedbacks
* built vue files
* update feedbacks
update feedbacks
* update filter
update filter
* pending your can't reset password
pending your can't reset password
* fix php cs
fix php cs
* update column
update column
* built vue files
* set up terms in tests
set up terms in tests
* Update PendingUsers.php
setup website
* update tests and broken template
update tests
* update password
update password
* update screenshots
update screenshots
* add delete to admin
add delete to admin
* update invite success notification
update invite success notification
* add tests
add tests
* built vue files
* update tests
update tests
* update UI and checkbox
update UI and checkbox
* Update Invite_spec.js
show error screen
* update tests
update tests
* update lang
update lang
* Update OmniFixture-dump.sql
revert OmniFixture
* update wording
update wording
* update version
update version
* fix change column
fix change column
* Update UsersManagerTest.php
update tests
* Update Model.php
update tests
* Update Model.php
update tests
* remove fixes
remove fixes
* Revert "remove fixes"
This reverts commit f8fe33706513a32bf3386bc6b52800d68ec58562.
* update tests
update tests
* revert password reset
revert password reset
* update tests
update tests
* update resend
update resend
* update tests
update tests
* Update PasswordResetter.php
update tests
* correct pending user from last time
correct pending user from last time
* apply some fixes /improvements
* Apply suggestions from code review
Co-authored-by: Ben Burgess <88810029+bx80@users.noreply.github.com>
* Allow composer plugins for dev dependency codesniffer to fix travis builds. (#19468)
Co-authored-by: peterhashair
Co-authored-by: Ben Burgess <88810029+bx80@users.noreply.github.com>
Co-authored-by: Ben
Co-authored-by: Stefan Giehl
Co-authored-by: dizzy
---
plugins/UsersManager/API.php | 316 +++++----
plugins/UsersManager/Controller.php | 7 +
plugins/UsersManager/Emails/UserInviteEmail.php | 44 +-
plugins/UsersManager/Model.php | 100 ++-
plugins/UsersManager/Repository/UserRepository.php | 197 +++---
plugins/UsersManager/Sql/UserTableFilter.php | 32 +-
plugins/UsersManager/Tasks.php | 23 +-
plugins/UsersManager/UserAccessFilter.php | 3 +-
plugins/UsersManager/UsersManager.php | 34 +-
plugins/UsersManager/Validators/Email.php | 26 +-
plugins/UsersManager/Validators/Login.php | 22 +-
plugins/UsersManager/lang/en.json | 12 +-
plugins/UsersManager/templates/index.twig | 1 +
plugins/UsersManager/tests/Fixtures/ManyUsers.php | 90 +--
plugins/UsersManager/tests/Integration/APITest.php | 747 ++++++++++++++++-----
.../tests/Integration/UserInviteTest.php | 102 ++-
.../tests/Integration/UsersManagerTest.php | 273 ++++----
plugins/UsersManager/tests/System/ApiTest.php | 13 +-
...Manager.getUser_login1_when_superuseraccess.xml | 4 +
...sersManager.getUser_login2_when_adminaccess.xml | 1 +
...Manager.getUser_login2_when_superuseraccess.xml | 4 +
...Manager.getUser_login4_when_superuseraccess.xml | 4 +
...UsersManager.getUser_login4_when_viewaccess.xml | 1 +
...Manager.getUser_login6_when_superuseraccess.xml | 4 +
...sersManager.getUsersLogin__when_adminaccess.xml | 1 +
...Manager.getUsersLogin__when_superuseraccess.xml | 1 +
...WithSiteAccess_3_admin_when_superuseraccess.xml | 8 +
...t___UsersManager.getUsers__when_adminaccess.xml | 16 +-
...UsersManager.getUsers__when_superuseraccess.xml | 84 ++-
plugins/UsersManager/tests/UI/UsersManager_spec.js | 32 +-
.../UsersManager_add_new_user_form.png | 4 +-
.../UsersManager_admin_view_admin_add_user.png | 4 +-
...sManager_admin_view_admin_add_user_by_email.png | 4 +-
...sManager_admin_view_admin_add_user_by_login.png | 4 +-
...anager_admin_view_admin_add_user_not_exists.png | 4 +-
.../UsersManager_admin_view_admin_load.png | 4 +-
.../UsersManager_all_rows_deselected.png | 4 +-
.../UsersManager_all_rows_in_search.png | 4 +-
.../UsersManager_all_rows_selected.png | 4 +-
.../UsersManager_bulk_remove_access.png | 4 +-
.../UsersManager_bulk_set_access.png | 4 +-
.../UsersManager_bulk_set_access_confirm.png | 4 +-
.../UsersManager_delete_bulk_access.png | 4 +-
.../UsersManager_delete_single.png | 4 +-
...rsManager_edit_user_basic_asks_confirmation.png | 4 +-
...er_edit_user_basic_confirmed_wrong_password.png | 4 +-
.../UsersManager_edit_user_form.png | 4 +-
.../expected-screenshots/UsersManager_filters.png | 4 +-
.../UI/expected-screenshots/UsersManager_load.png | 4 +-
.../UsersManager_manage_users_back.png | 4 +-
.../UsersManager_next_click.png | 4 +-
...UsersManager_permissions_all_rows_in_search.png | 4 +-
.../UsersManager_permissions_edit.png | 4 +-
.../expected-screenshots/UsersManager_previous.png | 4 +-
.../UsersManager_resend_popup.png | 4 +-
.../UsersManager_resend_success.png | 3 +
.../expected-screenshots/UsersManager_role_for.png | 4 +-
.../UsersManager_rows_selected.png | 4 +-
.../UsersManager_user_created.png | 4 +-
plugins/UsersManager/vue/dist/UsersManager.umd.js | 567 ++++++++--------
.../UsersManager/vue/dist/UsersManager.umd.min.js | 20 +-
.../vue/src/PagedUsersList/PagedUsersList.less | 13 +-
.../vue/src/PagedUsersList/PagedUsersList.vue | 480 +++++++------
.../vue/src/PagedUsersList/SearchParams.ts | 1 +
plugins/UsersManager/vue/src/User.ts | 2 +-
.../vue/src/UserEditForm/UserEditForm.vue | 28 +-
.../vue/src/UsersManager/UsersManager.adapter.ts | 3 +
.../vue/src/UsersManager/UsersManager.vue | 273 ++++----
68 files changed, 2351 insertions(+), 1353 deletions(-)
create mode 100644 plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_resend_success.png
(limited to 'plugins/UsersManager')
diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php
index 6eb5e6b9b7..9accb8f35c 100644
--- a/plugins/UsersManager/API.php
+++ b/plugins/UsersManager/API.php
@@ -1,4 +1,5 @@
model = $model;
$this->userFilter = $filter;
@@ -131,7 +133,6 @@ class API extends \Piwik\Plugin\API
throw new Exception('UsersManager_API must inherit API');
}
self::$instance = $instance;
-
} catch (Exception $e) {
self::$instance = StaticContainer::get('Piwik\Plugins\UsersManager\API');
StaticContainer::getContainer()->set('UsersManager_API', self::$instance);
@@ -149,15 +150,15 @@ class API extends \Piwik\Plugin\API
{
Piwik::checkUserHasSomeAdminAccess();
- $response = array();
+ $response = [];
foreach ($this->roleProvider->getAllRoles() as $role) {
- $response[] = array(
+ $response[] = [
'id' => $role->getId(),
'name' => $role->getName(),
'description' => $role->getDescription(),
'helpUrl' => $role->getHelpUrl(),
- );
+ ];
}
return $response;
@@ -171,17 +172,17 @@ class API extends \Piwik\Plugin\API
{
Piwik::checkUserHasSomeAdminAccess();
- $response = array();
+ $response = [];
foreach ($this->capabilityProvider->getAllCapabilities() as $capability) {
- $response[] = array(
+ $response[] = [
'id' => $capability->getId(),
'name' => $capability->getName(),
'description' => $capability->getDescription(),
'helpUrl' => $capability->getHelpUrl(),
'includedInRoles' => $capability->getIncludedInRoles(),
'category' => $capability->getCategory(),
- );
+ ];
}
return $response;
@@ -272,7 +273,7 @@ class API extends \Piwik\Plugin\API
{
Piwik::checkUserHasSuperUserAccess();
- $userPreferences = array();
+ $userPreferences = [];
foreach ($preferenceNames as $preferenceName) {
$optionNameMatchAllUsers = $this->getPreferenceId('%', $preferenceName);
$preferences = Option::getLike($optionNameMatchAllUsers);
@@ -292,16 +293,18 @@ class API extends \Piwik\Plugin\API
if (false !== strpos($preference, self::OPTION_NAME_PREFERENCE_SEPARATOR)) {
throw new Exception("Preference name cannot contain underscores.");
}
- $names = array(
+ $names = [
self::PREFERENCE_DEFAULT_REPORT,
self::PREFERENCE_DEFAULT_REPORT_DATE,
'isLDAPUser', // used in loginldap
'hideSegmentDefinitionChangeMessage',// used in JS
- );
+ ];
$customPreferences = StaticContainer::get('usersmanager.user_preference_names');
- if (!in_array($preference, $names, true)
- && !in_array($preference, $customPreferences, true)) {
+ if (
+ !in_array($preference, $names, true)
+ && !in_array($preference, $customPreferences, true)
+ ) {
throw new Exception('Not supported preference name: ' . $preference);
}
return $login . self::OPTION_NAME_PREFERENCE_SEPARATOR . $preference;
@@ -339,7 +342,7 @@ class API extends \Piwik\Plugin\API
* Filtering by 'superuser' is only allowed for other superusers.
* @return array
*/
- public function getUsersPlusRole($idSite, $limit = null, $offset = 0, $filter_search = null, $filter_access = null)
+ public function getUsersPlusRole($idSite, $limit = null, $offset = 0, $filter_search = null, $filter_access = null, $filter_status = null)
{
if (!$this->isUserHasAdminAccessTo($idSite)) {
// if the user is not an admin to $idSite, they can only see their own user
@@ -371,10 +374,16 @@ class API extends \Piwik\Plugin\API
// access is managed by another plugin, and the current user cannot manage any user with UsersManager
Common::sendHeader('X-Matomo-Total-Results: 0');
return [];
-
} else {
- [$users, $totalResults] = $this->model->getUsersWithRole($idSite, $limit, $offset, $filter_search,
- $filter_access, $loginsToLimit);
+ [$users, $totalResults] = $this->model->getUsersWithRole(
+ $idSite,
+ $limit,
+ $offset,
+ $filter_search,
+ $filter_access,
+ $filter_status,
+ $loginsToLimit
+ );
foreach ($users as &$user) {
$user['superuser_access'] = $user['superuser_access'] == 1;
@@ -419,7 +428,7 @@ class API extends \Piwik\Plugin\API
throw new \Exception('Parameter userLogins needs to be a string containing a comma separated list of users');
}
- $logins = array();
+ $logins = [];
if (!empty($userLogins)) {
$logins = explode(',', $userLogins);
@@ -428,7 +437,6 @@ class API extends \Piwik\Plugin\API
$users = $this->model->getUsers($logins);
$users = $this->userFilter->filterUsers($users);
return $this->userRepository->enrichUsers($users);
-
}
/**
@@ -484,8 +492,10 @@ class API extends \Piwik\Plugin\API
foreach ($access as $entry) {
if (!$this->isValidAccessType($entry)) {
- throw new Exception(Piwik::translate("UsersManager_ExceptionAccessValues",
- [implode(", ", $this->getAllRolesAndCapabilities()), $entry]));
+ throw new Exception(Piwik::translate(
+ "UsersManager_ExceptionAccessValues",
+ [implode(", ", $this->getAllRolesAndCapabilities()), $entry]
+ ));
}
}
}
@@ -541,7 +551,7 @@ class API extends \Piwik\Plugin\API
$logins = $this->model->getUsersLoginWithSiteAccess($idSite, $access);
if (empty($logins)) {
- return array();
+ return [];
}
$logins = $this->userFilter->filterLogins($logins);
@@ -572,14 +582,14 @@ class API extends \Piwik\Plugin\API
$this->checkUserExists($userLogin);
// Super users have 'admin' access for every site
if (Piwik::hasTheUserSuperUserAccess($userLogin)) {
- $return = array();
+ $return = [];
$siteManagerModel = new \Piwik\Plugins\SitesManager\Model();
$sites = $siteManagerModel->getAllSites();
foreach ($sites as $site) {
- $return[] = array(
+ $return[] = [
'site' => $site['idsite'],
'access' => 'admin'
- );
+ ];
}
return $return;
}
@@ -607,11 +617,11 @@ class API extends \Piwik\Plugin\API
* @throws Exception
*/
public function getSitesAccessForUser(
- $userLogin,
- $limit = null,
- $offset = 0,
- $filter_search = null,
- $filter_access = null
+ $userLogin,
+ $limit = null,
+ $offset = 0,
+ $filter_search = null,
+ $filter_access = null
) {
Piwik::checkUserHasSomeAdminAccess();
$this->checkUserExists($userLogin);
@@ -628,8 +638,14 @@ class API extends \Piwik\Plugin\API
}
}
- [$sites, $totalResults] = $this->model->getSitesAccessFromUserWithFilters($userLogin, $limit, $offset,
- $filter_search, $filter_access, $idSites);
+ [$sites, $totalResults] = $this->model->getSitesAccessFromUserWithFilters(
+ $userLogin,
+ $limit,
+ $offset,
+ $filter_search,
+ $filter_access,
+ $idSites
+ );
foreach ($sites as &$siteAccess) {
[
$siteAccess['role'],
@@ -662,9 +678,12 @@ class API extends \Piwik\Plugin\API
$user = $this->model->getUser($userLogin);
+ if (empty($user) || !is_array($user)) {
+ return [];
+ }
+
$user = $this->userFilter->filterUser($user);
return $this->userRepository->enrichUser($user);
-
}
/**
@@ -681,6 +700,10 @@ class API extends \Piwik\Plugin\API
$user = $this->model->getUserByEmail($userEmail);
+ if (empty($user) || !is_array($user)) {
+ return [];
+ }
+
$user = $this->userFilter->filterUser($user);
return $this->userRepository->enrichUser($user);
}
@@ -701,24 +724,54 @@ class API extends \Piwik\Plugin\API
*/
public function addUser($userLogin, $password, $email, $_isPasswordHashed = false, $initialIdSite = null)
{
+ Piwik::checkUserHasSomeAdminAccess();
+ UsersManager::dieIfUsersAdminIsDisabled();
+
$password = Common::unsanitizeInputValue($password);
UsersManager::checkPassword($password);
- //create User
- $this->userRepository->create($userLogin, $email, $initialIdSite, $password, $_isPasswordHashed);
+ $initialIdSite = $initialIdSite === null ? null : intval($initialIdSite);
+
+ $this->userRepository->create(
+ (string) $userLogin,
+ (string) $email,
+ $initialIdSite,
+ (string) $password,
+ (bool) $_isPasswordHashed
+ );
- // send admin Email
- $this->userRepository->sendNewUserEmails($userLogin, null);
+ /**
+ * Triggered after a new user is created.
+ *
+ * @param string $userLogin The new user's login.
+ * @param string $email The new user's e-mail.
+ * @param string $inviterLogin The login of the user who created the new user
+ */
+ Piwik::postEvent('UsersManager.addUser.end', [$userLogin, $email, Piwik::getCurrentUserLogin()]);
}
-
- public function inviteUser($userLogin, $email, $initialIdSite = null, $expired = 7)
+ /**
+ * @throws Exception
+ */
+ public function inviteUser($userLogin, $email, $idSite = null, $expiryInDays = null)
{
- //create User
- $this->userRepository->create($userLogin, $email, $initialIdSite);
+ Piwik::checkUserHasSomeAdminAccess();
+ UsersManager::dieIfUsersAdminIsDisabled();
+
+ if (empty($expiryInDays)) {
+ $expiryInDays = Config\GeneralConfig::getConfigValue('default_invite_user_token_expiry_days');
+ }
- // send invited user an email
- $this->userRepository->sendNewUserEmails($userLogin, $expired);
+ $idSite = $idSite === null ? null : intval($idSite);
+ $this->userRepository->inviteUser((string) $userLogin, (string) $email, $idSite, (int) $expiryInDays);
+
+ /**
+ * Triggered after a new user was invited.
+ *
+ * @param string $userLogin The new user's login.
+ * @param string $email The new user's e-mail.
+ */
+ Piwik::postEvent('UsersManager.inviteUser.end', [$userLogin, $email]);
}
/**
@@ -742,8 +795,9 @@ class API extends \Piwik\Plugin\API
self::$SET_SUPERUSER_ACCESS_REQUIRE_PASSWORD_CONFIRMATION = true;
$isCliMode = Common::isPhpCliMode() && !(defined('PIWIK_TEST_MODE') && PIWIK_TEST_MODE);
- if (!$isCliMode
- && $requirePasswordConfirmation
+ if (
+ !$isCliMode
+ && $requirePasswordConfirmation
) {
$this->confirmCurrentUserPassword($passwordConfirmation);
}
@@ -799,11 +853,11 @@ class API extends \Piwik\Plugin\API
* @see addUser() for all the parameters
*/
public function updateUser(
- $userLogin,
- $password = false,
- $email = false,
- $_isPasswordHashed = false,
- $passwordConfirmation = false
+ $userLogin,
+ $password = false,
+ $email = false,
+ $_isPasswordHashed = false,
+ $passwordConfirmation = false
) {
$requirePasswordConfirmation = self::$UPDATE_USER_REQUIRE_PASSWORD_CONFIRMATION;
self::$UPDATE_USER_REQUIRE_PASSWORD_CONFIRMATION = true;
@@ -848,7 +902,7 @@ class API extends \Piwik\Plugin\API
$hasEmailChanged = mb_strtolower($email) !== mb_strtolower($userInfo['email']);
if ($hasEmailChanged) {
- BaseValidator::check('email', $email, [new Email(true)]);
+ BaseValidator::check('email', $email, [new Email(true, $userLogin)]);
$changeShouldRequirePasswordConfirmation = true;
}
@@ -875,7 +929,7 @@ class API extends \Piwik\Plugin\API
* @param string $userLogin The user's login handle.
* @param boolean $passwordHasBeenUpdated Flag containing information about password change.
*/
- Piwik::postEvent('UsersManager.updateUser.end', array($userLogin, $passwordHasBeenUpdated, $email, $password));
+ Piwik::postEvent('UsersManager.updateUser.end', [$userLogin, $passwordHasBeenUpdated, $email, $password]);
}
/**
@@ -889,10 +943,19 @@ class API extends \Piwik\Plugin\API
*/
public function deleteUser($userLogin)
{
- Piwik::checkUserHasSuperUserAccess();
+ Piwik::checkUserHasSomeAdminAccess();
UsersManager::dieIfUsersAdminIsDisabled();
$this->checkUserIsNotAnonymous($userLogin);
+ $user = $this->model->getUser($userLogin);
+
+ // If user is not a super user check if the user was invited by the current user
+ if (!Piwik::hasUserSuperUserAccess()) {
+ if ($user['invited_by'] !== Piwik::getCurrentUserLogin() || !$this->model->isPendingUser($userLogin)) {
+ throw new NoAccessException(Piwik::translate('UsersManager_ExceptionUserDoesNotExist', $userLogin));
+ }
+ }
+
$this->checkUserExist($userLogin);
if ($this->isUserTheOnlyUserHavingSuperUserAccess($userLogin)) {
@@ -902,16 +965,14 @@ class API extends \Piwik\Plugin\API
throw new Exception($message);
}
- $this->model->deleteUserOnly($userLogin);
- $this->model->deleteUserOptions($userLogin);
- $this->model->deleteUserAccess($userLogin);
+ $this->model->deleteUser($userLogin);
$container = StaticContainer::getContainer();
- $email = $container->make(UserDeletedEmail::class, array(
+ $email = $container->make(UserDeletedEmail::class, [
'login' => Piwik::getCurrentUserLogin(),
'emailAddress' => Piwik::getCurrentUserEmail(),
'userLogin' => $userLogin
- ));
+ ]);
$email->safeSend();
Cache::deleteTrackerCache();
@@ -999,15 +1060,18 @@ class API extends \Piwik\Plugin\API
$idSites = $this->getIdSitesCheckAdminAccess($idSites);
- if ($userLogin === 'anonymous' &&
- (is_array($access) || !in_array($access, array('view', 'noaccess'), true))
+ if (
+ $userLogin === 'anonymous' &&
+ (is_array($access) || !in_array($access, ['view', 'noaccess'], true))
) {
- throw new Exception(Piwik::translate("UsersManager_ExceptionAnonymousAccessNotPossible",
- array('noaccess', 'view')));
+ throw new Exception(Piwik::translate(
+ "UsersManager_ExceptionAnonymousAccessNotPossible",
+ ['noaccess', 'view']
+ ));
}
- $roles = array();
- $capabilities = array();
+ $roles = [];
+ $capabilities = [];
if (is_array($access)) {
// we require one role, and optionally multiple capabilities
@@ -1022,7 +1086,6 @@ class API extends \Piwik\Plugin\API
$ids = implode(', ', $this->roleProvider->getAllRoleIds());
throw new Exception(Piwik::translate('UsersManager_ExceptionMultipleRoleSet', $ids));
}
-
} else {
// as only one access is set, we require it to be a role or "noaccess"...
if ($access !== 'noaccess') {
@@ -1039,7 +1102,7 @@ class API extends \Piwik\Plugin\API
if ($access === 'noaccess') {
// if the access is noaccess then we don't save it as this is the default value
// when no access are specified
- Piwik::postEvent('UsersManager.removeSiteAccess', array($userLogin, $idSites));
+ Piwik::postEvent('UsersManager.removeSiteAccess', [$userLogin, $idSites]);
} else {
$role = array_shift($roles);
$this->model->addUserAccess($userLogin, $role, $idSites);
@@ -1077,7 +1140,7 @@ class API extends \Piwik\Plugin\API
$this->checkUsersHasNotSuperUserAccess([$userLogin]);
if (!is_array($capabilities)) {
- $capabilities = array($capabilities);
+ $capabilities = [$capabilities];
}
foreach ($capabilities as $entry) {
@@ -1091,8 +1154,11 @@ class API extends \Piwik\Plugin\API
foreach ($idSites as $idSite) {
$hasRole = array_key_exists($idSite, $sitesIdWithRole);
- $hasCapabilityAlready = array_key_exists($idSite, $sitesIdWithCapability) && in_array($entry,
- $sitesIdWithCapability[$idSite], true);
+ $hasCapabilityAlready = array_key_exists($idSite, $sitesIdWithCapability) && in_array(
+ $entry,
+ $sitesIdWithCapability[$idSite],
+ true
+ );
// so far we are adding the capability only to people that also have a role...
// to be defined how to handle this... eg we are not throwing an exception currently
@@ -1105,10 +1171,9 @@ class API extends \Piwik\Plugin\API
continue;
}
- $this->model->addUserAccess($userLogin, $entry, array($idSite));
+ $this->model->addUserAccess($userLogin, $entry, [$idSite]);
}
}
-
}
// we reload the access list which doesn't yet take in consideration this new user access
@@ -1120,14 +1185,14 @@ class API extends \Piwik\Plugin\API
$sites = $this->model->getSitesAccessFromUser($userLogin);
$roleIds = $this->roleProvider->getAllRoleIds();
- $sitesIdWithRole = array();
- $sitesIdWithCapability = array();
+ $sitesIdWithRole = [];
+ $sitesIdWithCapability = [];
foreach ($sites as $site) {
if (in_array($site['access'], $roleIds, true)) {
$sitesIdWithRole[(int)$site['site']] = $site['access'];
} else {
if (!isset($sitesIdWithCapability[(int)$site['site']])) {
- $sitesIdWithCapability[(int)$site['site']] = array();
+ $sitesIdWithCapability[(int)$site['site']] = [];
}
$sitesIdWithCapability[(int)$site['site']][] = $site['access'];
}
@@ -1153,7 +1218,7 @@ class API extends \Piwik\Plugin\API
$this->checkUserExists($userLogin);
if (!is_array($capabilities)) {
- $capabilities = array($capabilities);
+ $capabilities = [$capabilities];
}
foreach ($capabilities as $capability) {
@@ -1176,11 +1241,11 @@ class API extends \Piwik\Plugin\API
private function getIdSitesCheckAdminAccess($idSites)
{
- // in case idSites is all we grant access to all the websites on which the current connected user has an 'admin' access
if ($idSites === 'all') {
+ // in case idSites is all we grant access to all the websites on which the current connected user has an 'admin' access
$idSites = \Piwik\Plugins\SitesManager\API::getInstance()->getSitesIdWithAdminAccess();
- } // in case the idSites is an integer we build an array
- else {
+ } else {
+ // in case the idSites is an integer we build an array
$idSites = Site::getIdSitesFromIdSitesString($idSites);
}
@@ -1193,7 +1258,7 @@ class API extends \Piwik\Plugin\API
Piwik::checkUserHasAdminAccess($idSites);
if (!is_array($idSites)) {
- $idSites = array($idSites);
+ $idSites = [$idSites];
}
return $idSites;
@@ -1282,11 +1347,11 @@ class API extends \Piwik\Plugin\API
* @return string
*/
public function createAppSpecificTokenAuth(
- $userLogin,
- $passwordConfirmation,
- $description,
- $expireDate = null,
- $expireHours = 0
+ $userLogin,
+ $passwordConfirmation,
+ $description,
+ $expireDate = null,
+ $expireHours = 0
) {
$user = $this->model->getUser($userLogin);
if (empty($user) && Piwik::isValidEmailString($userLogin)) {
@@ -1303,7 +1368,7 @@ class API extends \Piwik\Plugin\API
* @ignore
* @internal
*/
- Piwik::postEvent('Login.authenticate.failed', array($userLogin));
+ Piwik::postEvent('Login.authenticate.failed', [$userLogin]);
}
throw new \Exception(Piwik::translate('UsersManager_CurrentPasswordNotCorrect'));
@@ -1329,7 +1394,7 @@ class API extends \Piwik\Plugin\API
$email = Piwik::getCurrentUserEmail();
$success = NewsletterSignup::signupForNewsletter($userLogin, $email, true);
- $result = $success ? array('success' => true) : array('error' => true);
+ $result = $success ? ['success' => true] : ['error' => true];
return $result;
}
@@ -1363,10 +1428,8 @@ class API extends \Piwik\Plugin\API
if ($this->roleProvider->isValidRole($entry)) {
$roles[] = $entry;
- } else {
- if ($this->isValidAccessType($entry)) {
- $capabilities[] = $entry;
- }
+ } elseif ($this->isValidAccessType($entry)) {
+ $capabilities[] = $entry;
}
}
return [$roles, $capabilities];
@@ -1390,8 +1453,13 @@ class API extends \Piwik\Plugin\API
{
// send the mail to both the old email and the new email
foreach ([$newEmail, $user['email']] as $emailTo) {
- $this->sendUserInfoChangedEmail('email', $user, $newEmail, $emailTo,
- 'UsersManager_EmailChangeNotificationSubject');
+ $this->sendUserInfoChangedEmail(
+ 'email',
+ $user,
+ $newEmail,
+ $emailTo,
+ 'UsersManager_EmailChangeNotificationSubject'
+ );
}
}
@@ -1409,8 +1477,13 @@ class API extends \Piwik\Plugin\API
private function sendPasswordChangedEmail($user)
{
- $this->sendUserInfoChangedEmail('password', $user, null, $user['email'],
- 'UsersManager_PasswordChangeNotificationSubject');
+ $this->sendUserInfoChangedEmail(
+ 'password',
+ $user,
+ null,
+ $user['email'],
+ 'UsersManager_PasswordChangeNotificationSubject'
+ );
}
private function getDeviceDescription()
@@ -1429,9 +1502,7 @@ class API extends \Piwik\Plugin\API
$deviceBrand = $uaParser->getBrandName();
$deviceModel = $uaParser->getModel();
- if (!empty($deviceBrand)
- || !empty($deviceModel)
- ) {
+ if (!empty($deviceBrand) || !empty($deviceModel)) {
$parts = array_filter([$deviceBrand, $deviceModel]);
$description .= ' (' . implode(' ', $parts) . ')';
}
@@ -1441,26 +1512,35 @@ class API extends \Piwik\Plugin\API
/**
* resend the invite email to user
- * @param $userLogin
+ *
+ * @param string $userLogin
+ * @param int $expiryInDays
* @throws NoAccessException
- * @throws \DI\DependencyException
- * @throws \DI\NotFoundException
*/
- public function resendInvite($userLogin, $expired = 7)
+ public function resendInvite($userLogin, $expiryInDays = 7)
{
- Piwik::checkUserIsNotAnonymous();
- Piwik::checkUserHasSuperUserAccess();
-
- $this->checkUserIsNotAnonymous($userLogin);
+ Piwik::checkUserHasSomeAdminAccess();
- if (!$this->model->getPendingUser($userLogin)) {
- throw new Exception(Piwik::translate("UsersManager_ExceptionUserDoesNotExist", $userLogin));
+ if (!$this->model->isPendingUser($userLogin)) {
+ throw new Exception(Piwik::translate('UsersManager_ExceptionUserDoesNotExist', $userLogin));
}
- $this->model->updateUserFields($userLogin, ['invite_status' => 'pending']);
- $this->userRepository->sendNewUserEmails($userLogin, $expired, false);
- Cache::deleteTrackerCache();
- }
+ $user = $this->model->getUser($userLogin);
+
+ // If user is not a super user check if the user was invited by the current user
+ if (!Piwik::hasUserSuperUserAccess()) {
+ if ($user['invited_by'] !== Piwik::getCurrentUserLogin()) {
+ throw new NoAccessException(Piwik::translate('UsersManager_ExceptionResendInviteDenied', $userLogin));
+ }
+ }
+ $this->userRepository->reInviteUser($userLogin, (int)$expiryInDays);
+ /**
+ * Triggered after a new user was invited.
+ *
+ * @param string $userLogin The new user's login.
+ */
+ Piwik::postEvent('UsersManager.inviteUser.resendInvite', [$userLogin, $user['email']]);
+ }
}
diff --git a/plugins/UsersManager/Controller.php b/plugins/UsersManager/Controller.php
index 559ffd4324..b5bad81dcd 100644
--- a/plugins/UsersManager/Controller.php
+++ b/plugins/UsersManager/Controller.php
@@ -110,6 +110,13 @@ class Controller extends ControllerAdmin
['key' => 'superuser', 'value' => Piwik::translate('Installation_SuperUser')],
];
+ $view->statusAccessLevels = [
+ ['key' => '', 'value' => ''], // show all
+ ['key' => 'pending', 'value' => Piwik::translate('UsersManager_Pending')],
+ ['key' => 'active', 'value' => Piwik::translate('UsersManager_Active')],
+ ['key' => 'expired', 'value' => Piwik::translate('UsersManager_Expired')],
+ ];
+
$capabilities = Request::processRequest('UsersManager.getAvailableCapabilities', [], []);
foreach ($capabilities as $capability) {
$capabilityEntry = [
diff --git a/plugins/UsersManager/Emails/UserInviteEmail.php b/plugins/UsersManager/Emails/UserInviteEmail.php
index bfe43771bc..62d6daca72 100644
--- a/plugins/UsersManager/Emails/UserInviteEmail.php
+++ b/plugins/UsersManager/Emails/UserInviteEmail.php
@@ -1,4 +1,5 @@
currentUser = $currentUser;
- $this->user = $user;
- $this->token = $token;
+ $this->currentUser = $currentUser;
+ $this->invitedUser = $invitedUser;
+ $this->token = $token;
+ $this->expiryInDays = $expiryInDays;
+ $this->siteName = $siteName;
$this->setUpEmail();
}
@@ -49,7 +59,7 @@ class UserInviteEmail extends Mail
private function setUpEmail()
{
$this->setDefaultFromPiwik();
- $this->addTo($this->user['email']);
+ $this->addTo($this->invitedUser['email']);
$this->setSubject($this->getDefaultSubject());
$this->addReplyTo($this->getFrom(), $this->getFromName());
$this->setWrappedHtmlBody($this->getDefaultBodyView());
@@ -57,28 +67,32 @@ class UserInviteEmail extends Mail
protected function getDefaultSubject()
{
- return Piwik::translate('CoreAdminHome_UserInviteSubject',
- [$this->currentUser, $this->user['login']]);
+ return Piwik::translate(
+ 'CoreAdminHome_UserInviteSubject',
+ [$this->currentUser, $this->siteName]
+ );
}
private function getDefaultSubjectWithStyle()
{
- return Piwik::translate('CoreAdminHome_UserInviteSubject',
- ["" . $this->currentUser . "", "" . $this->user['login'] . ""]);
+ return Piwik::translate(
+ 'CoreAdminHome_UserInviteSubject',
+ ['' . $this->currentUser . '', '' . $this->siteName . '']
+ );
}
protected function getDefaultBodyView()
{
$view = new View('@UsersManager/_userInviteEmail.twig');
- $view->login = $this->user['login'];
- $view->emailAddress = $this->user['email'];
+ $view->login = $this->invitedUser['login'];
+ $view->emailAddress = $this->invitedUser['email'];
$view->token = $this->token;
// content line for email body
$view->content = $this->getDefaultSubjectWithStyle();
//notes for email footer
- $view->notes = Piwik::translate('CoreAdminHome_UserInviteNotes', [$this->user['login'], $this->currentUser]);
+ $view->notes = Piwik::translate('CoreAdminHome_UserInviteNotes', [$this->currentUser, $this->expiryInDays]);
return $view;
}
}
\ No newline at end of file
diff --git a/plugins/UsersManager/Model.php b/plugins/UsersManager/Model.php
index 362491760e..873dbb12fa 100644
--- a/plugins/UsersManager/Model.php
+++ b/plugins/UsersManager/Model.php
@@ -264,6 +264,25 @@ class Model
return hash(self::TOKEN_HASH_ALGO, $tokenAuth . $salt);
}
+ public function generateRandomInviteToken()
+ {
+ $count = 0;
+
+ do {
+ $token = $this->generateTokenAuth();
+
+ $count++;
+ if ($count > 20) {
+ // something seems wrong as the odds of that happening is basically 0. Only catching it to prevent
+ // endless loop in case there is some bug somewhere
+ throw new \Exception('Failed to generate token');
+ }
+
+ } while ($this->getUserByInviteToken($token));
+
+ return $token;
+ }
+
public function generateRandomTokenAuth()
{
$count = 0;
@@ -369,6 +388,14 @@ class Model
$expiredSince);
}
+ public function getExpiredInvites($expiredSince)
+ {
+ $db = $this->getDb();
+
+ return $db->fetchAll("SELECT * FROM " . $this->userTable . " WHERE `invite_expired_at` is not null and invite_expired_at < ?",
+ $expiredSince);
+ }
+
public function checkUserHasUnexpiredToken($login)
{
$db = $this->getDb();
@@ -378,7 +405,6 @@ class Model
$bind);
}
-
public function deleteAllTokensForUser($login)
{
$db = $this->getDb();
@@ -465,6 +491,16 @@ class Model
return $db->fetchRow("SELECT * FROM " . $this->userTable . " WHERE email = ?", $userEmail);
}
+
+ public function getUserByInviteToken($tokenAuth)
+ {
+ $token = $this->hashTokenAuth($tokenAuth);
+ if (!empty($token)) {
+ $db = $this->getDb();
+ return $db->fetchRow("SELECT * FROM " . $this->userTable . " WHERE `invite_token` = ?", $token);
+ }
+ }
+
public function getUserByTokenAuth($tokenAuth)
{
if ($tokenAuth === 'anonymous') {
@@ -478,7 +514,13 @@ class Model
}
}
- public function addUser($userLogin, $hashedPassword, $email, $dateRegistered, $inviteStatus = null)
+ /**
+ * @param $userLogin
+ * @param $hashedPassword
+ * @param $email
+ * @param $dateRegistered
+ */
+ public function addUser($userLogin, $hashedPassword, $email, $dateRegistered)
{
$user = array(
'login' => $userLogin,
@@ -487,17 +529,20 @@ class Model
'date_registered' => $dateRegistered,
'superuser_access' => 0,
'ts_password_modified' => Date::now()->getDatetime(),
- 'idchange_last_viewed' => null
+ 'idchange_last_viewed' => null,
+ 'invited_by' => null,
);
-
- if ($inviteStatus) {
- $user['invite_status'] = 'pending';
- }
-
$db = $this->getDb();
$db->insert($this->userTable, $user);
- return $user;
+ }
+
+ public function attachInviteToken($userLogin, $token, $expiryInDays = 7)
+ {
+ $this->updateUserFields($userLogin, [
+ 'invite_token' => $this->hashTokenAuth($token),
+ 'invite_expired_at' => Date::now()->addDay($expiryInDays)->getDatetime()
+ ]);
}
public function setSuperUserAccess($userLogin, $hasSuperUserAccess)
@@ -593,6 +638,13 @@ class Model
}
}
+ public function deleteUser($userLogin): void
+ {
+ $this->deleteUserOnly($userLogin);
+ $this->deleteUserOptions($userLogin);
+ $this->deleteUserAccess($userLogin);
+ }
+
/**
* @param string $userLogin
*/
@@ -640,23 +692,6 @@ class Model
return Db::get();
}
- public function getUserLoginsMatching($idSite = null, $pattern = null, $access = null, $logins = null)
- {
- $filter = new UserTableFilter($access, $idSite, $pattern, $logins);
-
- list($joins, $bind) = $filter->getJoins('u');
- list($where, $whereBind) = $filter->getWhere();
-
- $bind = array_merge($bind, $whereBind);
-
- $sql = 'SELECT u.login FROM ' . $this->userTable . " u $joins $where";
-
- $db = $this->getDb();
-
- $result = $db->fetchAll($sql, $bind);
- $result = array_column($result, 'login');
- return $result;
- }
/**
* Returns all users and their access to `$idSite`.
@@ -675,9 +710,10 @@ class Model
$offset = null,
$pattern = null,
$access = null,
+ $status = null,
$logins = null
) {
- $filter = new UserTableFilter($access, $idSite, $pattern, $logins);
+ $filter = new UserTableFilter($access, $idSite, $pattern, $status, $logins);
list($joins, $bind) = $filter->getJoins('u');
list($where, $whereBind) = $filter->getWhere();
@@ -735,12 +771,12 @@ class Model
return $logins;
}
- public function getPendingUser($userLogin)
+ public function isPendingUser(string $userLogin): bool
{
$db = $this->getDb();
- $sql = "SELECT count(*) FROM " . $this->userTable . " WHERE login = ? and invite_status not like ?";
- $bind = [$userLogin, 'accept'];
- return $db->fetchOne($sql, $bind);
+ $sql = "SELECT count(*) FROM " . $this->userTable . " WHERE (login = ? or email = ?) and invite_token is not null";
+ $bind = [$userLogin, $userLogin];
+ $count = (int) $db->fetchOne($sql, $bind);
+ return $count > 0;
}
-
}
diff --git a/plugins/UsersManager/Repository/UserRepository.php b/plugins/UsersManager/Repository/UserRepository.php
index 51dd49636b..e806211abc 100644
--- a/plugins/UsersManager/Repository/UserRepository.php
+++ b/plugins/UsersManager/Repository/UserRepository.php
@@ -16,18 +16,26 @@ use Piwik\Plugins\UsersManager\UserAccessFilter;
use Piwik\Plugins\UsersManager\UsersManager;
use Piwik\Plugins\UsersManager\Validators\Email;
use Piwik\Plugins\UsersManager\Validators\Login;
+use Piwik\Site;
use Piwik\Validators\BaseValidator;
use Piwik\Validators\IdSite;
use Piwik\Plugin;
-
class UserRepository
{
-
+ /**
+ * @var Model
+ */
protected $model;
+ /**
+ * @var UserAccessFilter
+ */
protected $filter;
+ /**
+ * @var Password
+ */
protected $password;
public function __construct(Model $model, UserAccessFilter $filter, Password $password)
@@ -37,36 +45,35 @@ class UserRepository
$this->password = $password;
}
-
- public function index($userLogin, $pending)
- {
- Piwik::checkUserHasSuperUserAccessOrIsTheUser($userLogin);
- $this->checkUserExists($userLogin);
-
- $user = $this->model->getUser($userLogin, $pending);
-
- $user = $this->filter->filterUser($user);
- return $this->enrichUser($user);
- }
-
- public function create($userLogin, $email, $initialIdSite, $password = '', $_isPasswordHashed = false)
- {
- $this->validateAccess();
+ /**
+ * @param string $userLogin
+ * @param string $email
+ * @param int $initialIdSite
+ * @param string $password
+ * @param bool $isPasswordHashed
+ * @throws \Exception
+ */
+ public function create(
+ string $userLogin,
+ string $email,
+ ?int $initialIdSite = null,
+ string $password = '',
+ bool $isPasswordHashed = false
+ ): void {
if (!Piwik::hasUserSuperUserAccess()) {
if (empty($initialIdSite)) {
throw new \Exception(Piwik::translate("UsersManager_AddUserNoInitialAccessError"));
}
- // check if the site exist
+ // check if the site exists
BaseValidator::check('siteId', $initialIdSite, [new IdSite()]);
Piwik::checkUserHasAdminAccess($initialIdSite);
}
- //validate info
- BaseValidator::check('userLogin', $userLogin, [new Login(true)]);
- BaseValidator::check('email', $email, [new Email(true)]);
+ BaseValidator::check(Piwik::translate('General_Username'), $userLogin, [new Login(true)]);
+ BaseValidator::check(Piwik::translate('Installation_Email'), $email, [new Email(true)]);
if (!empty($password)) {
- if (!$_isPasswordHashed) {
+ if (!$isPasswordHashed) {
$passwordTransformed = UsersManager::getPasswordHash($password);
} else {
$passwordTransformed = $password;
@@ -74,67 +81,69 @@ class UserRepository
$password = $this->password->hash($passwordTransformed);
}
- //insert user into database.
- $this->model->addUser($userLogin, $password, $email, Date::now()->getDatetime(), empty($password));
-
- /**
- * Triggered after a new user is invited.
- *
- * @param string $userLogin The new user's details handle.
- */
- Piwik::postEvent('UsersManager.inviteUser.end', array($userLogin, $email));
+ $this->model->addUser($userLogin, $password, $email, Date::now()->getDatetime());
if ($initialIdSite) {
API::getInstance()->setUserAccess($userLogin, 'view', $initialIdSite);
}
+
+ $this->sendUserCreationNotification($userLogin);
}
- public function sendNewUserEmails($userLogin, $expired = 7, $newUser = true)
+ public function inviteUser(string $userLogin, string $email, ?int $initialIdSite = null, $expiryInDays = null): void
{
+ $this->create($userLogin, $email, $initialIdSite);
+ $this->model->updateUserFields($userLogin, ['invited_by' => Piwik::getCurrentUserLogin()]);
+ $user = $this->model->getUser($userLogin);
+ $generatedToken = $this->model->generateRandomInviteToken();
+ $this->model->attachInviteToken($userLogin, $generatedToken, $expiryInDays);
+ $this->sendInvitationEmail($user, $generatedToken, $expiryInDays);
+ }
- //send Admin Email
- if ($newUser) {
- $mail = StaticContainer::getContainer()->make(UserCreatedEmail::class, array(
- 'login' => Piwik::getCurrentUserLogin(),
- 'emailAddress' => Piwik::getCurrentUserEmail(),
- 'userLogin' => $userLogin,
- ));
- $mail->safeSend();
- }
-
-
- if (!empty($expired)) {
- //retrieve user details
- $user = API::getInstance()->getUser($userLogin);
-
- //remove all previous token
- $this->model->deleteAllTokensForUser($userLogin);
-
- //generate Token
- $generatedToken = $this->model->generateRandomTokenAuth();
-
- //attach token to user
- $this->model->addTokenAuth($userLogin, $generatedToken, "Invite Token", Date::now()->getDatetime(),
- Date::now()->addDay($expired)->getDatetime());
-
+ public function reInviteUser(string $userLogin, $expiryInDays = null): void
+ {
+ $user = $this->model->getUser($userLogin);
+ $generatedToken = $this->model->generateRandomInviteToken();
+ $this->model->attachInviteToken($userLogin, $generatedToken, $expiryInDays);
+ $this->sendInvitationEmail($user, $generatedToken, $expiryInDays);
+ }
- // send email
- $email = StaticContainer::getContainer()->make(UserInviteEmail::class, array(
- 'currentUser' => Piwik::getCurrentUserLogin(),
- 'user' => $user,
- 'token' => $generatedToken
- ));
- $email->safeSend();
- }
+ protected function sendUserCreationNotification(string $createdUserLogin): void
+ {
+ $mail = StaticContainer::getContainer()->make(UserCreatedEmail::class, [
+ 'login' => Piwik::getCurrentUserLogin(),
+ 'emailAddress' => Piwik::getCurrentUserEmail(),
+ 'userLogin' => $createdUserLogin,
+ ]);
+ $mail->safeSend();
}
- private function validateAccess()
+ protected function sendInvitationEmail(array $user, string $inviteToken, int $expiryInDays): void
{
- Piwik::checkUserHasSomeAdminAccess();
- UsersManager::dieIfUsersAdminIsDisabled();
+ $site = $this->model->getSitesAccessFromUser($user['login']);
+
+ if (isset($site[0])) {
+ $siteName = Site::getNameFor($site[0]['site']);
+ } else {
+ $siteName = "Default Site";
+ }
+
+ $email = StaticContainer::getContainer()->make(UserInviteEmail::class, [
+ 'currentUser' => Piwik::getCurrentUserLogin(),
+ 'invitedUser' => $user,
+ 'siteName' => $siteName,
+ 'token' => $inviteToken,
+ 'expiryInDays' => $expiryInDays
+ ]);
+ $email->safeSend();
}
- public function enrichUser($user)
+ /**
+ * @param array $user
+ * @return array
+ * @throws \Exception
+ */
+ public function enrichUser(array $user): array
{
if (empty($user)) {
return $user;
@@ -149,22 +158,28 @@ class UserRepository
$user['last_seen'] = Date::getDatetimeFromTimestamp($lastSeen);
}
+ $user['invite_status'] = 'active';
+
+ if (!empty($user['invite_expired_at'])) {
+ $inviteExpireAt = Date::factory($user['invite_expired_at']);
+ // if token expired
+ if (Date::now()->isLater($inviteExpireAt)) {
+ $user['invite_status'] = 'expired';
+ }
+ // if token not expired
+ if (Date::now()->isEarlier($inviteExpireAt)) {
+ $dayLeft = floor(Date::secondsToDays($inviteExpireAt->getTimestamp() - Date::now()->getTimestamp()));
+ $user['invite_status'] = $dayLeft;
+ }
+ }
+
if (Piwik::hasUserSuperUserAccess()) {
$user['uses_2fa'] = !empty($user['twofactor_secret']) && $this->isTwoFactorAuthPluginEnabled();
unset($user['twofactor_secret']);
- if (!empty($user['invite_status']) && $user['invite_status'] === 'pending') {
- $validToken = $this->model->checkUserHasUnexpiredToken($user['login']);
- if (!$validToken) {
- $user['invite_status'] = 'expired';
- }
- }
- if (empty($user['invite_status'])) {
- $user['invite_status'] = 'accept';
- }
return $user;
}
- $newUser = array('login' => $user['login']);
+ $newUser = ['login' => $user['login']];
if ($user['login'] === Piwik::getCurrentUserLogin() || !empty($user['superuser_access'])) {
$newUser['email'] = $user['email'];
@@ -184,11 +199,20 @@ class UserRepository
if (isset($user['last_seen'])) {
$newUser['last_seen'] = $user['last_seen'];
}
+ $newUser['invite_status'] = $user['invite_status'];
+ if (isset($user['invited_by'])) {
+ $newUser['invited_by'] = $user['invited_by'];
+ }
return $newUser;
}
- public function enrichUsers($users)
+ /**
+ * @param array $users
+ * @return mixed
+ * @throws \Exception
+ */
+ public function enrichUsers(array $users): array
{
if (!empty($users)) {
foreach ($users as $index => $user) {
@@ -198,7 +222,11 @@ class UserRepository
return $users;
}
- public function enrichUsersWithLastSeen($users)
+ /**
+ * @param array $users
+ * @return mixed
+ */
+ public function enrichUsersWithLastSeen(array $users): array
{
$formatter = new Formatter();
@@ -212,14 +240,11 @@ class UserRepository
return $users;
}
-
- private function isTwoFactorAuthPluginEnabled()
+ private function isTwoFactorAuthPluginEnabled(): bool
{
if (!isset($this->twoFaPluginActivated)) {
$this->twoFaPluginActivated = Plugin\Manager::getInstance()->isPluginActivated('TwoFactorAuth');
}
return $this->twoFaPluginActivated;
}
-
-
-}
\ No newline at end of file
+}
diff --git a/plugins/UsersManager/Sql/UserTableFilter.php b/plugins/UsersManager/Sql/UserTableFilter.php
index 4743d17755..84d259639d 100644
--- a/plugins/UsersManager/Sql/UserTableFilter.php
+++ b/plugins/UsersManager/Sql/UserTableFilter.php
@@ -29,16 +29,22 @@ class UserTableFilter
*/
private $filterSearch;
+ /**
+ * @var string
+ */
+ private $filterStatus;
+
/**
* @var string[]
*/
private $logins;
- public function __construct($filterByRole, $filterByRoleSite, $filterSearch, $logins = null)
+ public function __construct($filterByRole, $filterByRoleSite, $filterSearch, $filterStatus, $logins = null)
{
$this->filterByRole = $filterByRole;
$this->filterByRoleSite = $filterByRoleSite;
$this->filterSearch = $filterSearch;
+ $this->filterStatus = $filterStatus;
$this->logins = $logins;
if (isset($this->filterByRole) && !isset($this->filterByRoleSite)) {
@@ -47,7 +53,7 @@ class UserTableFilter
// can only filter by superuser if current user is a superuser
if ($this->filterByRole == 'superuser'
- && !Piwik::hasUserSuperUserAccess()
+ && !Piwik::hasUserSuperUserAccess()
) {
$this->filterByRole = null;
}
@@ -78,6 +84,28 @@ class UserTableFilter
$bind = array_merge($bind, ['%' . $this->filterSearch . '%', '%' . $this->filterSearch . '%']);
}
+ if ($this->filterStatus) {
+ if ($this->filterStatus === 'active') {
+ $conditions[] = '(u.invite_token is NULL and u.invite_expired_at is NULL)';
+ }
+ if ($this->filterStatus === 'pending') {
+ $conditions[] = '(u.invite_token is not NULL and u.invite_expired_at > DATE(Now()))';
+ // Pending users are only visible for super user or the user, who invited the user
+ if (!Piwik::hasUserSuperUserAccess()) {
+ $conditions[] = 'u.invited_by = ?';
+ $bind[] = Piwik::getCurrentUserLogin();
+ }
+ }
+ if ($this->filterStatus === 'expired') {
+ $conditions[] = '(u.invite_token is not NULL and u.invite_expired_at < DATE(Now()))';
+ // Expired users are only visible for super user or the user, who invited the user
+ if (!Piwik::hasUserSuperUserAccess()) {
+ $conditions[] = 'u.invited_by = ?';
+ $bind[] = Piwik::getCurrentUserLogin();
+ }
+ }
+ }
+
if ($this->logins !== null) {
$logins = array_map('json_encode', $this->logins);
$conditions[] = 'u.login IN (' . implode(',', $logins) . ')';
diff --git a/plugins/UsersManager/Tasks.php b/plugins/UsersManager/Tasks.php
index 41484fe0c9..d8842d9c4d 100644
--- a/plugins/UsersManager/Tasks.php
+++ b/plugins/UsersManager/Tasks.php
@@ -1,10 +1,12 @@
daily("cleanupExpiredTokens");
$this->daily("setUserDefaultReportPreference");
+ $this->daily("cleanUpExpiredInvites");
}
- public function cleanupExpiredTokens() {
+ public function cleanupExpiredTokens()
+ {
$this->usersModel->deleteExpiredTokens(Date::now()->getDatetime());
}
+ public function cleanUpExpiredInvites()
+ {
+ // Expired invites will be removed after 3 days, so there's a chance to resend an invite before it's removed.
+
+ $expiredInvites = $this->usersModel->getExpiredInvites(Date::now()->subDay(3)->getDatetime());
+
+ foreach ($expiredInvites as $expiredInvite) {
+ try {
+ $this->usersModel->deleteUser($expiredInvite['login']);
+ } catch (\Exception $e) {
+ // ignore possible errors thrown during delete user event
+ }
+ }
+ }
+
public function setUserDefaultReportPreference()
{
// We initialize the default report user preference for each user (if it hasn't been inited before) for performance,
@@ -46,7 +65,7 @@ class Tasks extends \Piwik\Plugin\Tasks
$usersModel = $this->usersModel;
$usersManagerApi = $this->usersManagerApi;
Access::getInstance()->doAsSuperUser(function () use ($usersModel, $usersManagerApi) {
- $allUsers = $usersModel->getUsers(array());
+ $allUsers = $usersModel->getUsers([]);
foreach ($allUsers as $user) {
$usersManagerApi->initUserPreferenceWithDefault($user['login'], API::PREFERENCE_DEFAULT_REPORT);
}
diff --git a/plugins/UsersManager/UserAccessFilter.php b/plugins/UsersManager/UserAccessFilter.php
index 9378b8a3d1..f0391138ce 100644
--- a/plugins/UsersManager/UserAccessFilter.php
+++ b/plugins/UsersManager/UserAccessFilter.php
@@ -108,7 +108,8 @@ class UserAccessFilter
}
return array_values(array_filter($users, function ($user) {
- return $this->isNonSuperUserAllowedToSeeThisLogin($user['login']);
+ $isPendingVisible = empty($user['invite_token']) || $this->isOwnLogin($user['invited_by']);
+ return $isPendingVisible && $this->isNonSuperUserAllowedToSeeThisLogin($user['login']);
}));
}
diff --git a/plugins/UsersManager/UsersManager.php b/plugins/UsersManager/UsersManager.php
index 5403dd6645..16fc1aedf9 100644
--- a/plugins/UsersManager/UsersManager.php
+++ b/plugins/UsersManager/UsersManager.php
@@ -1,4 +1,5 @@
'getStylesheetFiles',
- 'SitesManager.deleteSite.end' => 'deleteSite',
- 'Tracker.Cache.getSiteAttributes' => 'recordAdminUsersInCache',
- 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys',
- 'Platform.initialized' => 'onPlatformInitialized',
- 'System.addSystemSummaryItems' => 'addSystemSummaryItems',
- );
+ return [
+ 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
+ 'SitesManager.deleteSite.end' => 'deleteSite',
+ 'Tracker.Cache.getSiteAttributes' => 'recordAdminUsersInCache',
+ 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys',
+ 'Platform.initialized' => 'onPlatformInitialized',
+ 'System.addSystemSummaryItems' => 'addSystemSummaryItems',
+ ];
}
public static function isUsersAdminEnabled()
{
- return (bool) Config::getInstance()->General['enable_users_admin'];
+ return (bool)Config::getInstance()->General['enable_users_admin'];
}
public static function dieIfUsersAdminIsDisabled()
@@ -140,7 +142,7 @@ class UsersManager extends \Piwik\Plugin
public static function isValidPasswordString($input)
{
if (!SettingsPiwik::isUserCredentialsSanityCheckEnabled()
- && !empty($input)
+ && !empty($input)
) {
return true;
}
@@ -171,10 +173,12 @@ class UsersManager extends \Piwik\Plugin
Piwik::postEvent('UsersManager.checkPassword', array($password));
if (!self::isValidPasswordString($password)) {
- throw new Exception(Piwik::translate('UsersManager_ExceptionInvalidPassword', array(self::PASSWORD_MIN_LENGTH)));
+ throw new Exception(Piwik::translate('UsersManager_ExceptionInvalidPassword',
+ array(self::PASSWORD_MIN_LENGTH)));
}
if (mb_strlen($password) > self::PASSWORD_MAX_LENGTH) {
- throw new Exception(Piwik::translate('UsersManager_ExceptionInvalidPasswordTooLong', array(self::PASSWORD_MAX_LENGTH)));
+ throw new Exception(Piwik::translate('UsersManager_ExceptionInvalidPasswordTooLong',
+ array(self::PASSWORD_MAX_LENGTH)));
}
}
@@ -331,6 +335,10 @@ class UsersManager extends \Piwik\Plugin
$translationKeys[] = 'UsersManager_Pending';
$translationKeys[] = 'UsersManager_Expired';
$translationKeys[] = 'UsersManager_Decline';
-
+ $translationKeys[] = 'UsersManager_ResendInviteSuccess';
+ $translationKeys[] = 'UsersManager_InviteSuccess';
+ $translationKeys[] = 'UsersManager_InviteDayLeft';
+ $translationKeys[] = 'UsersManager_FilterByStatus';
+ $translationKeys[] = 'UsersManager_ExpiredInviteAutomaticallyRemoved';
}
}
diff --git a/plugins/UsersManager/Validators/Email.php b/plugins/UsersManager/Validators/Email.php
index 98ed633747..4539c777bb 100644
--- a/plugins/UsersManager/Validators/Email.php
+++ b/plugins/UsersManager/Validators/Email.php
@@ -1,4 +1,5 @@
checkUnique = $checkUnique;
+ $this->userLogin = $userLogin;
}
public function validate($value)
@@ -30,13 +32,12 @@ class Email extends BaseValidator
}
if (!Piwik::isValidEmailString($value)) {
- throw new Exception(Piwik::translate('General_ValidatorErrorNotEmailLike', array($value)));
+ throw new Exception(Piwik::translate('General_ValidatorErrorNotEmailLike', [$value]));
}
if ($this->checkUnique) {
$this->isUnique($value);
}
-
}
/**
@@ -46,13 +47,20 @@ class Email extends BaseValidator
*/
private function isUnique($email)
{
- if (APIUsersManager::getInstance()->userExists($email)) {
- throw new Exception(Piwik::translate('UsersManager_ExceptionLoginExists', $email));
+ if (APIUsersManager::getInstance()->userEmailExists($email)) {
+ throw new Exception(Piwik::translate('UsersManager_ExceptionEmailExists', $email));
}
- if (APIUsersManager::getInstance()->userEmailExists($email)) {
- throw new Exception(Piwik::translate('UsersManager_ExceptionLoginExistsAsEmail', $email));
+ if ($this->userLogin && mb_strtolower($this->userLogin) !== mb_strtolower($email) && APIUsersManager::getInstance()->userExists($email)) {
+ throw new Exception(Piwik::translate('UsersManager_ExceptionEmailExistsAsLogin', $email));
+ }
+
+ if (!$this->userLogin && APIUsersManager::getInstance()->userExists($email)) {
+ throw new Exception(Piwik::translate('UsersManager_ExceptionEmailExistsAsLogin', $email));
}
- }
+ if (!Piwik::isValidEmailString($email)) {
+ throw new Exception(Piwik::translate('UsersManager_ExceptionInvalidEmail'));
+ }
+ }
}
diff --git a/plugins/UsersManager/Validators/Login.php b/plugins/UsersManager/Validators/Login.php
index 7e3e19cda5..ad97537c0d 100644
--- a/plugins/UsersManager/Validators/Login.php
+++ b/plugins/UsersManager/Validators/Login.php
@@ -1,4 +1,5 @@
= self::loginMinimumLength
- && $l <= self::loginMaximumLength
- && (preg_match('/^[A-Za-zÄäÖöÜüß0-9_.@+-]*$/D', $value) > 0))
+ if (
+ !($l >= self::loginMinimumLength
+ && $l <= self::loginMaximumLength
+ && (preg_match('/^[A-Za-zÄäÖöÜüß0-9_.@+-]*$/D', $value) > 0))
) {
- throw new Exception(Piwik::translate('UsersManager_ExceptionInvalidLoginFormat',
- array(self::loginMinimumLength, self::loginMaximumLength)));
+ throw new Exception(Piwik::translate(
+ 'UsersManager_ExceptionInvalidLoginFormat',
+ [self::loginMinimumLength, self::loginMaximumLength]
+ ));
}
if ($this->checkUnique) {
@@ -65,4 +69,4 @@ class Login extends BaseValidator
throw new Exception(Piwik::translate('UsersManager_ExceptionLoginExistsAsEmail', $login));
}
}
-}
\ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/en.json b/plugins/UsersManager/lang/en.json
index a4fa908773..1e23b14686 100644
--- a/plugins/UsersManager/lang/en.json
+++ b/plugins/UsersManager/lang/en.json
@@ -187,12 +187,18 @@
"NewsletterSignupFailureMessage": "Whoops, something went wrong. We weren't able to sign you up for the newsletter.",
"NewsletterSignupSuccessMessage": "Super, you're all signed up! We'll be in touch soon.",
"FirstWebsitePermission": "First website permission",
- "InviteSuccessNotification": "The invited User will receive an email to accept the invite, the invite valid for %1$s days, you can also resend and delete the invite in the user management page.",
+ "InviteSuccessNotification": "The invited user will receive an email to accept the invite. This invite is valid for %1$s days. You can also resend and delete the invite on the user management page.",
"ResendInviteConfirmSingle": "Are you sure you want to resend invitation to %1$s?",
"Status": "Status",
"Pending": "Pending",
"Active": "Active",
- "Expired": "Invite Expired",
- "Decline": "Invite Declined"
+ "Expired": "Invite expired",
+ "Decline": "Invite declined",
+ "ResendInviteSuccess": "Success! The invite has been resent to user %s",
+ "InviteSuccess": "Success! The invite has been sent.",
+ "InviteDayLeft": "Expires in %s days",
+ "FilterByStatus": "Filter by status",
+ "ExceptionResendInviteDenied": "Resending an invite is only allowed to the user who invited %s or any super user.",
+ "ExpiredInviteAutomaticallyRemoved": "Expired invites will be automatically deleted after %1$s days."
}
}
diff --git a/plugins/UsersManager/templates/index.twig b/plugins/UsersManager/templates/index.twig
index 82237074a1..fc6c0057f5 100644
--- a/plugins/UsersManager/templates/index.twig
+++ b/plugins/UsersManager/templates/index.twig
@@ -10,6 +10,7 @@
current-user-role="'{{ currentUserRole }}'"
access-levels="{{ accessLevels|json_encode|e('html_attr') }}"
filter-access-levels="{{ filterAccessLevels|json_encode|e('html_attr') }}"
+ filter-status-levels="{{ statusAccessLevels|json_encode|e('html_attr') }}"
>
diff --git a/plugins/UsersManager/tests/Fixtures/ManyUsers.php b/plugins/UsersManager/tests/Fixtures/ManyUsers.php
index 2fa2607f4a..66da0384a4 100644
--- a/plugins/UsersManager/tests/Fixtures/ManyUsers.php
+++ b/plugins/UsersManager/tests/Fixtures/ManyUsers.php
@@ -1,10 +1,12 @@
array('superuser' => 1),
- 'login2' => array('view' => array(3,5), 'admin' => array(1,2,6)),
- 'login3' => array('view' => array(), 'admin' => array()), // no access to any site
- 'login4' => array('view' => array(6), 'admin' => array()), // only access to one with view
- 'login5' => array('view' => array(), 'admin' => array(3)), // only access to one with admin
- 'login6' => array('view' => array(), 'admin' => array(6,3)), // access to a couple of sites with admin
- 'login7' => array('view' => array(2,1,6,3), 'admin' => array()), // access to a couple of sites with view
- 'login8' => array('view' => array(4,7), 'admin' => array(2,5)), // access to a couple of sites with admin and view
- 'login9' => array('view' => array(5,6), 'admin' => array(8,9)),
- 'login10' => array('superuser' => 1)
- );
-
- public $pendingUser = array(
- 'login'=>'000pendingUser1',
- 'email'=>'pendinguser1light@example.com'
- );
+ public $users = [];
+
+ public $baseUsers = [
+ 'login1' => ['superuser' => 1],
+ 'login2' => ['view' => [3, 5], 'admin' => [1, 2, 6]],
+ 'login3' => ['view' => [], 'admin' => []], // no access to any site
+ 'login4' => ['view' => [6], 'admin' => []], // only access to one with view
+ 'login5' => ['view' => [], 'admin' => [3]], // only access to one with admin
+ 'login6' => ['view' => [], 'admin' => [6, 3]], // access to a couple of sites with admin
+ 'login7' => ['view' => [2, 1, 6, 3], 'admin' => []], // access to a couple of sites with view
+ 'login8' => ['view' => [4, 7], 'admin' => [2, 5]], // access to a couple of sites with admin and view
+ 'login9' => ['view' => [5, 6], 'admin' => [8, 9]],
+ 'login10' => ['superuser' => 1]
+ ];
+
+ public $pendingUser = [
+ 'login' => '000pendingUser1',
+ 'email' => 'pendinguser1light@example.com'
+ ];
+
+ public $pendingUser2 = [
+ 'login' => 'zzzpendingUser2',
+ 'email' => 'zpendinguser2light@example.com'
+ ];
public $baseSites = [
- 'sleep',
- 'escapesequence',
- 'hunter',
- 'transistor',
- 'wicket',
- 'relentless',
- 'scarecrow',
- 'nova',
- 'resilience',
- 'tricks',
+ 'sleep',
+ 'escapesequence',
+ 'hunter',
+ 'transistor',
+ 'wicket',
+ 'relentless',
+ 'scarecrow',
+ 'nova',
+ 'resilience',
+ 'tricks',
];
public $textAdditions = [
- 'life',
- 'light',
- 'flight',
- 'conchords',
+ 'life',
+ 'light',
+ 'flight',
+ 'conchords',
];
- public function __construct($userCopyCount = self::USER_COUNT, $siteCopyCount = self::SITE_COUNT, $addTextSuffixes = true)
- {
+ public function __construct(
+ $userCopyCount = self::USER_COUNT,
+ $siteCopyCount = self::SITE_COUNT,
+ $addTextSuffixes = true
+ ) {
$this->userCopyCount = $userCopyCount;
$this->siteCopyCount = $siteCopyCount;
$this->addTextSuffixes = $addTextSuffixes;
@@ -105,7 +115,7 @@ class ManyUsers extends Fixture
$api = API::getInstance();
// add a pending invite user
- $api->inviteUser($this->pendingUser['login'], $this->pendingUser['email'],1);
+ $api->inviteUser($this->pendingUser['login'], $this->pendingUser['email'], 1);
for ($i = 0; $i != $this->userCopyCount; ++$i) {
$addToEmail = $i % 2 == 0;
@@ -121,7 +131,7 @@ class ManyUsers extends Fixture
}
$email = $login . '@example.com';
- if ($this->addTextSuffixes &&$addToEmail) {
+ if ($this->addTextSuffixes && $addToEmail) {
$email = $login . $textAddition . '@example.com';
}
@@ -147,5 +157,9 @@ class ManyUsers extends Fixture
$this->users[$login]['token'] = $tokenAuth;
}
}
+
+ //add admin view pending user
+ $api->inviteUser($this->pendingUser2['login'], $this->pendingUser2['email'], 1);
+ $model->updateUserFields($this->pendingUser2['login'], ['invited_by' => 'login2']);
}
-}
\ No newline at end of file
+}
diff --git a/plugins/UsersManager/tests/Integration/APITest.php b/plugins/UsersManager/tests/Integration/APITest.php
index 20a0c3a046..a6c8454d4d 100644
--- a/plugins/UsersManager/tests/Integration/APITest.php
+++ b/plugins/UsersManager/tests/Integration/APITest.php
@@ -1,4 +1,5 @@
assertEquals($self->login, $login);
- $self->assertEquals(array(1, 2), $idSites);
+ $self->assertEquals([1, 2], $idSites);
});
- $this->api->setUserAccess($this->login, 'noaccess', array(1, 2));
+ $this->api->setUserAccess($this->login, 'noaccess', [1, 2]);
$this->assertTrue($eventTriggered, 'UsersManager.removeSiteAccess event was not triggered');
}
@@ -189,20 +194,20 @@ class APITest extends IntegrationTestCase
$eventTriggered = true;
});
- $this->api->setUserAccess($this->login, 'admin', array(1, 2));
+ $this->api->setUserAccess($this->login, 'admin', [1, 2]);
$this->assertFalse($eventTriggered, 'UsersManager.removeSiteAccess event was triggered but should not');
}
public function test_getAllUsersPreferences_isEmpty_whenNoPreference()
{
- $preferences = $this->api->getAllUsersPreferences(array('preferenceName'));
+ $preferences = $this->api->getAllUsersPreferences(['preferenceName']);
$this->assertEmpty($preferences);
}
public function test_getAllUsersPreferences_isEmpty_whenNoPreferenceAndMultipleRequested()
{
- $preferences = $this->api->getAllUsersPreferences(array('preferenceName', 'randomDoesNotExist'));
+ $preferences = $this->api->getAllUsersPreferences(['preferenceName', 'randomDoesNotExist']);
$this->assertEmpty($preferences);
}
@@ -261,16 +266,20 @@ class APITest extends IntegrationTestCase
$this->api->setUserPreference($user3, API::PREFERENCE_DEFAULT_REPORT_DATE, 'otherPreferenceVALUE');
$this->api->setUserPreference($user3, 'RandomNOTREQUESTED', 'RandomNOTREQUESTED');
- $expected = array(
- $user2 => array(
- API::PREFERENCE_DEFAULT_REPORT => 'valueForUser2'
- ),
- $user3 => array(
- API::PREFERENCE_DEFAULT_REPORT => 'valueForUser3',
- API::PREFERENCE_DEFAULT_REPORT_DATE => 'otherPreferenceVALUE',
- ),
- );
- $result = $this->api->getAllUsersPreferences(array(API::PREFERENCE_DEFAULT_REPORT, API::PREFERENCE_DEFAULT_REPORT_DATE, 'randomDoesNotExist'));
+ $expected = [
+ $user2 => [
+ API::PREFERENCE_DEFAULT_REPORT => 'valueForUser2'
+ ],
+ $user3 => [
+ API::PREFERENCE_DEFAULT_REPORT => 'valueForUser3',
+ API::PREFERENCE_DEFAULT_REPORT_DATE => 'otherPreferenceVALUE',
+ ],
+ ];
+ $result = $this->api->getAllUsersPreferences([
+ API::PREFERENCE_DEFAULT_REPORT,
+ API::PREFERENCE_DEFAULT_REPORT_DATE,
+ 'randomDoesNotExist'
+ ]);
$this->assertSame($expected, $result);
}
@@ -282,12 +291,12 @@ class APITest extends IntegrationTestCase
$this->api->setUserPreference($user2, API::PREFERENCE_DEFAULT_REPORT, 'valueForUser2');
$this->api->setUserPreference($user2, API::PREFERENCE_DEFAULT_REPORT_DATE, 'RandomNOTREQUESTED');
- $expected = array(
- $user2 => array(
- API::PREFERENCE_DEFAULT_REPORT => 'valueForUser2'
- ),
- );
- $result = $this->api->getAllUsersPreferences(array(API::PREFERENCE_DEFAULT_REPORT, 'randomDoesNotExist'));
+ $expected = [
+ $user2 => [
+ API::PREFERENCE_DEFAULT_REPORT => 'valueForUser2'
+ ],
+ ];
+ $result = $this->api->getAllUsersPreferences([API::PREFERENCE_DEFAULT_REPORT, 'randomDoesNotExist']);
$this->assertSame($expected, $result);
}
@@ -310,7 +319,7 @@ class APITest extends IntegrationTestCase
$identity = FakeAccess::$identity;
FakeAccess::$identity = $this->login; // ensure password will be checked against this user
- $this->api->updateUser($this->login, 'newPassword', 'email@example.com', false, $this->password);
+ $this->api->updateUser($this->login, 'newPassword', 'email@example.com', false, $this->password);
FakeAccess::$identity = $identity;
$model = new Model();
@@ -322,11 +331,13 @@ class APITest extends IntegrationTestCase
$this->assertTrue($passwordHelper->verify(UsersManager::getPasswordHash('newPassword'), $user['password']));
- $subjects = array_map(function (Mail $mail) { return $mail->getSubject(); }, $capturedMails);
+ $subjects = array_map(function (Mail $mail) {
+ return $mail->getSubject();
+ }, $capturedMails);
$this->assertEquals([
- 'UsersManager_EmailChangeNotificationSubject', // sent twice to old email and new
- 'UsersManager_EmailChangeNotificationSubject',
- 'UsersManager_PasswordChangeNotificationSubject',
+ 'UsersManager_EmailChangeNotificationSubject', // sent twice to old email and new
+ 'UsersManager_EmailChangeNotificationSubject',
+ 'UsersManager_PasswordChangeNotificationSubject',
], $subjects);
}
@@ -343,7 +354,9 @@ class APITest extends IntegrationTestCase
$this->api->updateUser($this->login, 'newPassword2', 'email2@example.com', false, $this->password);
FakeAccess::$identity = $identity;
- $subjects = array_map(function (Mail $mail) { return $mail->getSubject(); }, $capturedMails);
+ $subjects = array_map(function (Mail $mail) {
+ return $mail->getSubject();
+ }, $capturedMails);
$this->assertEquals([], $subjects);
}
@@ -384,18 +397,24 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionInvalidPasswordTooLong');
- $this->api->updateUser($this->login, str_pad('foo', UsersManager::PASSWORD_MAX_LENGTH + 1), 'email@example.com', false, $this->password);
+ $this->api->updateUser(
+ $this->login,
+ str_pad('foo', UsersManager::PASSWORD_MAX_LENGTH + 1),
+ 'email@example.com',
+ false,
+ $this->password
+ );
}
public function test_update_user_fails_if_email_exists_as_other_user_username()
{
$this->expectException(\Exception::class);
- $this->expectExceptionMessage('UsersManager_CurrentPasswordNotCorrect');
+ $this->expectExceptionMessage('UsersManager_ExceptionEmailExistsAsLogin');
$user2 = 'existed@example.com';
$this->api->addUser($user2, 'password', 'userlogin2@password.de');
- $this->api->updateUser($this->login, $this->password, $user2, false, $this->password);
+ $this->api->updateUser($this->login, $this->password, $user2, false, $this->password);
}
public function test_update_can_update_user_email_to_own_username()
@@ -414,7 +433,7 @@ class APITest extends IntegrationTestCase
public function test_cannot_create_user_if_email_exists_as_username()
{
$this->expectException(\Exception::class);
- $this->expectExceptionMessage('UsersManager_ExceptionLoginExists');
+ $this->expectExceptionMessage('UsersManager_ExceptionEmailExistsAsLogin');
$user2 = 'existed@example.com';
$this->api->addUser($user2, 'password', 'email@example.com');
@@ -444,20 +463,20 @@ class APITest extends IntegrationTestCase
// super user has admin access for every site
$access = $this->api->getSitesAccessFromUser($user2);
- $expected = array(
- array(
- 'site' => 1,
- 'access' => 'admin'
- ),
- array(
- 'site' => 2,
- 'access' => 'admin'
- ),
- array(
- 'site' => 3,
- 'access' => 'admin'
- ),
- );
+ $expected = [
+ [
+ 'site' => 1,
+ 'access' => 'admin'
+ ],
+ [
+ 'site' => 2,
+ 'access' => 'admin'
+ ],
+ [
+ 'site' => 3,
+ 'access' => 'admin'
+ ],
+ ];
$this->assertEquals($expected, $access);
}
@@ -469,7 +488,13 @@ class APITest extends IntegrationTestCase
$users = $this->api->getUsersPlusRole(1);
$this->cleanUsers($users);
$expected = [
- ['login' => 'userLogin2', 'role' => 'view', 'capabilities' => [], 'email' => 'userLogin2@password.de', 'superuser_access' => '0'],
+ [
+ 'login' => 'userLogin2',
+ 'role' => 'view',
+ 'capabilities' => [],
+ 'email' => 'userLogin2@password.de',
+ 'superuser_access' => '0',
+ ],
];
$this->assertEquals($expected, $users);
}
@@ -482,7 +507,13 @@ class APITest extends IntegrationTestCase
$users = $this->api->getUsersPlusRole(1, $limit = null, $offset = 1);
$this->cleanUsers($users);
$expected = [
- ['login' => 'userLogin2', 'role' => 'view', 'capabilities' => [], 'email' => 'userLogin2@password.de', 'superuser_access' => '0'],
+ [
+ 'login' => 'userLogin2',
+ 'role' => 'view',
+ 'capabilities' => [],
+ 'email' => 'userLogin2@password.de',
+ 'superuser_access' => '0',
+ ],
];
$this->assertEquals($expected, $users);
}
@@ -496,7 +527,13 @@ class APITest extends IntegrationTestCase
$users = $this->api->getUsersPlusRole(1, null, null, null, 'superuser');
$this->cleanUsers($users);
$expected = [
- ['login' => 'userLogin2', 'role' => 'view', 'capabilities' => [], 'email' => 'userLogin2@password.de', 'superuser_access' => '0'],
+ [
+ 'login' => 'userLogin2',
+ 'role' => 'view',
+ 'capabilities' => [],
+ 'email' => 'userLogin2@password.de',
+ 'superuser_access' => '0',
+ ],
];
$this->assertEquals($expected, $users);
}
@@ -512,9 +549,25 @@ class APITest extends IntegrationTestCase
$users = $this->api->getUsersPlusRole(1);
$this->cleanUsers($users);
$expected = [
- ['login' => 'userLogin2', 'role' => 'admin', 'capabilities' => [], 'email' => 'userLogin2@password.de', 'superuser_access' => false],
- ['login' => 'userLogin3', 'role' => 'view', 'capabilities' => [], 'superuser_access' => false],
- ['login' => 'userLogin4', 'role' => 'admin', 'capabilities' => [], 'superuser_access' => false],
+ [
+ 'login' => 'userLogin2',
+ 'role' => 'admin',
+ 'capabilities' => [],
+ 'email' => 'userLogin2@password.de',
+ 'superuser_access' => false,
+ ],
+ [
+ 'login' => 'userLogin3',
+ 'role' => 'view',
+ 'capabilities' => [],
+ 'superuser_access' => false,
+ ],
+ [
+ 'login' => 'userLogin4',
+ 'role' => 'admin',
+ 'capabilities' => [],
+ 'superuser_access' => false,
+ ],
];
$this->assertEquals($expected, $users);
}
@@ -531,10 +584,31 @@ class APITest extends IntegrationTestCase
$users = $this->api->getUsersPlusRole(1);
$this->cleanUsers($users);
$expected = [
- ['login' => 'userLogin2', 'role' => 'admin', 'capabilities' => [], 'email' => 'userLogin2@password.de', 'superuser_access' => false],
- ['login' => 'userLogin3', 'role' => 'view', 'capabilities' => [], 'superuser_access' => false],
- ['login' => 'userLogin4', 'role' => 'admin', 'capabilities' => [], 'superuser_access' => false],
- ['login' => 'userLogin5', 'role' => 'noaccess', 'capabilities' => [], 'superuser_access' => false],
+ [
+ 'login' => 'userLogin2',
+ 'role' => 'admin',
+ 'capabilities' => [],
+ 'email' => 'userLogin2@password.de',
+ 'superuser_access' => false,
+ ],
+ [
+ 'login' => 'userLogin3',
+ 'role' => 'view',
+ 'capabilities' => [],
+ 'superuser_access' => false,
+ ],
+ [
+ 'login' => 'userLogin4',
+ 'role' => 'admin',
+ 'capabilities' => [],
+ 'superuser_access' => false,
+ ],
+ [
+ 'login' => 'userLogin5',
+ 'role' => 'noaccess',
+ 'capabilities' => [],
+ 'superuser_access' => false,
+ ],
];
$this->assertEquals($expected, $users);
}
@@ -550,11 +624,46 @@ class APITest extends IntegrationTestCase
$users = $this->api->getUsersPlusRole(1);
$this->cleanUsers($users);
$expected = [
- ['login' => 'userLogin', 'email' => 'userlogin@password.de', 'superuser_access' => false, 'role' => 'noaccess', 'capabilities' => [], 'uses_2fa' => false],
- ['login' => 'userLogin2', 'email' => 'userLogin2@password.de', 'superuser_access' => true, 'role' => 'superuser', 'capabilities' => [], 'uses_2fa' => false],
- ['login' => 'userLogin3', 'email' => 'userLogin3@password.de', 'superuser_access' => false, 'role' => 'view', 'capabilities' => [], 'uses_2fa' => false],
- ['login' => 'userLogin4', 'email' => 'userLogin4@password.de', 'superuser_access' => true, 'role' => 'superuser', 'capabilities' => [], 'uses_2fa' => false],
- ['login' => 'userLogin5', 'email' => 'userLogin5@password.de', 'superuser_access' => false, 'role' => 'noaccess', 'capabilities' => [], 'uses_2fa' => false],
+ [
+ 'login' => 'userLogin',
+ 'email' => 'userlogin@password.de',
+ 'superuser_access' => false,
+ 'role' => 'noaccess',
+ 'capabilities' => [],
+ 'uses_2fa' => false,
+ ],
+ [
+ 'login' => 'userLogin2',
+ 'email' => 'userLogin2@password.de',
+ 'superuser_access' => true,
+ 'role' => 'superuser',
+ 'capabilities' => [],
+ 'uses_2fa' => false,
+ ],
+ [
+ 'login' => 'userLogin3',
+ 'email' => 'userLogin3@password.de',
+ 'superuser_access' => false,
+ 'role' => 'view',
+ 'capabilities' => [],
+ 'uses_2fa' => false,
+ ],
+ [
+ 'login' => 'userLogin4',
+ 'email' => 'userLogin4@password.de',
+ 'superuser_access' => true,
+ 'role' => 'superuser',
+ 'capabilities' => [],
+ 'uses_2fa' => false,
+ ],
+ [
+ 'login' => 'userLogin5',
+ 'email' => 'userLogin5@password.de',
+ 'superuser_access' => false,
+ 'role' => 'noaccess',
+ 'capabilities' => [],
+ 'uses_2fa' => false,
+ ],
];
$this->assertEquals($expected, $users);
}
@@ -571,8 +680,18 @@ class APITest extends IntegrationTestCase
$users = $this->api->getUsersPlusRole(1, null, null, null, 'admin');
$this->cleanUsers($users);
$expected = [
- ['login' => 'userLogin2', 'role' => 'admin', 'capabilities' => [], 'email' => 'userLogin2@password.de', 'superuser_access' => false],
- ['login' => 'userLogin5', 'role' => 'admin', 'capabilities' => [], 'superuser_access' => false],
+ [
+ 'login' => 'userLogin2',
+ 'role' => 'admin',
+ 'capabilities' => [],
+ 'email' => 'userLogin2@password.de',
+ 'superuser_access' => false,
+ ],
+ ['login' => 'userLogin5',
+ 'role' => 'admin',
+ 'capabilities' => [],
+ 'superuser_access' => false,
+ ],
];
$this->assertEquals($expected, $users);
@@ -580,7 +699,7 @@ class APITest extends IntegrationTestCase
$users = $this->api->getUsersPlusRole(1, null, null, null, 'write');
$this->cleanUsers($users);
$expected = [
- ['login' => 'userLogin6', 'role' => 'write', 'capabilities' => [], 'superuser_access' => false],
+ ['login' => 'userLogin6', 'role' => 'write', 'capabilities' => [], 'superuser_access' => false],
];
$this->assertEquals($expected, $users);
}
@@ -595,9 +714,30 @@ class APITest extends IntegrationTestCase
$users = $this->api->getUsersPlusRole(1, null, null, null, 'noaccess');
$this->cleanUsers($users);
$expected = [
- ['login' => 'userLogin', 'role' => 'noaccess', 'superuser_access' => false, 'email' => 'userlogin@password.de', 'capabilities' => [], 'uses_2fa' => false],
- ['login' => 'userLogin2', 'role' => 'noaccess', 'superuser_access' => false, 'email' => 'userLogin2@password.de', 'capabilities' => [], 'uses_2fa' => false],
- ['login' => 'userLogin5', 'role' => 'noaccess', 'superuser_access' => false, 'email' => 'userLogin5@password.de', 'capabilities' => [], 'uses_2fa' => false],
+ [
+ 'login' => 'userLogin',
+ 'role' => 'noaccess',
+ 'superuser_access' => false,
+ 'email' => 'userlogin@password.de',
+ 'capabilities' => [],
+ 'uses_2fa' => false,
+ ],
+ [
+ 'login' => 'userLogin2',
+ 'role' => 'noaccess',
+ 'superuser_access' => false,
+ 'email' => 'userLogin2@password.de',
+ 'capabilities' => [],
+ 'uses_2fa' => false,
+ ],
+ [
+ 'login' => 'userLogin5',
+ 'role' => 'noaccess',
+ 'superuser_access' => false,
+ 'email' => 'userLogin5@password.de',
+ 'capabilities' => [],
+ 'uses_2fa' => false,
+ ],
];
$this->assertEquals($expected, $users);
}
@@ -615,8 +755,22 @@ class APITest extends IntegrationTestCase
$users = $this->api->getUsersPlusRole(1, null, null, null, 'superuser');
$this->cleanUsers($users);
$expected = [
- ['login' => 'userLogin2', 'email' => 'userLogin2@password.de', 'superuser_access' => true, 'role' => 'superuser', 'capabilities' => [], 'uses_2fa' => false],
- ['login' => 'userLogin4', 'email' => 'userLogin4@password.de', 'superuser_access' => true, 'role' => 'superuser', 'capabilities' => [], 'uses_2fa' => false],
+ [
+ 'login' => 'userLogin2',
+ 'email' => 'userLogin2@password.de',
+ 'superuser_access' => true,
+ 'role' => 'superuser',
+ 'capabilities' => [],
+ 'uses_2fa' => false,
+ ],
+ [
+ 'login' => 'userLogin4',
+ 'email' => 'userLogin4@password.de',
+ 'superuser_access' => true,
+ 'role' => 'superuser',
+ 'capabilities' => [],
+ 'uses_2fa' => false,
+ ],
];
$this->assertEquals($expected, $users);
}
@@ -632,8 +786,22 @@ class APITest extends IntegrationTestCase
$users = $this->api->getUsersPlusRole(1, null, null, 'searchText');
$this->cleanUsers($users);
$expected = [
- ['login' => 'searchTextLogin', 'email' => 'someemail@email.com', 'superuser_access' => true, 'role' => 'superuser', 'capabilities' => [], 'uses_2fa' => false],
- ['login' => 'userLogin2', 'email' => 'searchTextdef@email.com', 'superuser_access' => false, 'role' => 'view', 'capabilities' => [], 'uses_2fa' => false],
+ [
+ 'login' => 'searchTextLogin',
+ 'email' => 'someemail@email.com',
+ 'superuser_access' => true,
+ 'role' => 'superuser',
+ 'capabilities' => [],
+ 'uses_2fa' => false,
+ ],
+ [
+ 'login' => 'userLogin2',
+ 'email' => 'searchTextdef@email.com',
+ 'superuser_access' => false,
+ 'role' => 'view',
+ 'capabilities' => [],
+ 'uses_2fa' => false,
+ ],
];
$this->assertEquals($expected, $users);
}
@@ -649,8 +817,22 @@ class APITest extends IntegrationTestCase
$users = $this->api->getUsersPlusRole(1, $limit = 2, $offset = 1);
$this->cleanUsers($users);
$expected = [
- ['login' => 'userLogin', 'email' => 'userlogin@password.de', 'superuser_access' => false, 'role' => 'noaccess', 'capabilities' => [], 'uses_2fa' => false],
- ['login' => 'userLogin2', 'email' => 'searchTextdef@email.com', 'superuser_access' => false, 'role' => 'view', 'capabilities' => [], 'uses_2fa' => false],
+ [
+ 'login' => 'userLogin',
+ 'email' => 'userlogin@password.de',
+ 'superuser_access' => false,
+ 'role' => 'noaccess',
+ 'capabilities' => [],
+ 'uses_2fa' => false,
+ ],
+ [
+ 'login' => 'userLogin2',
+ 'email' => 'searchTextdef@email.com',
+ 'superuser_access' => false,
+ 'role' => 'view',
+ 'capabilities' => [],
+ 'uses_2fa' => false,
+ ],
];
$this->assertEquals($expected, $users);
}
@@ -663,9 +845,9 @@ class APITest extends IntegrationTestCase
$access = $this->api->getSitesAccessForUser('userLogin');
$expected = [
- ['idsite' => '1', 'site_name' => 'Piwik test', 'role' => 'admin', 'capabilities' => []],
- ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
- ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
+ ['idsite' => '1', 'site_name' => 'Piwik test', 'role' => 'admin', 'capabilities' => []],
+ ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
+ ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
];
$this->assertEquals($expected, $access);
}
@@ -678,8 +860,8 @@ class APITest extends IntegrationTestCase
$access = $this->api->getSitesAccessForUser('userLogin', $limit = null, $offset = 1);
$expected = [
- ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
- ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
+ ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
+ ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
];
$this->assertEquals($expected, $access);
}
@@ -692,8 +874,8 @@ class APITest extends IntegrationTestCase
$access = $this->api->getSitesAccessForUser('userLogin', $limit = 2, $offset = 1);
$expected = [
- ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
- ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
+ ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
+ ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
];
$this->assertEquals($expected, $access);
}
@@ -709,13 +891,26 @@ class APITest extends IntegrationTestCase
SitesManagerAPI::getInstance()->updateSite(1, 'searchTerm site');
SitesManagerAPI::getInstance()->updateSite(2, null, ['http://searchTerm.com']);
- SitesManagerAPI::getInstance()->updateSite(3, null, null, null, null, null, null, null, null, null, null, 'the searchTerm group');
+ SitesManagerAPI::getInstance()->updateSite(
+ 3,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 'the searchTerm group'
+ );
$access = $this->api->getSitesAccessForUser('userLogin', null, null, 'searchTerm');
$expected = [
- ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
- ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
- ['idsite' => '1', 'site_name' => 'searchTerm site', 'role' => 'admin', 'capabilities' => []],
+ ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
+ ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
+ ['idsite' => '1', 'site_name' => 'searchTerm site', 'role' => 'admin', 'capabilities' => []],
];
$this->assertEquals($expected, $access);
}
@@ -728,8 +923,8 @@ class APITest extends IntegrationTestCase
$access = $this->api->getSitesAccessForUser('userLogin', null, null, null, 'view');
$expected = [
- ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
- ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
+ ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
+ ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
];
$this->assertEquals($expected, $access);
}
@@ -745,8 +940,8 @@ class APITest extends IntegrationTestCase
$access = $this->api->getSitesAccessForUser('userLogin2', null, null, null, 'view');
$expected = [
- ['idsite' => '1', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
- ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
+ ['idsite' => '1', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
+ ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
];
$this->assertEquals($expected, $access);
}
@@ -761,8 +956,8 @@ class APITest extends IntegrationTestCase
$access = $this->api->getSitesAccessForUser('userLogin2', null, null, null, 'noaccess');
$expected = [
- ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'noaccess', 'capabilities' => []],
- ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'noaccess', 'capabilities' => []],
+ ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'noaccess', 'capabilities' => []],
+ ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'noaccess', 'capabilities' => []],
];
$this->assertEquals($expected, $access);
}
@@ -774,8 +969,8 @@ class APITest extends IntegrationTestCase
$access = $this->api->getSitesAccessForUser('userLogin2', null, null, null, 'some');
$expected = [
- ['idsite' => '1', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
- ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'admin', 'capabilities' => []],
+ ['idsite' => '1', 'site_name' => 'Piwik test', 'role' => 'view', 'capabilities' => []],
+ ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'admin', 'capabilities' => []],
];
$this->assertEquals($expected, $access);
}
@@ -784,9 +979,9 @@ class APITest extends IntegrationTestCase
{
$access = $this->api->getSitesAccessForUser('userLogin');
$expected = [
- ['idsite' => '1', 'site_name' => 'Piwik test', 'role' => 'noaccess', 'capabilities' => []],
- ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'noaccess', 'capabilities' => []],
- ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'noaccess', 'capabilities' => []],
+ ['idsite' => '1', 'site_name' => 'Piwik test', 'role' => 'noaccess', 'capabilities' => []],
+ ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'noaccess', 'capabilities' => []],
+ ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'noaccess', 'capabilities' => []],
];
$this->assertEquals($expected, $access);
@@ -803,7 +998,7 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionMultipleRoleSet');
- $this->api->setUserAccess($this->login, array('view', 'admin'), array(1));
+ $this->api->setUserAccess($this->login, ['view', 'admin'], [1]);
}
public function test_setUserAccess_NeedsAtLeastOneRole()
@@ -811,7 +1006,7 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionNoRoleSet');
- $this->api->setUserAccess($this->login, array(TestCap2::ID), array(1));
+ $this->api->setUserAccess($this->login, [TestCap2::ID], [1]);
}
public function test_setUserAccess_NeedsAtLeastOneRoleAsString()
@@ -819,7 +1014,7 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionAccessValues');
- $this->api->setUserAccess($this->login, TestCap2::ID, array(1));
+ $this->api->setUserAccess($this->login, TestCap2::ID, [1]);
}
public function test_setUserAccess_InvalidCapability()
@@ -827,7 +1022,7 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionAccessValues');
- $this->api->setUserAccess($this->login, array('admin', 'foobar'), array(1));
+ $this->api->setUserAccess($this->login, ['admin', 'foobar'], [1]);
}
public function test_setUserAccess_NeedsAtLeastOneRoleNoneGiven()
@@ -835,7 +1030,7 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionNoRoleSet');
- $this->api->setUserAccess($this->login, array(), array(1));
+ $this->api->setUserAccess($this->login, [], [1]);
}
public function test_setUserAccess_CannotSetAdminToAnonymous()
@@ -843,7 +1038,7 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionAnonymousAccessNotPossible');
- $this->api->setUserAccess('anonymous', 'admin', array(1));
+ $this->api->setUserAccess('anonymous', 'admin', [1]);
}
public function test_setUserAccess_CannotSetWriteToAnonymous()
@@ -851,7 +1046,7 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionAnonymousAccessNotPossible');
- $this->api->setUserAccess('anonymous', 'write', array(1));
+ $this->api->setUserAccess('anonymous', 'write', [1]);
}
public function test_setUserAccess_UserDoesNotExist()
@@ -859,38 +1054,38 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionUserDoesNotExist');
- $this->api->setUserAccess('foobar', Admin::ID, array(1));
+ $this->api->setUserAccess('foobar', Admin::ID, [1]);
}
public function test_setUserAccess_SetRoleAndCapabilities()
{
- $access = array(TestCap2::ID, View::ID, TestCap3::ID);
- $this->api->setUserAccess($this->login, $access, array(1));
+ $access = [TestCap2::ID, View::ID, TestCap3::ID];
+ $this->api->setUserAccess($this->login, $access, [1]);
$access = $this->model->getSitesAccessFromUser($this->login);
- $expected = array(
- array('site' => '1', 'access' => 'view'),
- array('site' => '1', 'access' => TestCap2::ID),
- array('site' => '1', 'access' => TestCap3::ID),
- );
+ $expected = [
+ ['site' => '1', 'access' => 'view'],
+ ['site' => '1', 'access' => TestCap2::ID],
+ ['site' => '1', 'access' => TestCap3::ID],
+ ];
$this->assertEquals($expected, $access);
}
public function test_setUserAccess_SetRoleAsString()
{
- $this->api->setUserAccess($this->login, View::ID, array(1));
+ $this->api->setUserAccess($this->login, View::ID, [1]);
$access = $this->model->getSitesAccessFromUser($this->login);
- $this->assertEquals(array(array('site' => '1', 'access' => 'view')), $access);
+ $this->assertEquals([['site' => '1', 'access' => 'view']], $access);
}
public function test_setUserAccess_SetRoleAsArray()
{
- $this->api->setUserAccess($this->login, array(View::ID), array(1));
+ $this->api->setUserAccess($this->login, [View::ID], [1]);
$access = $this->model->getSitesAccessFromUser($this->login);
- $this->assertEquals(array(array('site' => '1', 'access' => 'view')), $access);
+ $this->assertEquals([['site' => '1', 'access' => 'view']], $access);
}
public function test_addCapabilities_failsWhenNotCapabilityIsGivenAsString()
@@ -898,7 +1093,7 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionAccessValues');
- $this->api->addCapabilities($this->login, View::ID, array(1));
+ $this->api->addCapabilities($this->login, View::ID, [1]);
}
public function test_addCapabilities_failsWhenNotCapabilityIsGivenAsArray()
@@ -906,7 +1101,7 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionAccessValues');
- $this->api->addCapabilities($this->login, array(TestCap2::ID, View::ID), array(1));
+ $this->api->addCapabilities($this->login, [TestCap2::ID, View::ID], [1]);
}
public function test_addCapabilities_failsWhenUserDoesNotExist()
@@ -914,31 +1109,31 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionUserDoesNotExist');
- $this->api->addCapabilities('foobar', array(TestCap2::ID), array(1));
+ $this->api->addCapabilities('foobar', [TestCap2::ID], [1]);
}
public function test_addCapabilities_DoesNotAddSameCapabilityTwice()
{
- $addAccess = array(TestCap2::ID, View::ID, TestCap3::ID);
- $this->api->setUserAccess($this->login, $addAccess, array(1));
+ $addAccess = [TestCap2::ID, View::ID, TestCap3::ID];
+ $this->api->setUserAccess($this->login, $addAccess, [1]);
$access = $this->model->getSitesAccessFromUser($this->login);
- $expected = array(
- array('site' => '1', 'access' => 'view'),
- array('site' => '1', 'access' => TestCap2::ID),
- array('site' => '1', 'access' => TestCap3::ID),
- );
+ $expected = [
+ ['site' => '1', 'access' => 'view'],
+ ['site' => '1', 'access' => TestCap2::ID],
+ ['site' => '1', 'access' => TestCap3::ID],
+ ];
$this->assertEquals($expected, $access);
- $this->api->addCapabilities($this->login, array(TestCap2::ID, TestCap3::ID), array(1));
+ $this->api->addCapabilities($this->login, [TestCap2::ID, TestCap3::ID], [1]);
$access = $this->model->getSitesAccessFromUser($this->login);
$this->assertEquals($expected, $access);
- $this->api->addCapabilities($this->login, array(TestCap2::ID, TestCap1::ID, TestCap3::ID), array(1));
+ $this->api->addCapabilities($this->login, [TestCap2::ID, TestCap1::ID, TestCap3::ID], [1]);
- $expected[] = array('site' => '1', 'access' => TestCap1::ID);
+ $expected[] = ['site' => '1', 'access' => TestCap1::ID];
$access = $this->model->getSitesAccessFromUser($this->login);
$this->assertEquals($expected, $access);
}
@@ -947,27 +1142,27 @@ class APITest extends IntegrationTestCase
{
$access = $this->model->getSitesAccessFromUser($this->login);
- $this->assertEquals(array(), $access);
+ $this->assertEquals([], $access);
- $this->api->addCapabilities($this->login, array(TestCap2::ID, TestCap3::ID), array(1));
+ $this->api->addCapabilities($this->login, [TestCap2::ID, TestCap3::ID], [1]);
- $this->assertEquals(array(), $access);
+ $this->assertEquals([], $access);
}
public function test_addCapabilities_DoesNotAddCapabilitiesWhichAreIncludedInRoleAlready()
{
- $this->api->setUserAccess($this->login, Write::ID, array(1));
+ $this->api->setUserAccess($this->login, Write::ID, [1]);
$access = $this->model->getSitesAccessFromUser($this->login);
- $expected = array(
- array('site' => '1', 'access' => 'write'),
- );
+ $expected = [
+ ['site' => '1', 'access' => 'write'],
+ ];
$this->assertEquals($expected, $access);
- $this->api->addCapabilities($this->login, array(TestCap2::ID, TestCap3::ID), array(1));
+ $this->api->addCapabilities($this->login, [TestCap2::ID, TestCap3::ID], [1]);
- $expected[] = array('site' => '1', 'access' => TestCap3::ID);
+ $expected[] = ['site' => '1', 'access' => TestCap3::ID];
$access = $this->model->getSitesAccessFromUser($this->login);
// did not add TestCap2
@@ -976,16 +1171,16 @@ class APITest extends IntegrationTestCase
public function test_addCapabilities_DoesAddCapabilitiesWhichAreNotIncludedInRoleYetAlready()
{
- $this->api->setUserAccess($this->login, Admin::ID, array(1));
+ $this->api->setUserAccess($this->login, Admin::ID, [1]);
$access = $this->model->getSitesAccessFromUser($this->login);
- $expected = array(
- array('site' => '1', 'access' => 'admin'),
- );
+ $expected = [
+ ['site' => '1', 'access' => 'admin'],
+ ];
$this->assertEquals($expected, $access);
- $this->api->addCapabilities($this->login, array(TestCap2::ID, TestCap1::ID, TestCap3::ID), array(1));
+ $this->api->addCapabilities($this->login, [TestCap2::ID, TestCap1::ID, TestCap3::ID], [1]);
$access = $this->model->getSitesAccessFromUser($this->login);
$this->assertEquals($expected, $access);
@@ -996,7 +1191,7 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionAccessValues');
- $this->api->removeCapabilities($this->login, View::ID, array(1));
+ $this->api->removeCapabilities($this->login, View::ID, [1]);
}
public function test_removeCapabilities_failsWhenNotCapabilityIsGivenAsArray()
@@ -1004,7 +1199,7 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionAccessValues');
- $this->api->removeCapabilities($this->login, array(TestCap2::ID, View::ID), array(1));
+ $this->api->removeCapabilities($this->login, [TestCap2::ID, View::ID], [1]);
}
public function test_removeCapabilities_failsWhenUserDoesNotExist()
@@ -1012,21 +1207,21 @@ class APITest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionUserDoesNotExist');
- $this->api->removeCapabilities('foobar', array(TestCap2::ID), array(1));
+ $this->api->removeCapabilities('foobar', [TestCap2::ID], [1]);
}
public function test_removeCapabilities()
{
- $addAccess = array(View::ID, TestCap2::ID, TestCap3::ID, TestCap1::ID);
- $this->api->setUserAccess($this->login, $addAccess, array(1));
+ $addAccess = [View::ID, TestCap2::ID, TestCap3::ID, TestCap1::ID];
+ $this->api->setUserAccess($this->login, $addAccess, [1]);
$access = $this->getAccessInSite($this->login, 1);
$this->assertEquals($addAccess, $access);
- $this->api->removeCapabilities($this->login, array(TestCap3::ID, TestCap2::ID), 1);
+ $this->api->removeCapabilities($this->login, [TestCap3::ID, TestCap2::ID], 1);
$access = $this->getAccessInSite($this->login, 1);
- $this->assertEquals(array(View::ID, TestCap1::ID), $access);
+ $this->assertEquals([View::ID, TestCap1::ID], $access);
}
public function test_setSuperUserAccess_failsIfCurrentPasswordIsIncorrect()
@@ -1037,10 +1232,211 @@ class APITest extends IntegrationTestCase
$this->api->setSuperUserAccess($this->login, true, 'asldfkjds');
}
+ public function testInviteUserAsSuperUser()
+ {
+ $eventWasFired = false;
+
+ EventDispatcher::getInstance()->addObserver('UsersManager.inviteUser.end', function ($userLogin, $email) use (&$eventWasFired) {
+ self::assertEquals('pendingLoginTest', $userLogin);
+ self::assertEquals('pendingLoginTest@matomo.org', $email);
+ $eventWasFired = true;
+ });
+
+ $this->api->inviteUser('pendingLoginTest', 'pendingLoginTest@matomo.org', 1);
+ $user = $this->model->isPendingUser('pendingLoginTest');
+ $this->assertTrue($user);
+ $this->assertTrue($eventWasFired);
+ }
+
+ public function testInviteUserAsAdmin()
+ {
+ $this->addUserWithAccess('adminUser', 'admin', 1);
+ $this->setCurrentUser('adminUser', 'admin', 1);
+
+ $this->api->inviteUser('pendingLoginTest', 'pendingLoginTest@matomo.org', 1);
+ $user = $this->model->isPendingUser('pendingLoginTest');
+ $this->assertTrue($user);
+ }
+
+ public function testInviteUserAsAdminForAnotherSiteDoesntWork()
+ {
+ self::expectException(\Exception::class);
+
+ $this->addUserWithAccess('adminUser', 'admin', 1);
+ $this->setCurrentUser('adminUser', 'admin', 1);
+
+ $this->api->inviteUser('pendingLoginTest', 'pendingLoginTest@matomo.org', 2);
+ }
+
+ public function testInviteUserAsWriteUserNotAllowed()
+ {
+ self::expectException(NoAccessException::class);
+
+ $this->addUserWithAccess('anyUser', 'write', 1);
+ $this->setCurrentUser('anyUser', 'write', 1);
+
+ $this->api->inviteUser('pendingLoginTest', 'pendingLoginTest@matomo.org', 1);
+ }
+
+ public function testInviteUserAsUserNotAllowed()
+ {
+ self::expectException(NoAccessException::class);
+
+ $this->addUserWithAccess('anyUser', 'view', 1);
+ $this->setCurrentUser('anyUser', 'view', 1);
+
+ $this->api->inviteUser('pendingLoginTest', 'pendingLoginTest@matomo.org', 1);
+ }
+
+ public function testInviteUserExpiredInGivenDays()
+ {
+ Date::$now = time(); // freeze time, so it doesn't change between inviting user and comparing the time
+ $expiredDays = 10;
+ $this->api->inviteUser('pendingLoginTest', 'pendingLoginTest@matomo.org', null, $expiredDays);
+ $user = $this->model->getUser('pendingLoginTest');
+ $expired = Date::factory($user['invite_expired_at'])->getTimestamp();
+ $now = Date::now()->getTimestamp();
+ $diff = $expired - $now;
+ $this->assertEquals($expiredDays, $diff / 3600 / 24);
+ }
+
+ public function testResendInviteAsSuperUser()
+ {
+ $this->api->inviteUser('pendingLoginTest', 'pendingLoginTest@matomo.org', 1);
+ $user = $this->model->isPendingUser('pendingLoginTest');
+ $this->assertTrue($user);
+
+ $eventWasFired = false;
+
+ EventDispatcher::getInstance()->addObserver('UsersManager.inviteUser.resendInvite', function ($userLogin) use (&$eventWasFired) {
+ self::assertEquals('pendingLoginTest', $userLogin);
+ $eventWasFired = true;
+ });
+
+ $this->api->resendInvite('pendingLoginTest');
+ self::assertTrue($eventWasFired);
+ }
+
+ public function testResendInviteFailsIfUserNotPending()
+ {
+ self::expectException(\Exception::class);
+ self::expectExceptionMessage('UsersManager_ExceptionUserDoesNotExist');
+
+ $this->api->resendInvite('notExistingUser');
+ }
+
+ public function testResendInviteAsInviterWithAdminAccess()
+ {
+ $this->addUserWithAccess('adminUser', 'admin', 1);
+ $this->setCurrentUser('adminUser', 'admin', 1);
+
+ $this->api->inviteUser('pendingLoginTest', 'pendingLoginTest@matomo.org', 1);
+ $user = $this->model->isPendingUser('pendingLoginTest');
+ $this->assertTrue($user);
+
+ $eventWasFired = false;
+
+ EventDispatcher::getInstance()->addObserver('UsersManager.inviteUser.resendInvite', function ($userLogin) use (&$eventWasFired) {
+ self::assertEquals('pendingLoginTest', $userLogin);
+ $eventWasFired = true;
+ });
+
+ $this->api->resendInvite('pendingLoginTest');
+ self::assertTrue($eventWasFired);
+ }
+
+ public function testResendInviteFailsAsInviterWithoutAdminAccess()
+ {
+ self::expectException(NoAccessException::class);
+
+ $this->addUserWithAccess('adminUser', 'write', 1);
+
+ // fake admin access for inviting the user
+ $this->setCurrentUser('adminUser', 'admin', 1);
+
+ $this->api->inviteUser('pendingLoginTest', 'pendingLoginTest@matomo.org', 1);
+ $user = $this->model->isPendingUser('pendingLoginTest');
+ $this->assertTrue($user);
+
+ // degraded to write access
+ $this->setCurrentUser('adminUser', 'admin', []);
+ $this->setCurrentUser('adminUser', 'write', 1);
+
+ $this->api->resendInvite('pendingLoginTest');
+ }
+
+ public function testResendInviteFailsAsNotInvitingAdmin()
+ {
+ self::expectException(NoAccessException::class);
+ self::expectExceptionMessage('UsersManager_ExceptionResendInviteDenied');
+
+ $this->addUserWithAccess('adminUser', 'admin', 1);
+ $this->addUserWithAccess('anotherAdminUser', 'admin', 1);
+
+ $this->setCurrentUser('adminUser', 'admin', 1);
+
+ $this->api->inviteUser('pendingLoginTest', 'pendingLoginTest@matomo.org', 1);
+ $user = $this->model->isPendingUser('pendingLoginTest');
+ $this->assertTrue($user);
+
+ // another admin tries to resend invite
+ $this->setCurrentUser('anotherAdminUser', 'admin', 1);
+
+ $this->api->resendInvite('pendingLoginTest');
+ }
+
+ public function testInvitedUserCanBeRemovedBySuperUser()
+ {
+ Fixture::createSuperUser();
+ $this->addUserWithAccess('adminUser', 'admin', 1);
+ $this->setCurrentUser('adminUser', 'admin', 1);
+
+ $this->api->inviteUser('pendingLoginTest', 'pendingLoginTest@matomo.org', 1);
+ $user = $this->model->isPendingUser('pendingLoginTest');
+ $this->assertTrue($user);
+
+ $this->setCurrentUser('superUserLogin', 'superuser', 1);
+
+ $this->api->deleteUser('pendingLoginTest');
+ self::assertEmpty($this->model->getUser('pendingLoginTest'));
+ }
+
+ public function testInvitedUserCanBeRemovedByInviter()
+ {
+ Fixture::createSuperUser();
+ $this->addUserWithAccess('adminUser', 'admin', 1);
+ $this->setCurrentUser('adminUser', 'admin', 1);
+
+ $this->api->inviteUser('pendingLoginTest', 'pendingLoginTest@matomo.org', 1);
+ $user = $this->model->isPendingUser('pendingLoginTest');
+ $this->assertTrue($user);
+
+ $this->api->deleteUser('pendingLoginTest');
+ self::assertEmpty($this->model->getUser('pendingLoginTest'));
+ }
+
+ public function testInvitedUserCanNOTBeRemovedByOtherAdmin()
+ {
+ self::expectException(\Exception::class);
+ self::expectExceptionMessage('UsersManager_ExceptionUserDoesNotExist');
+
+ $this->addUserWithAccess('adminUser', 'admin', 1);
+ $this->addUserWithAccess('adminUser2', 'admin', 1);
+ $this->setCurrentUser('adminUser', 'admin', 1);
+
+ $this->api->inviteUser('pendingLoginTest', 'pendingLoginTest@matomo.org', 1);
+ $user = $this->model->isPendingUser('pendingLoginTest');
+ $this->assertTrue($user);
+
+ $this->setCurrentUser('adminUser2', 'admin', 1);
+
+ $this->api->deleteUser('pendingLoginTest');
+ }
+
private function getAccessInSite($login, $idSite)
{
$access = $this->model->getSitesAccessFromUser($login);
- $ids = array();
+ $ids = [];
foreach ($access as $entry) {
if ($entry['site'] == $idSite) {
$ids[] = $entry['access'];
@@ -1056,17 +1452,24 @@ class APITest extends IntegrationTestCase
public function provideContainerConfig()
{
- return array(
- 'Piwik\Access' => new FakeAccess(),
- 'usersmanager.user_preference_names' => \DI\add(['randomDoesNotExist', 'RandomNOTREQUESTED', 'preferenceName']),
- 'observers.global' => \DI\add([
- ['Access.Capability.addCapabilities', \DI\value(function (&$capabilities) {
- $capabilities[] = new TestCap1();
- $capabilities[] = new TestCap2();
- $capabilities[] = new TestCap3();
- })],
- ]),
- );
+ return [
+ 'Piwik\Access' => new FakeAccess(),
+ 'usersmanager.user_preference_names' => \DI\add([
+ 'randomDoesNotExist',
+ 'RandomNOTREQUESTED',
+ 'preferenceName'
+ ]),
+ 'observers.global' => \DI\add([
+ [
+ 'Access.Capability.addCapabilities',
+ \DI\value(function (&$capabilities) {
+ $capabilities[] = new TestCap1();
+ $capabilities[] = new TestCap2();
+ $capabilities[] = new TestCap3();
+ })
+ ],
+ ]),
+ ];
}
private function addUserWithAccess($username, $accessLevel, $idSite, $email = null)
@@ -1075,7 +1478,7 @@ class APITest extends IntegrationTestCase
if ($accessLevel == 'superuser') {
$userUpdater = new UserUpdater();
$userUpdater->setSuperUserAccessWithoutCurrentPassword($username, true);
- } else if ($accessLevel) {
+ } elseif ($accessLevel) {
$this->api->setUserAccess($username, $accessLevel, $idSite);
}
}
@@ -1086,8 +1489,10 @@ class APITest extends IntegrationTestCase
FakeAccess::$superUser = $accessLevel == 'superuser';
if ($accessLevel == 'view') {
FakeAccess::$idSitesView = is_array($idSite) ? $idSite : [$idSite];
- } else if ($accessLevel == 'admin') {
+ } elseif ($accessLevel == 'admin') {
FakeAccess::$idSitesAdmin = is_array($idSite) ? $idSite : [$idSite];
+ } elseif ($accessLevel == 'write') {
+ FakeAccess::$idSitesWrite = is_array($idSite) ? $idSite : [$idSite];
}
}
@@ -1095,7 +1500,11 @@ class APITest extends IntegrationTestCase
{
foreach ($users as &$user) {
unset($user['date_registered']);
+ unset($user['invite_expired_at']);
+ unset($user['invite_accept_at']);
+ unset($user['invite_token']);
unset($user['invite_status']);
+ unset($user['invited_by']);
}
}
}
diff --git a/plugins/UsersManager/tests/Integration/UserInviteTest.php b/plugins/UsersManager/tests/Integration/UserInviteTest.php
index 098089d33e..3c70b7068a 100644
--- a/plugins/UsersManager/tests/Integration/UserInviteTest.php
+++ b/plugins/UsersManager/tests/Integration/UserInviteTest.php
@@ -1,4 +1,5 @@
'000pendingUser3',
- 'email' => 'pendinguser3light@example.com'
- );
+ protected $pendingUser = [
+ 'login' => '000pendingUser3',
+ 'email' => 'pendinguser3light@example.com'
+ ];
+ protected $capturedToken = null;
public function setUp(): void
{
parent::setUp();
+ Fixture::createSuperUser();
+ Fixture::createWebsite('2010-01-01 05:00:00');
$this->model = new Model();
- $this->model->addUser($this->pendingUser['login'], '', $this->pendingUser['email'], $this->dateTime, 1);
}
- public function test_getInviteUser()
+ public function testInviteUser()
{
+ Request::processRequest(
+ 'UsersManager.inviteUser',
+ [
+ 'userLogin' => $this->pendingUser['login'],
+ 'email' => $this->pendingUser['email'],
+ 'idSite' => 1,
+ 'expiryInDays' => 7
+ ]
+ );
+
$user = $this->model->getUser($this->pendingUser['login']);
- $this->assertEquals('pending', $user['invite_status']);
- }
+ // check token in database matches token in email
+ self::assertEquals($user['invite_token'], $this->model->hashTokenAuth($this->capturedToken));
+ $response = Http::sendHttpRequest(
+ Fixture::getRootUrl() . 'tests/PHPUnit/proxy/index.php?module=Login&action=acceptInvitation&token=' . $this->capturedToken,
+ 10
+ );
- public function test_addInviteUserToken()
- {
- $this->model->addTokenAuth($this->pendingUser['login'], $this->token, "Invite Token",
- Date::now()->getDatetime(),
- Date::now()->addDay(7)->getDatetime());
+ $this->assertStringContainsString('Accept invitation', $response, 'error on accept invite page');
+
+ $response = Http::sendHttpRequest(
+ Fixture::getRootUrl() . 'tests/PHPUnit/proxy/index.php?module=Login&action=declineInvitation&token=' . $this->capturedToken,
+ 10
+ );
+
+ $this->assertStringContainsString('decline this invitation', $response, 'error on decline invite page');
+
+ // move date after expire time, but before deletion time
+ Date::$now = Date::today()->addDay(8)->getTimestamp();
+
+ $eventWasFired = false;
- $response = Http::sendHttpRequest(Fixture::getRootUrl() . 'tests/PHPUnit/proxy/index.php?module=Login&action=acceptInvitation&token=' . $this->token,
- 10);
+ EventDispatcher::getInstance()->addObserver('UsersManager.deleteUser', function ($userLogin) use (&$eventWasFired) {
+ self::assertEquals($this->pendingUser['login'], $userLogin);
+ $eventWasFired = true;
+ });
- $this->assertStringContainsString('Accept Invitation', $response, 'error on accept invitation');
+ $tasks = new Tasks(new Model(), API::getInstance());
+ $tasks->cleanUpExpiredInvites();
+
+ // Task should not have removed the user yet, as expiry date time is not 3 days ago
+ self::assertIsArray($this->model->getUser($this->pendingUser['login']));
+
+ self::assertFalse($eventWasFired);
+
+ // move date after expire and deletion time
+ Date::$now = Date::today()->addDay(3)->getTimestamp();
+
+ $tasks->cleanUpExpiredInvites();
+
+ // Task should have removed the user now
+ self::assertEmpty($this->model->getUser($this->pendingUser['login']));
+
+ self::assertTrue($eventWasFired);
}
+ public function provideContainerConfig()
+ {
+ return [
+ 'Piwik\Access' => new FakeAccess(),
+ 'observers.global' => \DI\add([
+ ['Test.Mail.send', \DI\value(function (PHPMailer $mail) {
+ $body = $mail->createBody();
+ $body = preg_replace("/=[\r\n]+/", '', $body);
+ preg_match('/&token=[\s]*3D([a-zA-Z0-9=\s]+)"/', $body, $matches);
+ if (!empty($matches[1])) {
+ $capturedToken = $matches[1];
+ $capturedToken = preg_replace('/=\s*/', '', $capturedToken);
+ $this->capturedToken = $capturedToken;
+ }
+ })],
+ ]),
+ ];
+ }
}
diff --git a/plugins/UsersManager/tests/Integration/UsersManagerTest.php b/plugins/UsersManager/tests/Integration/UsersManagerTest.php
index 49059acc10..92188ea024 100644
--- a/plugins/UsersManager/tests/Integration/UsersManagerTest.php
+++ b/plugins/UsersManager/tests/Integration/UsersManagerTest.php
@@ -13,18 +13,15 @@ use Piwik\Access;
use Piwik\Auth\Password;
use Piwik\Date;
use Piwik\Option;
-use Piwik\Piwik;
use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Plugins\UsersManager\API;
use Piwik\Plugins\UsersManager\Model;
use Piwik\Plugins\UsersManager\NewsletterSignup;
use Piwik\Plugins\UsersManager\UsersManager;
use Piwik\Plugins\UsersManager\UserUpdater;
-use Piwik\SettingsPiwik;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
-use Piwik\View;
/**
@@ -66,7 +63,7 @@ class UsersManagerTest extends IntegrationTestCase
FakeAccess::$superUserLogin = 'superusertest';
$this->backupIdentity = FakeAccess::$identity;
- $this->api = API::getInstance();
+ $this->api = API::getInstance();
$this->model = new Model();
}
@@ -109,10 +106,13 @@ class UsersManagerTest extends IntegrationTestCase
unset($userAfter['idchange_last_viewed']);
unset($userAfter['password']);
unset($userAfter['invite_status']);
-
+ unset($userAfter['invite_token']);
+ unset($userAfter['invite_expired_at']);
+ unset($userAfter['invite_accept_at']);
+ unset($userAfter['invited_by']);
// implicitly checks password!
- $user['email'] = $newEmail;
+ $user['email'] = $newEmail;
$user['superuser_access'] = 0;
$user['twofactor_secret'] = '';
@@ -130,9 +130,11 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectExceptionMessage('UsersManager_ExceptionInvalidPassword');
$login = "login";
- $user = array('login' => $login,
- 'password' => "geqgeagae",
- 'email' => "test@test.com");
+ $user = array(
+ 'login' => $login,
+ 'password' => "geqgeagae",
+ 'email' => "test@test.com",
+ );
$this->api->addUser($user['login'], $user['password'], $user['email']);
@@ -150,10 +152,10 @@ class UsersManagerTest extends IntegrationTestCase
public function getAddUserInvalidLoginData()
{
return array(
- array(9, "password", "email@email.com"), // wrong login / integer => exception
- array("gegag'ggea'", "password", "email@email.com"), // wrong login / too short => exception
- array("gegag11gge&", "password", "email@email.com"), // wrong login / too long => exception
- array("geg'ag11gge@", "password", "email@email.com"), // wrong login / bad characters => exception
+ array(9, "password", "email@email.com"), // wrong login / integer => exception
+ array("gegag'ggea'", "password", "email@email.com"), // wrong login / too short => exception
+ array("gegag11gge&", "password", "email@email.com"), // wrong login / too long => exception
+ array("geg'ag11gge@", "password", "email@email.com"), // wrong login / bad characters => exception
);
}
@@ -177,6 +179,25 @@ class UsersManagerTest extends IntegrationTestCase
$this->api->addUser("test", "password2", "em2ail@email.com");
}
+ public function testAddUserExistingEmail()
+ {
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage('UsersManager_ExceptionEmailExists');
+
+ $this->api->addUser("test", "password", "email@email.com");
+ $this->api->addUser("test2", "password2", "email@email.com");
+ }
+
+
+ public function testAddUserExistingEmailAsUserName()
+ {
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage('UsersManager_ExceptionEmailExistsAsLogin');
+
+ $this->api->addUser("email@email.com", "password", "email2@email.com");
+ $this->api->addUser("test2", "password2", "email@email.com");
+ }
+
/**
* @see https://github.com/piwik/piwik/issues/8548
*/
@@ -195,8 +216,8 @@ class UsersManagerTest extends IntegrationTestCase
public function getWrongPasswordTestData()
{
return array(
- array("geggeqgeqag", "pas", "email@email.com"), // too short -> exception
- array("geggeqgeqag", "", "email@email.com"), // empty -> exception
+ array("geggeqgeqag", "pas", "email@email.com"), // too short -> exception
+ array("geggeqgeqag", "", "email@email.com"), // empty -> exception
);
}
@@ -225,7 +246,9 @@ class UsersManagerTest extends IntegrationTestCase
public function testAddUserLongPassword()
{
$login = "geggeqgeqag";
- $this->api->addUser($login, "geqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaeg", "mgeagi@geq.com");
+ $this->api->addUser($login,
+ "geqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaeg",
+ "mgeagi@geq.com");
$user = $this->api->getUser($login);
$this->assertEquals($login, $user['login']);
}
@@ -245,7 +268,7 @@ class UsersManagerTest extends IntegrationTestCase
// check that the date registered is correct
$this->assertTrue($time <= strtotime($user['date_registered']) && strtotime($user['date_registered']) <= time(),
- "the date_registered " . strtotime($user['date_registered']) . " is different from the time() " . time());
+ "the date_registered " . strtotime($user['date_registered']) . " is different from the time() " . time());
// check that password and token are properly set
$this->assertEquals(60, strlen($user['password']));
@@ -280,7 +303,7 @@ class UsersManagerTest extends IntegrationTestCase
$access = $this->api->getSitesAccessFromUser($login);
$this->assertEquals([
- ['site' => 1, 'access' => 'view'],
+ ['site' => 1, 'access' => 'view'],
], $access);
}
@@ -295,7 +318,8 @@ class UsersManagerTest extends IntegrationTestCase
$this->api->addUser('userLogin2', 'password', 'userlogin2@email.com');
}
- public function test_addUser_shouldNotAllowAdminUsersToCreateUsersWithAccessToSite_ThatAdminUserDoesNotHaveAccessTo()
+ public function test_addUser_shouldNotAllowAdminUsersToCreateUsersWithAccessToSite_ThatAdminUserDoesNotHaveAccessTo(
+ )
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('checkUserHasAdminAccess Fake exception');
@@ -440,17 +464,32 @@ class UsersManagerTest extends IntegrationTestCase
$this->api->addUser("geggeqge632ge56a4qag", "geqgegeagae", "tesggt@tesgt.com");
$this->api->addUser("geggeqgeqagqegg", "geqgeaggggae", "tesgggt@tesgt.com");
- Option::set('UsersManager.lastSeen.gegg4564eqgeqag',$now = time());
+ Option::set('UsersManager.lastSeen.gegg4564eqgeqag', $now = time());
$users = $this->api->getUsers();
$users = $this->_removeNonTestableFieldsFromUsers($users);
- $user1 = array('login' => "gegg4564eqgeqag", 'email' => "tegst@tesgt.com", 'superuser_access' => 0, 'uses_2fa' => false, 'last_seen' => Date::getDatetimeFromTimestamp($now));
- $user2 = array('login' => "geggeqge632ge56a4qag", 'email' => "tesggt@tesgt.com", 'superuser_access' => 0, 'uses_2fa' => false);
- $user3 = array('login' => "geggeqgeqagqegg", 'email' => "tesgggt@tesgt.com", 'superuser_access' => 0, 'uses_2fa' => false);
+ $user1 = array('login' => "gegg4564eqgeqag",
+ 'email' => "tegst@tesgt.com",
+ 'superuser_access' => 0,
+ 'uses_2fa' => false,
+ 'last_seen' => Date::getDatetimeFromTimestamp($now)
+ );
+ $user2 = array('login' => "geggeqge632ge56a4qag",
+ 'email' => "tesggt@tesgt.com",
+ 'superuser_access' => 0,
+ 'uses_2fa' => false
+ );
+ $user3 = array('login' => "geggeqgeqagqegg",
+ 'email' => "tesgggt@tesgt.com",
+ 'superuser_access' => 0,
+ 'uses_2fa' => false
+ );
$expectedUsers = array($user1, $user2, $user3);
$this->assertEquals($expectedUsers, $users);
- $this->assertEquals(array($user1), $this->_removeNonTestableFieldsFromUsers($this->api->getUsers('gegg4564eqgeqag')));
- $this->assertEquals(array($user1, $user2), $this->_removeNonTestableFieldsFromUsers($this->api->getUsers('gegg4564eqgeqag,geggeqge632ge56a4qag')));
+ $this->assertEquals(array($user1),
+ $this->_removeNonTestableFieldsFromUsers($this->api->getUsers('gegg4564eqgeqag')));
+ $this->assertEquals(array($user1, $user2),
+ $this->_removeNonTestableFieldsFromUsers($this->api->getUsers('gegg4564eqgeqag,geggeqge632ge56a4qag')));
}
public function testGetUsers_withViewAccess_shouldThrowAnException()
@@ -475,6 +514,10 @@ class UsersManagerTest extends IntegrationTestCase
unset($user['date_registered']);
unset($user['ts_password_modified']);
unset($user['invite_status']);
+ unset($user['invite_expired_at']);
+ unset($user['invite_token']);
+ unset($user['invite_accept_at']);
+ unset($user['invited_by']);
}
return $users;
}
@@ -518,7 +561,7 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('checkUserHasSomeAdminAccess Fake exception');
- FakeAccess::clearAccess($superUser = false, $admin =array(), $view = array(1));
+ FakeAccess::clearAccess($superUser = false, $admin = array(), $view = array(1));
$this->api->getUserLoginFromUserEmail('tegst@tesgt.com');
}
@@ -527,7 +570,7 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionUserDoesNotExist');
- FakeAccess::clearAccess($superUser = false, $admin =array(1), $view = array());
+ FakeAccess::clearAccess($superUser = false, $admin = array(1), $view = array());
$this->api->setUserAccess("nologin", "view", 1);
}
@@ -537,7 +580,7 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectExceptionMessage('UsersManager_ExceptionAccessValues');
$this->api->addUser("gegg4564eqgeqag", "geqgegagae", "tegst@tesgt.com");
- FakeAccess::clearAccess($superUser = false, $admin =array(1), $view = array());
+ FakeAccess::clearAccess($superUser = false, $admin = array(1), $view = array());
$this->api->setUserAccess("gegg4564eqgeqag", "viewnotknown", 1);
}
@@ -547,7 +590,7 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectExceptionMessage('UsersManager_ExceptionAccessValues');
$this->api->addUser("gegg4564eqgeqag", "geqgegagae", "tegst@tesgt.com");
- FakeAccess::clearAccess($superUser = false, $admin =array(1), $view = array());
+ FakeAccess::clearAccess($superUser = false, $admin = array(1), $view = array());
$this->api->setUserAccess("gegg4564eqgeqag", "superuser", 1);
}
@@ -556,7 +599,7 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionUserDoesNotExist');
- FakeAccess::clearAccess($superUser = false, $admin =array(1), $view = array());
+ FakeAccess::clearAccess($superUser = false, $admin = array(1), $view = array());
$this->api->setUserAccess('superusertest', 'view', 1);
}
@@ -769,7 +812,7 @@ class UsersManagerTest extends IntegrationTestCase
$pwd = $this->createCurrentUser();
- FakeAccess::$superUser= false;
+ FakeAccess::$superUser = false;
$this->api->setSuperUserAccess('nologin', false, $pwd);
}
@@ -901,9 +944,11 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectExceptionMessage('UsersManager_ConfirmWithPassword');
$login = "login";
- $user = array('login' => $login,
- 'password' => "geqgeagae",
- 'email' => "test@test.com");
+ $user = array(
+ 'login' => $login,
+ 'password' => "geqgeagae",
+ 'email' => "test@test.com"
+ );
$this->api->addUser($user['login'], $user['password'], $user['email']);
@@ -917,9 +962,11 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectExceptionMessage('UsersManager_CurrentPasswordNotCorrect');
$login = "login";
- $user = array('login' => $login,
- 'password' => "geqgeagae",
- 'email' => "test@test.com");
+ $user = array(
+ 'login' => $login,
+ 'password' => "geqgeagae",
+ 'email' => "test@test.com"
+ );
$this->api->addUser($user['login'], $user['password'], $user['email']);
@@ -933,9 +980,11 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectExceptionMessage('UsersManager_CurrentPasswordNotCorrect');
$login = "login";
- $user = array('login' => $login,
- 'password' => "geqgeagae",
- 'email' => "test@test.com");
+ $user = array(
+ 'login' => $login,
+ 'password' => "geqgeagae",
+ 'email' => "test@test.com"
+ );
$this->api->addUser($user['login'], $user['password'], $user['email']);
// currently logged in is a super user and not "login". therefore the password of "login" won't work
@@ -948,9 +997,11 @@ class UsersManagerTest extends IntegrationTestCase
public function testUpdateUserNoEmail()
{
$login = "login";
- $user = array('login' => $login,
- 'password' => "geqgeagae",
- 'email' => "test@test.com");
+ $user = array(
+ 'login' => $login,
+ 'password' => "geqgeagae",
+ 'email' => "test@test.com"
+ );
$this->api->addUser($user['login'], $user['password'], $user['email']);
@@ -990,9 +1041,11 @@ class UsersManagerTest extends IntegrationTestCase
public function testUpdateUser()
{
$login = "login";
- $user = array('login' => $login,
- 'password' => "geqgeagae",
- 'email' => "test@test.com");
+ $user = array(
+ 'login' => $login,
+ 'password' => "geqgeagae",
+ 'email' => "test@test.com"
+ );
$this->api->addUser($user['login'], $user['password'], $user['email']);
@@ -1011,9 +1064,11 @@ class UsersManagerTest extends IntegrationTestCase
public function testGetUserByEmail()
{
- $user = array('login' => "login",
- 'password' => "geqgeagae",
- 'email' => "test@test.com");
+ $user = array(
+ 'login' => "login",
+ 'password' => "geqgeagae",
+ 'email' => "test@test.com"
+ );
$this->api->addUser($user['login'], $user['password'], $user['email']);
@@ -1038,23 +1093,24 @@ class UsersManagerTest extends IntegrationTestCase
$this->addSites(1);
$roles = $this->api->getAvailableRoles();
$expected = array(
- array (
- 'id' => 'view',
- 'name' => 'UsersManager_PrivView',
- 'description' => 'UsersManager_PrivViewDescription',
- 'helpUrl' => 'https://matomo.org/faq/general/faq_70/'
- ), array (
- 'id' => 'write',
- 'name' => 'UsersManager_PrivWrite',
- 'description' => 'UsersManager_PrivWriteDescription',
- 'helpUrl' => 'https://matomo.org/faq/general/faq_26910'
- ),
- array (
- 'id' => 'admin',
- 'name' => 'UsersManager_PrivAdmin',
- 'description' => 'UsersManager_PrivAdminDescription',
- 'helpUrl' => 'https://matomo.org/faq/general/faq_69/',
- )
+ array(
+ 'id' => 'view',
+ 'name' => 'UsersManager_PrivView',
+ 'description' => 'UsersManager_PrivViewDescription',
+ 'helpUrl' => 'https://matomo.org/faq/general/faq_70/'
+ ),
+ array(
+ 'id' => 'write',
+ 'name' => 'UsersManager_PrivWrite',
+ 'description' => 'UsersManager_PrivWriteDescription',
+ 'helpUrl' => 'https://matomo.org/faq/general/faq_26910'
+ ),
+ array(
+ 'id' => 'admin',
+ 'name' => 'UsersManager_PrivAdmin',
+ 'description' => 'UsersManager_PrivAdminDescription',
+ 'helpUrl' => 'https://matomo.org/faq/general/faq_69/',
+ )
);
$this->assertEquals($expected, $roles);
}
@@ -1063,30 +1119,30 @@ class UsersManagerTest extends IntegrationTestCase
{
$this->addSites(1);
$this->assertSame(array(
- 0 => array(
- 'id' => 'tagmanager_write',
- 'name' => 'UsersManager_PrivWrite',
- 'description' => 'TagManager_CapabilityWriteDescription',
- 'helpUrl' => '',
- 'includedInRoles' => array ('write', 'admin'),
- 'category' => 'TagManager_TagManager',
- ),
- 1 => array (
- 'id' => 'tagmanager_publish_live_container',
- 'name' => 'TagManager_CapabilityPublishLiveContainer',
- 'description' => 'TagManager_CapabilityPublishLiveContainerDescription',
- 'helpUrl' => '',
- 'includedInRoles' => array ('admin'),
- 'category' => 'TagManager_TagManager',
- ),
- 2 => array (
- 'id' => 'tagmanager_use_custom_templates',
- 'name' => 'TagManager_CapabilityUseCustomTemplates',
- 'description' => 'TagManager_CapabilityUseCustomTemplateDescription',
- 'helpUrl' => '',
- 'includedInRoles' => array ('admin'),
- 'category' => 'TagManager_TagManager',
- )
+ 0 => array(
+ 'id' => 'tagmanager_write',
+ 'name' => 'UsersManager_PrivWrite',
+ 'description' => 'TagManager_CapabilityWriteDescription',
+ 'helpUrl' => '',
+ 'includedInRoles' => array('write', 'admin'),
+ 'category' => 'TagManager_TagManager',
+ ),
+ 1 => array(
+ 'id' => 'tagmanager_publish_live_container',
+ 'name' => 'TagManager_CapabilityPublishLiveContainer',
+ 'description' => 'TagManager_CapabilityPublishLiveContainerDescription',
+ 'helpUrl' => '',
+ 'includedInRoles' => array('admin'),
+ 'category' => 'TagManager_TagManager',
+ ),
+ 2 => array(
+ 'id' => 'tagmanager_use_custom_templates',
+ 'name' => 'TagManager_CapabilityUseCustomTemplates',
+ 'description' => 'TagManager_CapabilityUseCustomTemplateDescription',
+ 'helpUrl' => '',
+ 'includedInRoles' => array('admin'),
+ 'category' => 'TagManager_TagManager',
+ )
), $this->api->getAvailableCapabilities());
}
@@ -1104,43 +1160,14 @@ class UsersManagerTest extends IntegrationTestCase
$this->assertNotEmpty($user['invite_status']);
}
- public function testInviteUserEmail()
- {
- $view = new View('@UsersManager/_userInviteEmail.twig');
- $view->login = "test";
- $view->emailAddress = "test@test.com";;
- $view->idSite = 1;
- $view->siteName = 'test';
- $view->token = "thisisatoken";
-
- // content line for email body
- $view->content =Piwik::translate('CoreAdminHome_UserInviteSubject',
- ["test", "test"]);
-
- //notes for email footer
- $view->notes = Piwik::translate('CoreAdminHome_UserInviteNotes', ['test','test']);
- $host = SettingsPiwik::getPiwikUrl();
- $content = <<General_HelloUser
-CoreAdminHome_UserInviteSubject
-CoreAdminHome_AcceptInvite |
-CoreAdminHome_DeclineInvite
-Notes:CoreAdminHome_UserInviteNotes
-END;
- $this->assertEquals($content, $view->render());
-
- }
-
-
private function addSites($numberOfSites)
{
$idSites = array();
for ($index = 0; $index < $numberOfSites; $index++) {
- $name = "test" . ($index + 1);
- $idSites[] = APISitesManager::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/"));
+ $name = "test" . ($index + 1);
+ $idSites[] = APISitesManager::getInstance()->addSite($name,
+ array("http://piwik.net", "http://piwik.com/test/"));
}
return $idSites;
@@ -1149,7 +1176,7 @@ END;
public function provideContainerConfig()
{
return array(
- 'Piwik\Access' => new FakeAccess()
+ 'Piwik\Access' => new FakeAccess()
);
}
diff --git a/plugins/UsersManager/tests/System/ApiTest.php b/plugins/UsersManager/tests/System/ApiTest.php
index dd5f1d99d5..528163512b 100644
--- a/plugins/UsersManager/tests/System/ApiTest.php
+++ b/plugins/UsersManager/tests/System/ApiTest.php
@@ -61,7 +61,18 @@ class ApiTest extends SystemTestCase
// login1 = super user, login2 = some admin access, login4 = only view access
foreach ($logins as $login => $appendix) {
$params['token_auth'] = self::$fixture->users[$login]['token'];
- $xmlFieldsToRemove = array('date_registered', 'invite_status', 'last_seen', 'password', 'token_auth', 'ts_password_modified', 'idchange_last_viewed');
+ $xmlFieldsToRemove = array(
+ 'date_registered',
+ 'invite_token',
+ 'invite_accept_at',
+ 'invite_expired_at',
+ 'last_seen',
+ 'password',
+ 'token_auth',
+ 'ts_password_modified',
+ 'idchange_last_viewed',
+ 'invite_status'
+ );
$this->runAnyApiTest($api, $apiId . '_' . $appendix, $params, array('xmlFieldsToRemove' => $xmlFieldsToRemove));
}
diff --git a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login1_when_superuseraccess.xml b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login1_when_superuseraccess.xml
index 8dab9ca5ce..f07ca1cf6c 100644
--- a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login1_when_superuseraccess.xml
+++ b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login1_when_superuseraccess.xml
@@ -5,6 +5,10 @@
login1@example.com
1
+
+
+
+
0
diff --git a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login2_when_adminaccess.xml b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login2_when_adminaccess.xml
index 98231bbff5..96019b8419 100644
--- a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login2_when_adminaccess.xml
+++ b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login2_when_adminaccess.xml
@@ -4,5 +4,6 @@
login2
login2@example.com
0
+
\ No newline at end of file
diff --git a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login2_when_superuseraccess.xml b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login2_when_superuseraccess.xml
index fa3bd7ac68..79f9f74969 100644
--- a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login2_when_superuseraccess.xml
+++ b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login2_when_superuseraccess.xml
@@ -5,6 +5,10 @@
login2@example.com
0
+
+
+
+
0
diff --git a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login4_when_superuseraccess.xml b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login4_when_superuseraccess.xml
index 9cc5801c8d..71f8ce19be 100644
--- a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login4_when_superuseraccess.xml
+++ b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login4_when_superuseraccess.xml
@@ -5,6 +5,10 @@
login4@example.com
0
+
+
+
+
0
diff --git a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login4_when_viewaccess.xml b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login4_when_viewaccess.xml
index b6cf8cb4c4..bccb9256f9 100644
--- a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login4_when_viewaccess.xml
+++ b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login4_when_viewaccess.xml
@@ -4,5 +4,6 @@
login4
login4@example.com
0
+
\ No newline at end of file
diff --git a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login6_when_superuseraccess.xml b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login6_when_superuseraccess.xml
index dcddc97dfd..0ddf3a7097 100644
--- a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login6_when_superuseraccess.xml
+++ b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUser_login6_when_superuseraccess.xml
@@ -5,6 +5,10 @@
login6@example.com
0
+
+
+
+
0
diff --git a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsersLogin__when_adminaccess.xml b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsersLogin__when_adminaccess.xml
index 7658fdd5a6..60a460dd8c 100644
--- a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsersLogin__when_adminaccess.xml
+++ b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsersLogin__when_adminaccess.xml
@@ -7,4 +7,5 @@
login7
login8
login9
+ zzzpendingUser2
\ No newline at end of file
diff --git a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsersLogin__when_superuseraccess.xml b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsersLogin__when_superuseraccess.xml
index b81834b5fb..0083838caf 100644
--- a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsersLogin__when_superuseraccess.xml
+++ b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsersLogin__when_superuseraccess.xml
@@ -12,4 +12,5 @@
login8
login9
superUserLogin
+ zzzpendingUser2
\ No newline at end of file
diff --git a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsersWithSiteAccess_3_admin_when_superuseraccess.xml b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsersWithSiteAccess_3_admin_when_superuseraccess.xml
index 02ec1e6d90..75c08d51bf 100644
--- a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsersWithSiteAccess_3_admin_when_superuseraccess.xml
+++ b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsersWithSiteAccess_3_admin_when_superuseraccess.xml
@@ -5,6 +5,10 @@
login5@example.com
0
+
+
+
+
0
@@ -13,6 +17,10 @@
login6@example.com
0
+
+
+
+
0
diff --git a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsers__when_adminaccess.xml b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsers__when_adminaccess.xml
index 31a5fac273..5d3b34b562 100644
--- a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsers__when_adminaccess.xml
+++ b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsers__when_adminaccess.xml
@@ -1,32 +1,40 @@
-
- 000pendingUser1
- 0
-
login2
login2@example.com
0
+
login4
0
+
login6
0
+
login7
0
+
login8
0
+
login9
0
+
+
+
+ zzzpendingUser2
+ 0
+
+ login2
\ No newline at end of file
diff --git a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsers__when_superuseraccess.xml b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsers__when_superuseraccess.xml
index a2032128d8..25a13356b3 100644
--- a/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsers__when_superuseraccess.xml
+++ b/plugins/UsersManager/tests/System/expected/test___UsersManager.getUsers__when_superuseraccess.xml
@@ -5,7 +5,11 @@
pendinguser1light@example.com
0
- today-date-removed-in-tests
+ superUserLogin
+
+
+
+
0
@@ -13,7 +17,11 @@
login1@example.com
1
-
+
+
+
+
+
0
@@ -21,7 +29,11 @@
login10@example.com
1
-
+
+
+
+
+
0
@@ -29,7 +41,11 @@
login2@example.com
0
-
+
+
+
+
+
0
@@ -37,7 +53,11 @@
login3@example.com
0
-
+
+
+
+
+
0
@@ -45,7 +65,11 @@
login4@example.com
0
-
+
+
+
+
+
0
@@ -53,7 +77,11 @@
login5@example.com
0
-
+
+
+
+
+
0
@@ -61,7 +89,11 @@
login6@example.com
0
-
+
+
+
+
+
0
@@ -69,7 +101,11 @@
login7@example.com
0
-
+
+
+
+
+
0
@@ -77,7 +113,11 @@
login8@example.com
0
-
+
+
+
+
+
0
@@ -85,7 +125,11 @@
login9@example.com
0
-
+
+
+
+
+
0
@@ -93,7 +137,23 @@
hello@example.org
1
-
+
+
+
+
+
+ 0
+
+
+ zzzpendingUser2
+ zpendinguser2light@example.com
+ 0
+
+ login2
+
+
+
+
0
\ No newline at end of file
diff --git a/plugins/UsersManager/tests/UI/UsersManager_spec.js b/plugins/UsersManager/tests/UI/UsersManager_spec.js
index 9feb4e0fb8..87f9777c1a 100644
--- a/plugins/UsersManager/tests/UI/UsersManager_spec.js
+++ b/plugins/UsersManager/tests/UI/UsersManager_spec.js
@@ -36,13 +36,8 @@ describe("UsersManager", function () {
expect(await page.screenshotSelector('.usersManager')).to.matchImage('load');
});
- it('should show resend confirm when resend clicked', async function () {
- await (await page.jQuery('.resend')).click();
- expect(await page.screenshotSelector('.usersManager')).to.matchImage('resend_popup');
- });
it('should change the results page when next is clicked', async function () {
- await (await page.jQuery('.resend-invite-confirm-modal .modal-close:not(.modal-no):visible')).click();
await page.click('.usersListPagination .btn.next');
await page.mouse.move(-10, -10);
await page.waitForNetworkIdle();
@@ -54,6 +49,8 @@ describe("UsersManager", function () {
await page.evaluate(function () {
$('select[name=access-level-filter]').val('string:view').change();
$('#user-text-filter').val('ight').change();
+ $('select[name=status-level-filter]').val('string:pending').change();
+
});
await page.waitForNetworkIdle();
await page.waitForTimeout(1000); // wait for rendering
@@ -65,6 +62,7 @@ describe("UsersManager", function () {
// remove access filter
await page.evaluate(function () {
$('select[name=access-level-filter]').val('string:').change();
+ $('select[name=status-level-filter]').val('string:').change();
});
await page.evaluate(() => $('th.role_header .siteSelector a.title').click());
@@ -173,11 +171,6 @@ describe("UsersManager", function () {
it('should delete a single user when the modal is confirmed is clicked', async function () {
- await page.evaluate(function () {
- $('select[name=access-level-filter]').val('string:view').change();
- $('#user-text-filter').val('ight').change();
- });
-
await (await page.jQuery('.deleteuser:eq(0)')).click();
await (await page.jQuery('.delete-user-confirm-modal .modal-close:not(.modal-no):visible')).click();
await page.waitForNetworkIdle();
@@ -440,6 +433,7 @@ describe("UsersManager", function () {
it('should display the superuser access tab when the superuser tab is clicked', async function () {
await page.click('.userEditForm .menuSuperuser');
await page.mouse.move(0, 0);
+ await page.waitForTimeout(100);
expect(await page.screenshotSelector('.usersManager')).to.matchImage('superuser_tab');
});
@@ -490,7 +484,7 @@ describe("UsersManager", function () {
});
it('should show the edit user form when the edit icon in a row is clicked', async function () {
- await (await page.jQuery('button.edituser:eq(1)', { waitFor: true })).click();
+ await (await page.jQuery('button.edituser:eq(2)', { waitFor: true })).click();
await page.waitForTimeout(250);
await page.waitForNetworkIdle();
@@ -524,9 +518,25 @@ describe("UsersManager", function () {
await page.waitForNetworkIdle();
await page.waitForSelector('#notificationContainer .notification');
+
expect(await page.screenshotSelector('.admin#content,#notificationContainer')).to.matchImage('edit_user_basic_confirmed_wrong_password');
});
+ it('should show resend confirm when resend clicked', async function () {
+ await page.goto(url);
+ await (await page.jQuery('.resend')).click();
+ await page.waitForTimeout(500); // animation
+ await page.waitForSelector('.resend-invite-confirm-modal', { visible: true });
+ expect(await page.screenshotSelector('.usersManager')).to.matchImage('resend_popup');
+ });
+
+ it('should show resend success message', async function() {
+ await (await page.jQuery('.resend-invite-confirm-modal .modal-close:not(.modal-no):visible')).click();
+ await page.waitForSelector('#notificationContainer .notification');
+ expect(await page.screenshotSelector('.usersManager')).to.matchImage('resend_success');
+ });
+
+
// admin user tests
describe('UsersManager_admin_view', function () {
before(async function () {
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_add_new_user_form.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_add_new_user_form.png
index 49beda2f91..20d1fa159a 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_add_new_user_form.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_add_new_user_form.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:df465b8206b76a6057fb58a5d48aeffb444e80ead2d0a6ea7a924b6b232e3f6b
-size 51512
+oid sha256:fb9640614a2c2ce098c4c0d5320206cdac71c0611d7bd9e9c0e9a4d1c03a2827
+size 51975
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user.png
index 49beda2f91..20d1fa159a 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:df465b8206b76a6057fb58a5d48aeffb444e80ead2d0a6ea7a924b6b232e3f6b
-size 51512
+oid sha256:fb9640614a2c2ce098c4c0d5320206cdac71c0611d7bd9e9c0e9a4d1c03a2827
+size 51975
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_email.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_email.png
index f367d4283b..4a95db6ece 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_email.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_email.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:99aa09442363e539084d440c5f72c586e170f5c08202e3c7717ed94d107ab000
-size 46067
+oid sha256:ae0a19a32d2fb0ba3df609914db1710754aaf0bb4f852027d6a9a2498e19b9eb
+size 45809
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_login.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_login.png
index d1269abd39..13c37d4e8a 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_login.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_login.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:44c6177345745953c3eb700166b3d9826de1a83eea8ef8a2e25a7348905df814
-size 44138
+oid sha256:33ef14962b6edc965b2b928fbacf586e73222606fc73c5852e0186fbbf4bfbb9
+size 43835
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_not_exists.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_not_exists.png
index afffee7f11..fb6f3d074c 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_not_exists.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_not_exists.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2eaf09b2a278a4524a299fdabe08ec8f9127847af03b2380020f942135217f40
-size 40075
+oid sha256:8b0148b8066cee3d6b256d38a08753da4f3c3356075a719a44c7ce8ba25c4f14
+size 40840
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_load.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_load.png
index ed6d558535..6cf6aa4384 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_load.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_load.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3f7a1c8ede3bb61b869dbab37be56d784879f3d7be5c4e80bb86e7f275487374
-size 136964
+oid sha256:8a2c8af6d0c208d6803094f9762157429155751ae77240e796d18b44a8fdc18d
+size 125120
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_all_rows_deselected.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_all_rows_deselected.png
index eeb04639af..fbbf3f66d2 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_all_rows_deselected.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_all_rows_deselected.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:90cbdd69c29d89d3b843c3b29f8d2f06c1f9ae12cd547a385415ab94af710e98
-size 189876
+oid sha256:7b47dc217801273f99419123512394169fc612f2617ce2901e2ac7e88a5c2614
+size 177823
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_all_rows_in_search.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_all_rows_in_search.png
index c4f3c28fda..f1617699f0 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_all_rows_in_search.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_all_rows_in_search.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3c5af9e3e3b371d75765dfa99ac73239fa0bc6d5f28503aa9ddcde5cf8c36d67
-size 190238
+oid sha256:d572a26d1f78df50632821e9bd237e667bacf4c3bd18b9cbeb7d2a09821bfc7f
+size 178182
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_all_rows_selected.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_all_rows_selected.png
index eeb04639af..fbbf3f66d2 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_all_rows_selected.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_all_rows_selected.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:90cbdd69c29d89d3b843c3b29f8d2f06c1f9ae12cd547a385415ab94af710e98
-size 189876
+oid sha256:7b47dc217801273f99419123512394169fc612f2617ce2901e2ac7e88a5c2614
+size 177823
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_bulk_remove_access.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_bulk_remove_access.png
index a5e69931ad..0bf31bcb2d 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_bulk_remove_access.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_bulk_remove_access.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9a6067784a28a84cf9994cdd648f37fa471f51e34efce5d5e84d09665e5f518a
-size 180900
+oid sha256:2c5cfbb45de502c5c709a8b9e729d17d7c5207f3a52d2e5a80251e8f044ab8e0
+size 168877
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_bulk_set_access.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_bulk_set_access.png
index 7197789c4a..ffe716941e 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_bulk_set_access.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_bulk_set_access.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:de69e012f88d200df0fb0fac97485a9949fa3af94c89c828513eaa5a25cb06e9
-size 171656
+oid sha256:49f5101fa39e83217cb385ad9b11d19c138cd8063f1bc730006876f8bd622968
+size 159347
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_bulk_set_access_confirm.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_bulk_set_access_confirm.png
index 3756acdcee..87346b5818 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_bulk_set_access_confirm.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_bulk_set_access_confirm.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:18dc30ffd01c62b5f591b05cc85b76a25786eb935f0538e65656f8848f0c59c8
-size 9351
+oid sha256:7223123c832edc705080b0bfbcd92ea4fa00255cfb17bde06cf04dfefb5b97f1
+size 9526
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_delete_bulk_access.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_delete_bulk_access.png
index dca72af936..436da04ed1 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_delete_bulk_access.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_delete_bulk_access.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:92168d09555061bed7c9744f3b5252fc5328a24c51f80df7cb56331b398c04be
-size 26969
+oid sha256:142a425ca04ec7b5a1580ac02fc2e29545348e586342c7f03ab1ea6563127443
+size 170040
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_delete_single.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_delete_single.png
index fc91101f8b..0cff043a61 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_delete_single.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_delete_single.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:7f4cb4fcec0ec3eebad0063bddbfd1d7e0c8410a64ee8569d5ef78f8df3302a5
-size 170348
+oid sha256:27f1f1974ce5f805d81fe0ecade75d98a667d9c82e08b765cfd68be9a6e09a60
+size 171357
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_basic_asks_confirmation.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_basic_asks_confirmation.png
index 7854904373..e44dd90328 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_basic_asks_confirmation.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_basic_asks_confirmation.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:86f5888587a18b98c0118ad5709d6d3d98486ac8f3f5f5f6c82a5936d72eafed
-size 21978
+oid sha256:3b47b430f67f92811615b9b10dafc3137923b849580f50256598bc33e92d3bc5
+size 21831
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_basic_confirmed_wrong_password.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_basic_confirmed_wrong_password.png
index c5325fd782..c3a3455aaf 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_basic_confirmed_wrong_password.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_basic_confirmed_wrong_password.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:052ed4ad65093f9967ddf7366847fc53fae99260bdbfced20f7bf11f9e33d3f2
-size 31099
+oid sha256:319f8ab21d7da64f61896b14966b3a290682a294b25e5372d22bd8ed8efb999d
+size 30872
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_form.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_form.png
index 107d81d036..3e090100ff 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_form.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_form.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:37d8b53b65dbe7e0b696f83e5ab4b8a2e4787ad5a524eb6dd619f1d3f5f56d82
-size 24864
+oid sha256:6808d97c5c13d69a0a622c925bd77000d8ec9807d5adc574f4961c88632863d1
+size 24258
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_filters.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_filters.png
index bd497115da..dc6d7c5cfd 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_filters.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_filters.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:97938e80121da3aa373377e92066c1798341c91a53de14e516668e2467b3e5cb
-size 172026
+oid sha256:5941c7d9be4d9648c7dd0a04ad0fbd71ec1a650b908526e28e541c87de60e86e
+size 45243
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_load.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_load.png
index accf87147a..3896263dca 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_load.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_load.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f9a2640f91c653940bd7f4f3f631f370122e6e7d81635fb18ada658e7f18fc01
-size 179096
+oid sha256:cc295812f1eddc30410ae5699b5c8b42b68c73da7dd046cde5ee40670c083f8f
+size 180107
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_manage_users_back.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_manage_users_back.png
index 953c45f5cb..c1f185df9b 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_manage_users_back.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_manage_users_back.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d15a7db15186c51b0103b34a6c842a10175a9993cc8c16a273c1f4bfb6bcafea
-size 167125
+oid sha256:d399814e61b3b412ec24fd978138b935061a04f99d00abfd4c9e873704973f17
+size 181925
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_next_click.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_next_click.png
index accf87147a..0d9e82b574 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_next_click.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_next_click.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f9a2640f91c653940bd7f4f3f631f370122e6e7d81635fb18ada658e7f18fc01
-size 179096
+oid sha256:563c7d96fe000357dbcd919bd7dd0c84ad9bd27985fb02a124f21b99abe2f5d6
+size 182540
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_permissions_all_rows_in_search.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_permissions_all_rows_in_search.png
index 5446e90a8f..793b53faa1 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_permissions_all_rows_in_search.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_permissions_all_rows_in_search.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a828ac11b951dad41d2c9fde7ef4dba7fb3a0054a6f5642062fc5e2e90960ecb
-size 92981
+oid sha256:79a3ac1d3b23ba1e7796be19ffd00441047d4b8a5bd012a922dbf93796601d6d
+size 108004
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_permissions_edit.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_permissions_edit.png
index ef51a6b1dd..3682b1348e 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_permissions_edit.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_permissions_edit.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:030cf64820bb2651df8089d886d22d734c8bf4db15003a1a03358808e6d22923
-size 81545
+oid sha256:0f73adc2c884b138c888a1edb0632ad192331cb4c8d8d17141a285a9a0f0e725
+size 96478
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_previous.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_previous.png
index 69eeda3864..b5b82113e2 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_previous.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_previous.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3a1f5d5c5e0015870d94550a7a08cb4ea7833171648398308c917183790da3db
-size 170518
+oid sha256:e11665e96a0656366b93e8bed7f6d74a41bbeb68e1edc91b9b3382b45f07cced
+size 171421
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_resend_popup.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_resend_popup.png
index 25cd79c9cd..23e1465e86 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_resend_popup.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_resend_popup.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:28f70514a1c2aac645aef53f388bbe9428249d836d75c9b0bed1868c06eafb99
-size 189374
+oid sha256:fb25420e0fd845fe553714b65a914d430614b957f4aa725d397fdca1bdcecb3a
+size 178586
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_resend_success.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_resend_success.png
new file mode 100644
index 0000000000..d945863595
--- /dev/null
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_resend_success.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:017e01af7e66509501c90f039bea70acf3a153e6745807dd0046e3849be13de8
+size 183036
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_role_for.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_role_for.png
index a388c9481a..58b34e9a60 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_role_for.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_role_for.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1fadec033c757181ce95c7364517de678dd933400259177cef0d2f87cfa6caeb
-size 175226
+oid sha256:8006f4ec6a1f7e33fb45be40c9fb91a6872e8e6f4b219844f3d9baf3f22217bc
+size 163058
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_rows_selected.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_rows_selected.png
index 48a5b74dc8..acd1c4131e 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_rows_selected.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_rows_selected.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5ae5ffd11859c0040e4203967390d76c3fac06b2626579bb0eb3928ef732a42d
-size 176975
+oid sha256:06d07ec3dceaae33679ac0fe68b891627d45c859d38fe37f676316ffedcfec20
+size 164900
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_user_created.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_user_created.png
index 0d4934988b..9184f1a37d 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_user_created.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_user_created.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:406437e042339b681e39ce9e745e8ee5e391fd758a3bee0b8a1651a9c80f5c96
-size 22488
+oid sha256:f97cfaa64c56e51a88d1f4727be80753f5e51956fd474d4d1ec89a5dfd0d5508
+size 22833
diff --git a/plugins/UsersManager/vue/dist/UsersManager.umd.js b/plugins/UsersManager/vue/dist/UsersManager.umd.js
index 424ce5a8c1..065b5b3fe4 100644
--- a/plugins/UsersManager/vue/dist/UsersManager.umd.js
+++ b/plugins/UsersManager/vue/dist/UsersManager.umd.js
@@ -103,13 +103,6 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__19dc__;
/***/ }),
-/***/ "8bba":
-/***/ (function(module, exports, __webpack_require__) {
-
-// extracted by mini-css-extract-plugin
-
-/***/ }),
-
/***/ "8bbf":
/***/ (function(module, exports) {
@@ -122,17 +115,6 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;
module.exports = __WEBPACK_EXTERNAL_MODULE_a5a2__;
-/***/ }),
-
-/***/ "f2d6":
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_0_1_PagedUsersList_vue_vue_type_style_index_0_id_2ff6c088_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("8bba");
-/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_0_1_PagedUsersList_vue_vue_type_style_index_0_id_2ff6c088_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_0_1_PagedUsersList_vue_vue_type_style_index_0_id_2ff6c088_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__);
-/* unused harmony reexport * */
-
-
/***/ }),
/***/ "fae3":
@@ -1466,119 +1448,119 @@ UserPermissionsEditvue_type_script_lang_ts.render = UserPermissionsEditvue_type_
directiveName: 'piwikUserPermissionsEdit',
restrict: 'E'
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue?vue&type=template&id=630fdb84
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue?vue&type=template&id=71e0c307
-var UserEditFormvue_type_template_id_630fdb84_hoisted_1 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_1 = {
class: "row"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_2 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_2 = {
key: 0,
class: "col m2 entityList"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_3 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_3 = {
class: "listCircle"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_4 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_4 = {
key: 0,
class: "icon-warning"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
class: "save-button-spacer hide-on-small-only"
}, null, -1);
-var UserEditFormvue_type_template_id_630fdb84_hoisted_6 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_6 = {
href: "",
class: "entityCancelLink"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_7 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_7 = {
class: "visibleTab col m10"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_8 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_8 = {
key: 0,
class: "basic-info-tab"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_9 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_9 = {
class: "form-group row",
style: {
"position": "relative"
}
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_10 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_10 = {
class: "col s12 m6"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_11 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_11 = {
class: "col s12 m6"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_12 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_12 = {
key: 0,
class: "form-help"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_13 = ["innerHTML"];
-var UserEditFormvue_type_template_id_630fdb84_hoisted_14 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_13 = ["innerHTML"];
+var UserEditFormvue_type_template_id_71e0c307_hoisted_14 = {
key: 0,
class: "entityCancel"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_15 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_15 = {
key: 1,
class: "user-permissions"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_16 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_16 = {
key: 0
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_17 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_17 = {
key: 1,
class: "alert alert-info"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_18 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_18 = {
key: 2,
class: "superuser-access"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_19 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_19 = {
class: "superuser-confirm-modal modal",
ref: "superUserConfirmModal"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_20 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_20 = {
class: "modal-content"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_21 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_21 = {
key: 0
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_22 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_22 = {
key: 1
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_23 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_23 = {
class: "modal-footer"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_24 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_24 = {
key: 3,
class: "twofa-reset"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_25 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_25 = {
class: "resetTwoFa"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_26 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_26 = {
class: "twofa-confirm-modal modal",
ref: "twofaConfirmModal"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_27 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_27 = {
class: "modal-content"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_28 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_28 = {
class: "modal-footer"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_29 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_29 = {
class: "change-password-modal modal",
ref: "changePasswordModal"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_30 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_30 = {
class: "modal-content"
};
-var UserEditFormvue_type_template_id_630fdb84_hoisted_31 = ["innerHTML"];
-var UserEditFormvue_type_template_id_630fdb84_hoisted_32 = {
+var UserEditFormvue_type_template_id_71e0c307_hoisted_31 = ["innerHTML"];
+var UserEditFormvue_type_template_id_71e0c307_hoisted_32 = {
class: "modal-footer"
};
-function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props, $setup, $data, $options) {
+function UserEditFormvue_type_template_id_71e0c307_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
@@ -1596,7 +1578,7 @@ function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props,
"content-title": "".concat(_ctx.formTitle, " ").concat(!_ctx.isAdd ? "'".concat(_ctx.theUser.login, "'") : '')
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_1, [!_ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", UserEditFormvue_type_template_id_630fdb84_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_1, [!_ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", UserEditFormvue_type_template_id_71e0c307_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])([{
active: _ctx.activeTab === 'basic'
}, "menuBasicInfo"])
@@ -1617,7 +1599,7 @@ function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props,
style: {
"margin-right": "3.5px"
}
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_Permissions')), 1), !_ctx.userHasAccess && !_ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", UserEditFormvue_type_template_id_630fdb84_hoisted_4)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 2), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_Permissions')), 1), !_ctx.userHasAccess && !_ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", UserEditFormvue_type_template_id_71e0c307_hoisted_4)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 2), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", {
key: 0,
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])([{
active: _ctx.activeTab === 'superuser'
@@ -1637,12 +1619,12 @@ function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props,
onClick: _cache[3] || (_cache[3] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.activeTab = '2fa';
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_TwoFactorAuthentication')), 1)], 2)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), UserEditFormvue_type_template_id_630fdb84_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_TwoFactorAuthentication')), 1)], 2)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), UserEditFormvue_type_template_id_71e0c307_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
class: "entityCancel",
onClick: _cache[4] || (_cache[4] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.onDoneEditing();
}, ["prevent"]))
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", UserEditFormvue_type_template_id_630fdb84_hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Mobile_NavigationBack')), 1)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_7, [_ctx.activeTab === 'basic' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", UserEditFormvue_type_template_id_71e0c307_hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Mobile_NavigationBack')), 1)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_7, [_ctx.activeTab === 'basic' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
modelValue: _ctx.theUser.login,
"onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
return _ctx.theUser.login = $event;
@@ -1652,7 +1634,7 @@ function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props,
name: "user_login",
maxlength: 100,
title: _ctx.translate('General_Username')
- }, null, 8, ["modelValue", "disabled", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [_ctx.isPendingUser ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_Field, {
+ }, null, 8, ["modelValue", "disabled", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [!_ctx.isPending ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_Field, {
key: 0,
"model-value": _ctx.theUser.password,
disabled: _ctx.isSavingUserInfo || _ctx.currentUserRole !== 'superuser' && !_ctx.isAdd || _ctx.isShowingPasswordConfirm,
@@ -1688,7 +1670,7 @@ function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props,
},
title: _ctx.translate('UsersManager_FirstWebsitePermission'),
"inline-help": _ctx.translate('UsersManager_FirstSiteInlineHelp')
- }, null, 8, ["modelValue", "disabled", "title", "inline-help"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_10, [_ctx.currentUserRole === 'superuser' || _ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_SaveButton, {
+ }, null, 8, ["modelValue", "disabled", "title", "inline-help"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_10, [_ctx.currentUserRole === 'superuser' || _ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_SaveButton, {
key: 0,
style: {
"position": "absolute",
@@ -1700,16 +1682,16 @@ function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props,
onConfirm: _cache[9] || (_cache[9] = function ($event) {
return _ctx.saveUserInfo();
})
- }, null, 8, ["value", "disabled", "saving"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_11, [_ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, ["value", "disabled", "saving"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_11, [_ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "inline-help",
innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_InviteSuccessNotification', [7]))
- }, null, 8, UserEditFormvue_type_template_id_630fdb84_hoisted_13)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])])]), _ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, UserEditFormvue_type_template_id_71e0c307_hoisted_13)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])])]), _ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "entityCancelLink",
onClick: _cache[10] || (_cache[10] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.onDoneEditing();
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Cancel')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.isAdd ? Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_15, [!_ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_16, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_UserPermissionsEdit, {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Cancel')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.isAdd ? Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_15, [!_ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_16, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_UserPermissionsEdit, {
"user-login": _ctx.theUser.login,
onUserHasAccessDetected: _cache[11] || (_cache[11] = function ($event) {
return _ctx.userHasAccess = $event.hasAccess;
@@ -1719,7 +1701,7 @@ function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props,
}),
"access-levels": _ctx.accessLevels,
"filter-access-levels": _ctx.filterAccessLevels
- }, null, 8, ["user-login", "access-levels", "filter-access-levels"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SuperUsersPermissionsNotice')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.activeTab === 'permissions']]) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.activeTab === 'superuser' && _ctx.currentUserRole === 'superuser' && !_ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_18, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SuperUserIntro1')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("strong", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SuperUserIntro2')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["user-login", "access-levels", "filter-access-levels"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SuperUsersPermissionsNotice')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.activeTab === 'permissions']]) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.activeTab === 'superuser' && _ctx.currentUserRole === 'superuser' && !_ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_18, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SuperUserIntro1')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("strong", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SuperUserIntro2')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
modelValue: _ctx.superUserAccessChecked,
"onUpdate:modelValue": _cache[13] || (_cache[13] = function ($event) {
return _ctx.superUserAccessChecked = $event;
@@ -1731,7 +1713,7 @@ function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props,
uicontrol: "checkbox",
name: "superuser_access",
title: _ctx.translate('UsersManager_HasSuperUserAccess')
- }, null, 8, ["modelValue", "disabled", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_19, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AreYouSure')), 1), _ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", UserEditFormvue_type_template_id_630fdb84_hoisted_21, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_RemoveSuperuserAccessConfirm')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", UserEditFormvue_type_template_id_630fdb84_hoisted_22, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AddSuperuserAccessConfirm')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["modelValue", "disabled", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_19, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AreYouSure')), 1), _ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", UserEditFormvue_type_template_id_71e0c307_hoisted_21, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_RemoveSuperuserAccessConfirm')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", UserEditFormvue_type_template_id_71e0c307_hoisted_22, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AddSuperuserAccessConfirm')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
modelValue: _ctx.passwordConfirmationForSuperUser,
"onUpdate:modelValue": _cache[15] || (_cache[15] = function ($event) {
return _ctx.passwordConfirmationForSuperUser = $event;
@@ -1741,7 +1723,7 @@ function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props,
autocomplete: false,
"full-width": true,
title: _ctx.translate('UsersManager_YourCurrentPassword')
- }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_23, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_23, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close btn",
onClick: _cache[16] || (_cache[16] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
@@ -1758,13 +1740,13 @@ function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props,
_ctx.passwordConfirmationForSuperUser = '';
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' && !_ctx.isAdd ? Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_24, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ResetTwoFactorAuthenticationInfo')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_25, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' && !_ctx.isAdd ? Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_24, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ResetTwoFactorAuthenticationInfo')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_25, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
saving: _ctx.isResetting2FA,
onConfirm: _cache[18] || (_cache[18] = function ($event) {
return _ctx.confirmReset2FA();
}),
value: _ctx.translate('UsersManager_ResetTwoFactorAuthentication')
- }, null, 8, ["saving", "value"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_26, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_27, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AreYouSure')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ConfirmWithPassword')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["saving", "value"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_26, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_27, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AreYouSure')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ConfirmWithPassword')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
modelValue: _ctx.passwordConfirmation,
"onUpdate:modelValue": _cache[19] || (_cache[19] = function ($event) {
return _ctx.passwordConfirmation = $event;
@@ -1774,7 +1756,7 @@ function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props,
autocomplete: false,
"full-width": true,
title: _ctx.translate('UsersManager_YourCurrentPassword')
- }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_28, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_28, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close btn",
onClick: _cache[20] || (_cache[20] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
@@ -1790,9 +1772,9 @@ function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props,
$event.preventDefault();
_ctx.passwordConfirmation = '';
})
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512)], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.activeTab === '2fa']]) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 512), [[_directive_form]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_29, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_30, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512)], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.activeTab === '2fa']]) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 512), [[_directive_form]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_29, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_30, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", {
innerHTML: _ctx.$sanitize(_ctx.changePasswordTitle)
- }, null, 8, UserEditFormvue_type_template_id_630fdb84_hoisted_31), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ConfirmWithPassword')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, UserEditFormvue_type_template_id_71e0c307_hoisted_31), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ConfirmWithPassword')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
modelValue: _ctx.passwordConfirmation,
"onUpdate:modelValue": _cache[22] || (_cache[22] = function ($event) {
return _ctx.passwordConfirmation = $event;
@@ -1802,7 +1784,7 @@ function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props,
autocomplete: false,
"full-width": true,
title: _ctx.translate('UsersManager_YourCurrentPassword')
- }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_630fdb84_hoisted_32, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_71e0c307_hoisted_32, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close btn",
onClick: _cache[23] || (_cache[23] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
@@ -1820,7 +1802,7 @@ function UserEditFormvue_type_template_id_630fdb84_render(_ctx, _cache, $props,
_: 1
}, 8, ["class", "content-title"]);
}
-// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue?vue&type=template&id=630fdb84
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue?vue&type=template&id=71e0c307
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue?vue&type=script&lang=ts
@@ -1833,7 +1815,7 @@ var DEFAULT_USER = {
uses_2fa: false,
password: '',
email: '',
- invited_at: ''
+ invite_status: ''
};
var UserEditFormvue_type_script_lang_ts_window = window,
UserEditFormvue_type_script_lang_ts_$ = UserEditFormvue_type_script_lang_ts_window.$;
@@ -1972,11 +1954,11 @@ var UserEditFormvue_type_script_lang_ts_window = window,
_this3.firstSiteAccess = null;
_this3.isSavingUserInfo = false;
_this3.isUserModified = true;
- _this3.theUser.invited_at = 'xx';
+ _this3.theUser.invite_status = 'pending';
_this3.resetPasswordVar();
- _this3.showUserSavedNotification();
+ _this3.showUserCreatedNotification();
});
},
resetPasswordVar: function resetPasswordVar() {
@@ -2016,6 +1998,13 @@ var UserEditFormvue_type_script_lang_ts_window = window,
type: 'toast'
});
},
+ showUserCreatedNotification: function showUserCreatedNotification() {
+ external_CoreHome_["NotificationsStore"].show({
+ message: Object(external_CoreHome_["translate"])('UsersManager_InviteSuccess'),
+ context: 'success',
+ type: 'toast'
+ });
+ },
reset2FA: function reset2FA() {
var _this5 = this;
@@ -2078,12 +2067,19 @@ var UserEditFormvue_type_script_lang_ts_window = window,
saveButtonLabel: function saveButtonLabel() {
return this.isAdd ? Object(external_CoreHome_["translate"])('UsersManager_InviteUser') : Object(external_CoreHome_["translate"])('UsersManager_SaveBasicInfo');
},
- isPendingUser: function isPendingUser() {
- // eslint-disable-next-line eqeqeq
- return this.user && (this.theUser.invited_at === '' || !this.theUser.invited_at);
+ isPending: function isPending() {
+ if (!this.user) {
+ return true;
+ }
+
+ if (this.user.invite_status === 'pending' || Number.isInteger(this.user.invite_status)) {
+ return true;
+ }
+
+ return false;
},
isAdd: function isAdd() {
- return !this.user; // purposefully checking input property not theUser state
+ return !this.user;
},
changePasswordTitle: function changePasswordTitle() {
return Object(external_CoreHome_["translate"])('UsersManager_AreYouSureChangeDetails', "".concat(this.theUser.login, ""));
@@ -2096,7 +2092,7 @@ var UserEditFormvue_type_script_lang_ts_window = window,
-UserEditFormvue_type_script_lang_ts.render = UserEditFormvue_type_template_id_630fdb84_render
+UserEditFormvue_type_script_lang_ts.render = UserEditFormvue_type_template_id_71e0c307_render
/* harmony default export */ var UserEditForm = (UserEditFormvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.adapter.ts
@@ -2141,226 +2137,224 @@ UserEditFormvue_type_script_lang_ts.render = UserEditFormvue_type_template_id_63
directiveName: 'piwikUserEditForm',
restrict: 'E'
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue?vue&type=template&id=2ff6c088&scoped=true
-
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue?vue&type=template&id=4e2f5521
-Object(external_commonjs_vue_commonjs2_vue_root_Vue_["pushScopeId"])("data-v-2ff6c088");
-
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_1 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_1 = {
class: "userListFilters row"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_2 = {
- class: "col s12 m12 l6"
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_2 = {
+ class: "col s12 m12 l8"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_3 = {
- class: "input-field col s12 m4 l4"
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_3 = {
+ class: "input-field col s12 m3 l3"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_4 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_4 = {
id: "user-list-bulk-actions",
class: "dropdown-content"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_5 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_5 = {
class: "dropdown-trigger",
"data-target": "bulk-set-access"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_6 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_6 = {
id: "bulk-set-access",
class: "dropdown-content"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_7 = ["onClick"];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_8 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_7 = ["onClick"];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_8 = {
key: 0
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_9 = {
- class: "input-field col s12 m4 l4"
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_9 = {
+ class: "input-field col s12 m3 l3"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_10 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_10 = {
class: "permissions-for-selector"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_11 = {
- class: "input-field col s12 m4 l4"
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_11 = {
+ class: "input-field col s12 m3 l3"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_12 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_12 = {
+ class: "input-field col s12 m3 l3"
+};
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_13 = {
key: 0,
- class: "input-field col s12 m12 l6 users-list-pagination-container"
+ class: "input-field col s12 m12 l4 users-list-pagination-container"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_13 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_14 = {
class: "usersListPagination"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_14 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_15 = {
class: "pointer"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_15 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_16 = {
class: "counter"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_16 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_17 = {
class: "pointer"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_17 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_18 = {
key: 0,
class: "roles-help-notification"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_18 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_19 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_19 = ["innerHTML"];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_20 = {
class: "select-cell"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_20 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_21 = {
class: "checkbox-container"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_21 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, null, -1);
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_22 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, null, -1);
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_22 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_23 = {
class: "first"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_23 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_24 = {
class: "role_header"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_24 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_25 = {
style: {
"margin-right": "3.5px"
}
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_25 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_26 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-help"
}, null, -1);
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_26 = [PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_25];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_27 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_27 = [PagedUsersListvue_type_template_id_4e2f5521_hoisted_26];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_28 = {
key: 0
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_28 = ["title"];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_29 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_29 = ["title"];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_30 = {
key: 2
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_30 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_31 = {
class: "actions-cell-header"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_31 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_32 = {
key: 0,
class: "select-all-row"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_32 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_33 = {
colspan: "8"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_33 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_34 = {
key: 0
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_34 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_35 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_36 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_35 = ["innerHTML"];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_36 = ["innerHTML"];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_37 = {
key: 1
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_37 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_38 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_39 = ["id"];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_40 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_38 = ["innerHTML"];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_39 = ["innerHTML"];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_40 = ["id"];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_41 = {
class: "select-cell"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_41 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_42 = {
class: "checkbox-container"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_42 = ["id", "onUpdate:modelValue"];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_43 = ["id", "onUpdate:modelValue"];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_43 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, null, -1);
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_44 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, null, -1);
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_44 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_45 = {
id: "userLogin"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_45 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_46 = {
class: "access-cell"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_46 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_47 = {
key: 0,
id: "email"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_47 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_48 = {
key: 1,
id: "twofa"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_48 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_49 = {
key: 0,
class: "icon-ok"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_49 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_50 = {
key: 1,
class: "icon-close"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_50 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_51 = {
key: 2,
id: "last_seen"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_51 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_52 = {
id: "status"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_52 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_53 = ["title"];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_54 = {
class: "center actions-cell"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_53 = ["onClick"];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_55 = ["onClick"];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_54 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_56 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-email"
}, null, -1);
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_55 = [PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_54];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_56 = ["onClick"];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_57 = [PagedUsersListvue_type_template_id_4e2f5521_hoisted_56];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_58 = ["onClick"];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_57 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_59 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-edit"
}, null, -1);
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_58 = [PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_57];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_59 = ["onClick"];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_60 = [PagedUsersListvue_type_template_id_4e2f5521_hoisted_59];
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_61 = ["onClick"];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_60 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_62 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-delete"
}, null, -1);
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_61 = [PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_60];
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_62 = {
+var PagedUsersListvue_type_template_id_4e2f5521_hoisted_63 = [PagedUsersListvue_type_template_id_4e2f5521_hoisted_62];
+var _hoisted_64 = {
class: "delete-user-confirm-modal modal",
ref: "deleteUserConfirmModal"
};
-var PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_63 = {
+var _hoisted_65 = {
class: "modal-content"
};
-var _hoisted_64 = ["innerHTML"];
-var _hoisted_65 = ["innerHTML"];
-var _hoisted_66 = {
+var _hoisted_66 = ["innerHTML"];
+var _hoisted_67 = ["innerHTML"];
+var _hoisted_68 = {
class: "modal-footer"
};
-var _hoisted_67 = {
+var _hoisted_69 = {
class: "change-user-role-confirm-modal modal",
ref: "changeUserRoleConfirmModal"
};
-var _hoisted_68 = {
+var _hoisted_70 = {
class: "modal-content"
};
-var _hoisted_69 = ["innerHTML"];
-var _hoisted_70 = {
+var _hoisted_71 = ["innerHTML"];
+var _hoisted_72 = {
key: 1
};
-var _hoisted_71 = ["innerHTML"];
-var _hoisted_72 = ["innerHTML"];
-var _hoisted_73 = {
+var _hoisted_73 = ["innerHTML"];
+var _hoisted_74 = ["innerHTML"];
+var _hoisted_75 = {
class: "modal-footer"
};
-var _hoisted_74 = {
+var _hoisted_76 = {
class: "resend-invite-confirm-modal modal",
ref: "resendInviteConfirmModal"
};
-var _hoisted_75 = {
+var _hoisted_77 = {
class: "modal-content"
};
-var _hoisted_76 = ["innerHTML"];
-var _hoisted_77 = {
+var _hoisted_78 = ["innerHTML"];
+var _hoisted_79 = {
class: "modal-footer"
};
-
-Object(external_commonjs_vue_commonjs2_vue_root_Vue_["popScopeId"])();
-
-function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _cache, $props, $setup, $data, $options) {
+function PagedUsersListvue_type_template_id_4e2f5521_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
@@ -2377,13 +2371,13 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["pagedUsersList", {
loading: _ctx.isLoadingUsers
}])
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_4e2f5521_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_4e2f5521_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_4e2f5521_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["dropdown-trigger btn bulk-actions", {
disabled: _ctx.isBulkActionsDisabled
}]),
href: "",
"data-target": "user-list-bulk-actions"
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_BulkActions')), 1)], 2), [[_directive_dropdown_menu]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SetPermission')), 1)], 512), [[_directive_dropdown_menu]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_6, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.bulkActionAccessLevels, function (access) {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_BulkActions')), 1)], 2), [[_directive_dropdown_menu]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", PagedUsersListvue_type_template_id_4e2f5521_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", PagedUsersListvue_type_template_id_4e2f5521_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SetPermission')), 1)], 512), [[_directive_dropdown_menu]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", PagedUsersListvue_type_template_id_4e2f5521_hoisted_6, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.bulkActionAccessLevels, function (access) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", {
key: access.key
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
@@ -2394,7 +2388,7 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
_ctx.showAccessChangeConfirm();
}, ["prevent"])
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(access.value), 9, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_7)]);
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(access.value), 9, PagedUsersListvue_type_template_id_4e2f5521_hoisted_7)]);
}), 128))])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
onClick: _cache[0] || (_cache[0] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
@@ -2403,12 +2397,12 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
_ctx.showAccessChangeConfirm();
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_RemovePermissions')), 1)]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_RemovePermissions')), 1)]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", PagedUsersListvue_type_template_id_4e2f5521_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
onClick: _cache[1] || (_cache[1] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.showDeleteConfirm();
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_DeleteUsers')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_DeleteUsers')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_4e2f5521_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_4e2f5521_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
"model-value": _ctx.userTextFilter,
"onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
return _ctx.onUserTextFilterChange($event);
@@ -2417,7 +2411,7 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
uicontrol: "text",
"full-width": true,
placeholder: _ctx.translate('UsersManager_UserSearch')
- }, null, 8, ["model-value", "placeholder"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "placeholder"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_4e2f5521_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
"model-value": _ctx.accessLevelFilter,
"onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
_ctx.accessLevelFilter = $event;
@@ -2432,14 +2426,29 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
options: _ctx.filterAccessLevels,
"full-width": true,
placeholder: _ctx.translate('UsersManager_FilterByAccess')
- }, null, 8, ["model-value", "options", "placeholder"])])])]), _ctx.totalEntries > _ctx.searchParams.limit ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, ["model-value", "options", "placeholder"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_4e2f5521_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ "model-value": _ctx.statusLevelFilter,
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
+ _ctx.statusLevelFilter = $event;
+
+ _ctx.changeSearch({
+ filter_status: _ctx.statusLevelFilter,
+ offset: 0
+ });
+ }),
+ name: "status-level-filter",
+ uicontrol: "select",
+ options: _ctx.filterStatusLevels,
+ "full-width": true,
+ placeholder: _ctx.translate('UsersManager_FilterByStatus')
+ }, null, 8, ["model-value", "options", "placeholder"])])])]), _ctx.totalEntries > _ctx.searchParams.limit ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_4e2f5521_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_4e2f5521_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["btn prev", {
disabled: _ctx.searchParams.offset <= 0
}]),
- onClick: _cache[4] || (_cache[4] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ onClick: _cache[5] || (_cache[5] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.gotoPreviousPage();
}, ["prevent"]))
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_14, "« " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Previous')), 1)], 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_4e2f5521_hoisted_15, "« " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Previous')), 1)], 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_4e2f5521_hoisted_16, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
visibility: _ctx.isLoadingUsers ? 'hidden' : 'visible'
})
@@ -2449,10 +2458,10 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["btn next", {
disabled: _ctx.searchParams.offset + _ctx.searchParams.limit >= _ctx.totalEntries
}]),
- onClick: _cache[5] || (_cache[5] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ onClick: _cache[6] || (_cache[6] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.gotoNextPage();
}, ["prevent"]))
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Next')) + " »", 1)], 2)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), _ctx.isRoleHelpToggled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_17, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Notification, {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_4e2f5521_hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Next')) + " »", 1)], 2)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), _ctx.isRoleHelpToggled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_4e2f5521_hoisted_18, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Notification, {
context: "info",
type: "persistent",
noclear: true
@@ -2460,7 +2469,7 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.rolesHelpText)
- }, null, 8, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_18)];
+ }, null, 8, PagedUsersListvue_type_template_id_4e2f5521_hoisted_19)];
}),
_: 1
})])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, null, {
@@ -2470,75 +2479,75 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
loading: _ctx.isLoadingUsers
})
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("thead", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_19, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("thead", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_4e2f5521_hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_4e2f5521_hoisted_21, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "checkbox",
id: "paged_users_select_all",
checked: "checked",
- "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) {
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = function ($event) {
return _ctx.isAllCheckboxSelected = $event;
}),
- onChange: _cache[7] || (_cache[7] = function ($event) {
+ onChange: _cache[8] || (_cache[8] = function ($event) {
return _ctx.onAllCheckboxChange();
})
- }, null, 544), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelCheckbox"], _ctx.isAllCheckboxSelected]]), PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_21])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_22, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_Username')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_23, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_24, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_RoleFor')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 544), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelCheckbox"], _ctx.isAllCheckboxSelected]]), PagedUsersListvue_type_template_id_4e2f5521_hoisted_22])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_4e2f5521_hoisted_23, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_Username')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_4e2f5521_hoisted_24, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_4e2f5521_hoisted_25, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_RoleFor')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["helpIcon", {
sticky: _ctx.isRoleHelpToggled
}]),
- onClick: _cache[8] || (_cache[8] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ onClick: _cache[9] || (_cache[9] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.isRoleHelpToggled = !_ctx.isRoleHelpToggled;
}, ["prevent"]))
- }, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_26, 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, PagedUsersListvue_type_template_id_4e2f5521_hoisted_27, 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
class: "permissions-for-selector",
"model-value": _ctx.permissionsForSite,
- "onUpdate:modelValue": _cache[9] || (_cache[9] = function ($event) {
+ "onUpdate:modelValue": _cache[10] || (_cache[10] = function ($event) {
_ctx.onPermissionsForUpdate($event);
}),
uicontrol: "site",
"ui-control-attributes": {
onlySitesWithAdminAccess: _ctx.currentUserRole !== 'superuser'
}
- }, null, 8, ["model-value", "ui-control-attributes"])])]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_27, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_Email')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", {
+ }, null, 8, ["model-value", "ui-control-attributes"])])]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", PagedUsersListvue_type_template_id_4e2f5521_hoisted_28, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_Email')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", {
key: 1,
title: _ctx.translate('UsersManager_UsesTwoFactorAuthentication')
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_2FA')), 9, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_28)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_29, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_LastSeen')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_Status')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_30, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Actions')), 1)])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tbody", null, [_ctx.isAllCheckboxSelected && _ctx.users.length && _ctx.users.length < _ctx.totalEntries ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_31, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_32, [!_ctx.areAllResultsSelected ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_33, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_2FA')), 9, PagedUsersListvue_type_template_id_4e2f5521_hoisted_29)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", PagedUsersListvue_type_template_id_4e2f5521_hoisted_30, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_LastSeen')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_Status')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_4e2f5521_hoisted_31, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Actions')), 1)])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tbody", null, [_ctx.isAllCheckboxSelected && _ctx.users.length && _ctx.users.length < _ctx.totalEntries ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", PagedUsersListvue_type_template_id_4e2f5521_hoisted_32, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_4e2f5521_hoisted_33, [!_ctx.areAllResultsSelected ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_4e2f5521_hoisted_34, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_TheDisplayedUsersAreSelected', "".concat(_ctx.users.length, ""))),
style: {
"margin-right": "3.5px"
}
- }, null, 8, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_34), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, PagedUsersListvue_type_template_id_4e2f5521_hoisted_35), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: "toggle-select-all-in-search",
href: "#",
- onClick: _cache[10] || (_cache[10] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ onClick: _cache[11] || (_cache[11] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.areAllResultsSelected = !_ctx.areAllResultsSelected;
}, ["prevent"])),
innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_ClickToSelectAll', "".concat(_ctx.totalEntries, "")))
- }, null, 8, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_35)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.areAllResultsSelected ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_36, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, PagedUsersListvue_type_template_id_4e2f5521_hoisted_36)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.areAllResultsSelected ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_4e2f5521_hoisted_37, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_AllUsersAreSelected', "".concat(_ctx.totalEntries, ""))),
style: {
"margin-right": "3.5px"
}
- }, null, 8, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_37), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, PagedUsersListvue_type_template_id_4e2f5521_hoisted_38), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: "toggle-select-all-in-search",
href: "#",
- onClick: _cache[11] || (_cache[11] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ onClick: _cache[12] || (_cache[12] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.areAllResultsSelected = !_ctx.areAllResultsSelected;
}, ["prevent"])),
innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_ClickToSelectDisplayedUsers', "".concat(_ctx.users.length, "")))
- }, null, 8, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_38)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.users, function (user, index) {
+ }, null, 8, PagedUsersListvue_type_template_id_4e2f5521_hoisted_39)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.users, function (user, index) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", {
id: "row".concat(index),
key: user.login
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_40, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_41, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_4e2f5521_hoisted_41, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_4e2f5521_hoisted_42, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "checkbox",
id: "paged_users_select_row".concat(index),
"onUpdate:modelValue": function onUpdateModelValue($event) {
return _ctx.selectedRows[index] = $event;
},
- onClick: _cache[12] || (_cache[12] = function ($event) {
+ onClick: _cache[13] || (_cache[13] = function ($event) {
return _ctx.onRowSelected();
})
- }, null, 8, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_42), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelCheckbox"], _ctx.selectedRows[index]]]), PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_43])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_44, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(user.login), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_45, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, PagedUsersListvue_type_template_id_4e2f5521_hoisted_43), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelCheckbox"], _ctx.selectedRows[index]]]), PagedUsersListvue_type_template_id_4e2f5521_hoisted_44])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_4e2f5521_hoisted_45, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(user.login), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_4e2f5521_hoisted_46, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
"model-value": user.role,
"onUpdate:modelValue": function onUpdateModelValue($event) {
_ctx.userToChange = user;
@@ -2549,9 +2558,10 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
disabled: user.role === 'superuser',
uicontrol: "select",
options: user.login !== 'anonymous' ? _ctx.accessLevels : _ctx.anonymousAccessLevels
- }, null, 8, ["model-value", "onUpdate:modelValue", "disabled", "options"])])]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_46, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(user.email), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_47, [user.uses_2fa ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_48)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !user.uses_2fa ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_49)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_50, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(user.last_seen ? "".concat(user.last_seen, " ago") : '-'), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_51, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(user.invite_status)
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.getInviteStatus(user.invite_status)), 3)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_52, [user.invite_status !== 'accept' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("button", {
+ }, null, 8, ["model-value", "onUpdate:modelValue", "disabled", "options"])])]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", PagedUsersListvue_type_template_id_4e2f5521_hoisted_47, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(user.email), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", PagedUsersListvue_type_template_id_4e2f5521_hoisted_48, [user.uses_2fa ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", PagedUsersListvue_type_template_id_4e2f5521_hoisted_49)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !user.uses_2fa ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", PagedUsersListvue_type_template_id_4e2f5521_hoisted_50)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", PagedUsersListvue_type_template_id_4e2f5521_hoisted_51, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(user.last_seen ? "".concat(user.last_seen, " ago") : '-'), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_4e2f5521_hoisted_52, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(Number.isInteger(user.invite_status) ? 'pending' : user.invite_status),
+ title: user.invite_status === 'expired' ? _ctx.translate('UsersManager_ExpiredInviteAutomaticallyRemoved', '3') : ''
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.getInviteStatus(user.invite_status)), 11, PagedUsersListvue_type_template_id_4e2f5521_hoisted_53)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_4e2f5521_hoisted_54, [(_ctx.currentUserRole === 'superuser' || _ctx.currentUserRole === 'admin' && user.invited_by === _ctx.currentUserLogin) && user.invite_status !== 'active' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("button", {
key: 0,
class: "resend table-action",
title: "Resend Invite",
@@ -2560,7 +2570,7 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
_ctx.showResendConfirm();
}
- }, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_55, 8, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_53)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), user.login !== 'anonymous' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("button", {
+ }, PagedUsersListvue_type_template_id_4e2f5521_hoisted_57, 8, PagedUsersListvue_type_template_id_4e2f5521_hoisted_55)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), user.login !== 'anonymous' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("button", {
key: 1,
class: "edituser table-action",
title: "Edit",
@@ -2569,7 +2579,7 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
user: user
});
}
- }, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_58, 8, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_56)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' && user.login !== 'anonymous' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("button", {
+ }, PagedUsersListvue_type_template_id_4e2f5521_hoisted_60, 8, PagedUsersListvue_type_template_id_4e2f5521_hoisted_58)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), (_ctx.currentUserRole === 'superuser' || _ctx.currentUserRole === 'admin' && user.invited_by === _ctx.currentUserLogin) && user.login !== 'anonymous' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("button", {
key: 2,
class: "deleteuser table-action",
title: "Delete",
@@ -2578,20 +2588,20 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
_ctx.showDeleteConfirm();
}
- }, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_61, 8, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_59)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 8, PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_39);
+ }, PagedUsersListvue_type_template_id_4e2f5521_hoisted_63, 8, PagedUsersListvue_type_template_id_4e2f5521_hoisted_61)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 8, PagedUsersListvue_type_template_id_4e2f5521_hoisted_40);
}), 128))])], 2), [[_directive_content_table]])];
}),
_: 1
- }), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_62, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2ff6c088_scoped_true_hoisted_63, [_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h3", {
+ }), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_64, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_65, [_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h3", {
key: 0,
innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_DeleteUserConfirmSingle', "".concat(_ctx.userToChange.login, "")))
- }, null, 8, _hoisted_64)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ }, null, 8, _hoisted_66)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
key: 1,
innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_DeleteUserConfirmMultiple', "".concat(_ctx.affectedUsersCount, "")))
- }, null, 8, _hoisted_65)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_66, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, _hoisted_67)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_68, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close btn",
- onClick: _cache[13] || (_cache[13] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ onClick: _cache[14] || (_cache[14] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.deleteRequestedUsers();
}, ["prevent"])),
style: {
@@ -2600,22 +2610,22 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
}, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Yes')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close modal-no",
- onClick: _cache[14] || (_cache[14] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ onClick: _cache[15] || (_cache[15] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
_ctx.userToChange = null;
_ctx.roleToChangeTo = null;
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_67, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_68, [_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h3", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_69, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_70, [_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h3", {
key: 0,
innerHTML: _ctx.$sanitize(_ctx.deleteUserPermConfirmSingleText)
- }, null, 8, _hoisted_69)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.userToChange && _ctx.userToChange.login === 'anonymous' && _ctx.roleToChangeTo === 'view' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h3", _hoisted_70, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("em", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Note')) + ": ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, _hoisted_71)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.userToChange && _ctx.userToChange.login === 'anonymous' && _ctx.roleToChangeTo === 'view' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h3", _hoisted_72, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("em", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Note')) + ": ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_AnonymousUserRoleChangeWarning', 'anonymous', _ctx.getRoleDisplay(_ctx.roleToChangeTo)))
- }, null, 8, _hoisted_71)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ }, null, 8, _hoisted_73)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
key: 2,
innerHTML: _ctx.$sanitize(_ctx.deleteUserPermConfirmMultipleText)
- }, null, 8, _hoisted_72)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_73, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, _hoisted_74)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_75, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close btn",
- onClick: _cache[15] || (_cache[15] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ onClick: _cache[16] || (_cache[16] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.changeUserRole();
}, ["prevent"])),
style: {
@@ -2624,17 +2634,17 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
}, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Yes')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close modal-no",
- onClick: _cache[16] || (_cache[16] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ onClick: _cache[17] || (_cache[17] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
_ctx.userToChange = null;
_ctx.roleToChangeTo = null;
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_74, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_75, [_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h3", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_76, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_77, [_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h3", {
key: 0,
innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_ResendInviteConfirmSingle', "".concat(_ctx.userToChange.login, "")))
- }, null, 8, _hoisted_76)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_77, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, _hoisted_78)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_79, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close btn",
- onClick: _cache[17] || (_cache[17] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ onClick: _cache[18] || (_cache[18] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.resendRequestedUser();
}, ["prevent"])),
style: {
@@ -2643,13 +2653,13 @@ function PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render(_ctx, _c
}, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Yes')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close modal-no",
- onClick: _cache[18] || (_cache[18] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ onClick: _cache[19] || (_cache[19] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
_ctx.userToChange = null;
_ctx.roleToChangeTo = null;
}, ["prevent"]))
}, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512)], 2);
}
-// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue?vue&type=template&id=2ff6c088&scoped=true
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue?vue&type=template&id=4e2f5521
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue?vue&type=script&lang=ts
@@ -2677,6 +2687,10 @@ var PagedUsersListvue_type_script_lang_ts_window = window,
type: Array,
required: true
},
+ filterStatusLevels: {
+ type: Array,
+ required: true
+ },
totalEntries: Number,
users: {
type: Array,
@@ -2706,6 +2720,7 @@ var PagedUsersListvue_type_script_lang_ts_window = window,
userToChange: null,
roleToChangeTo: null,
accessLevelFilter: null,
+ statusLevelFilter: null,
isRoleHelpToggled: false,
userTextFilter: '',
permissionsForSite: {
@@ -2725,19 +2740,15 @@ var PagedUsersListvue_type_script_lang_ts_window = window,
},
methods: {
getInviteStatus: function getInviteStatus(inviteStatus) {
- if (inviteStatus === 'accept') {
- return Object(external_CoreHome_["translate"])('UsersManager_Active');
- }
-
- if (inviteStatus === 'pending') {
- return Object(external_CoreHome_["translate"])('UsersManager_Pending');
+ if (Number.isInteger(inviteStatus)) {
+ return Object(external_CoreHome_["translate"])('UsersManager_InviteDayLeft', inviteStatus);
}
if (inviteStatus === 'expired') {
return Object(external_CoreHome_["translate"])('UsersManager_Expired');
}
- return Object(external_CoreHome_["translate"])('UsersManager_Decline');
+ return Object(external_CoreHome_["translate"])('UsersManager_Active');
},
onPermissionsForUpdate: function onPermissionsForUpdate(site) {
this.permissionsForSite = site;
@@ -2844,6 +2855,9 @@ var PagedUsersListvue_type_script_lang_ts_window = window,
}
},
computed: {
+ currentUserLogin: function currentUserLogin() {
+ return external_CoreHome_["Matomo"].userLogin;
+ },
paginationLowerBound: function paginationLowerBound() {
return this.searchParams.offset + 1;
},
@@ -2928,17 +2942,11 @@ var PagedUsersListvue_type_script_lang_ts_window = window,
}));
// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue?vue&type=script&lang=ts
-// EXTERNAL MODULE: ./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue?vue&type=style&index=0&id=2ff6c088&scoped=true&lang=css
-var PagedUsersListvue_type_style_index_0_id_2ff6c088_scoped_true_lang_css = __webpack_require__("f2d6");
-
// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue
-
-
-PagedUsersListvue_type_script_lang_ts.render = PagedUsersListvue_type_template_id_2ff6c088_scoped_true_render
-PagedUsersListvue_type_script_lang_ts.__scopeId = "data-v-2ff6c088"
+PagedUsersListvue_type_script_lang_ts.render = PagedUsersListvue_type_template_id_4e2f5521_render
/* harmony default export */ var PagedUsersList = (PagedUsersListvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.adapter.ts
@@ -3004,47 +3012,47 @@ PagedUsersListvue_type_script_lang_ts.__scopeId = "data-v-2ff6c088"
directiveName: 'piwikPagedUsersList',
restrict: 'E'
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/UsersManager/UsersManager.vue?vue&type=template&id=621f5797
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/UsersManager/UsersManager.vue?vue&type=template&id=4688a5a2
-var UsersManagervue_type_template_id_621f5797_hoisted_1 = {
+var UsersManagervue_type_template_id_4688a5a2_hoisted_1 = {
class: "usersManager"
};
-var UsersManagervue_type_template_id_621f5797_hoisted_2 = {
+var UsersManagervue_type_template_id_4688a5a2_hoisted_2 = {
key: 0
};
-var UsersManagervue_type_template_id_621f5797_hoisted_3 = {
+var UsersManagervue_type_template_id_4688a5a2_hoisted_3 = {
key: 1
};
-var UsersManagervue_type_template_id_621f5797_hoisted_4 = {
+var UsersManagervue_type_template_id_4688a5a2_hoisted_4 = {
class: "row add-user-container"
};
-var UsersManagervue_type_template_id_621f5797_hoisted_5 = {
+var UsersManagervue_type_template_id_4688a5a2_hoisted_5 = {
class: "col s12"
};
-var UsersManagervue_type_template_id_621f5797_hoisted_6 = {
+var UsersManagervue_type_template_id_4688a5a2_hoisted_6 = {
class: "input-field",
style: {
"margin-right": "3.5px"
}
};
-var UsersManagervue_type_template_id_621f5797_hoisted_7 = {
+var UsersManagervue_type_template_id_4688a5a2_hoisted_7 = {
key: 0,
class: "input-field"
};
-var UsersManagervue_type_template_id_621f5797_hoisted_8 = {
+var UsersManagervue_type_template_id_4688a5a2_hoisted_8 = {
key: 0
};
-var UsersManagervue_type_template_id_621f5797_hoisted_9 = {
+var UsersManagervue_type_template_id_4688a5a2_hoisted_9 = {
class: "add-existing-user-modal modal",
ref: "addExistingUserModal"
};
-var UsersManagervue_type_template_id_621f5797_hoisted_10 = {
+var UsersManagervue_type_template_id_4688a5a2_hoisted_10 = {
class: "modal-content"
};
-var UsersManagervue_type_template_id_621f5797_hoisted_11 = {
+var UsersManagervue_type_template_id_4688a5a2_hoisted_11 = {
class: "modal-footer"
};
-function UsersManagervue_type_template_id_621f5797_render(_ctx, _cache, $props, $setup, $data, $options) {
+function UsersManagervue_type_template_id_4688a5a2_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_EnrichedHeadline = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("EnrichedHeadline");
var _component_PagedUsersList = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("PagedUsersList");
@@ -3057,7 +3065,7 @@ function UsersManagervue_type_template_id_621f5797_render(_ctx, _cache, $props,
var _directive_tooltips = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("tooltips");
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UsersManagervue_type_template_id_621f5797_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_EnrichedHeadline, {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UsersManagervue_type_template_id_4688a5a2_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_EnrichedHeadline, {
"help-url": "https://matomo.org/docs/manage-users/",
"feature-name": "Users Management"
}, {
@@ -3065,12 +3073,12 @@ function UsersManagervue_type_template_id_621f5797_render(_ctx, _cache, $props,
return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ManageUsers')), 1)];
}),
_: 1
- })]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", UsersManagervue_type_template_id_621f5797_hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ManageUsersDesc')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'admin' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", UsersManagervue_type_template_id_621f5797_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ManageUsersAdminDesc')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_621f5797_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_621f5797_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_621f5797_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ })]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", UsersManagervue_type_template_id_4688a5a2_hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ManageUsersDesc')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'admin' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", UsersManagervue_type_template_id_4688a5a2_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ManageUsersAdminDesc')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_4688a5a2_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_4688a5a2_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_4688a5a2_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: "btn add-new-user",
onClick: _cache[0] || (_cache[0] = function ($event) {
return _ctx.onAddNewUser();
})
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_InviteNewUser')), 1)]), _ctx.currentUserRole !== 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UsersManagervue_type_template_id_621f5797_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_InviteNewUser')), 1)]), _ctx.currentUserRole !== 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UsersManagervue_type_template_id_4688a5a2_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: "btn add-existing-user",
onClick: _cache[1] || (_cache[1] = function ($event) {
return _ctx.showAddExistingUserModal();
@@ -3099,10 +3107,11 @@ function UsersManagervue_type_template_id_621f5797_render(_ctx, _cache, $props,
"current-user-role": _ctx.currentUserRole,
"access-levels": _ctx.accessLevels,
"filter-access-levels": _ctx.actualFilterAccessLevels,
+ "filter-status-levels": _ctx.filterStatusLevels,
"search-params": _ctx.searchParams,
users: _ctx.users,
"total-entries": _ctx.totalEntries
- }, null, 8, ["initial-site-id", "initial-site-name", "is-loading-users", "current-user-role", "access-levels", "filter-access-levels", "search-params", "users", "total-entries"])], 512), [[_directive_content_intro]])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.isEditing]]), _ctx.isEditing ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UsersManagervue_type_template_id_621f5797_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_UserEditForm, {
+ }, null, 8, ["initial-site-id", "initial-site-name", "is-loading-users", "current-user-role", "access-levels", "filter-access-levels", "filter-status-levels", "search-params", "users", "total-entries"])], 512), [[_directive_content_intro]])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.isEditing]]), _ctx.isEditing ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UsersManagervue_type_template_id_4688a5a2_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_UserEditForm, {
onDone: _cache[7] || (_cache[7] = function ($event) {
return _ctx.onDoneEditing($event.isUserModified);
}),
@@ -3115,14 +3124,14 @@ function UsersManagervue_type_template_id_621f5797_render(_ctx, _cache, $props,
onUpdated: _cache[8] || (_cache[8] = function ($event) {
return _ctx.userBeingEdited = $event.user;
})
- }, null, 8, ["user", "current-user-role", "access-levels", "filter-access-levels", "initial-site-id", "initial-site-name"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_621f5797_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_621f5797_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AddExistingUser')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_EnterUsernameOrEmail')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["user", "current-user-role", "access-levels", "filter-access-levels", "initial-site-id", "initial-site-name"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_4688a5a2_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_4688a5a2_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AddExistingUser')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_EnterUsernameOrEmail')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
modelValue: _ctx.addNewUserLoginEmail,
"onUpdate:modelValue": _cache[9] || (_cache[9] = function ($event) {
return _ctx.addNewUserLoginEmail = $event;
}),
name: "add-existing-user-email",
uicontrol: "text"
- }, null, 8, ["modelValue"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_621f5797_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, ["modelValue"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_4688a5a2_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close btn",
onClick: _cache[10] || (_cache[10] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
@@ -3139,7 +3148,7 @@ function UsersManagervue_type_template_id_621f5797_render(_ctx, _cache, $props,
}, ["prevent"]))
}, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Cancel')), 1)])], 512)], 512)), [[_directive_tooltips]]);
}
-// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UsersManager/UsersManager.vue?vue&type=template&id=621f5797
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UsersManager/UsersManager.vue?vue&type=template&id=4688a5a2
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/UsersManager/UsersManager.vue?vue&type=script&lang=ts
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
@@ -3184,6 +3193,10 @@ var UsersManagervue_type_script_lang_ts_window = window,
filterAccessLevels: {
type: Array,
required: true
+ },
+ filterStatusLevels: {
+ type: Array,
+ required: true
}
},
components: {
@@ -3207,6 +3220,7 @@ var UsersManagervue_type_script_lang_ts_window = window,
limit: NUM_USERS_PER_PAGE,
filter_search: '',
filter_access: '',
+ filter_status: '',
idSite: this.initialSiteId
},
isLoadingUsers: false,
@@ -3280,6 +3294,7 @@ var UsersManagervue_type_script_lang_ts_window = window,
method: 'UsersManager.getUsersPlusRole',
filter_search: this.searchParams.filter_search,
filter_access: this.searchParams.filter_access,
+ filter_status: this.searchParams.filter_status,
idSite: this.searchParams.idSite,
filter_limit: '-1'
});
@@ -3314,16 +3329,25 @@ var UsersManagervue_type_script_lang_ts_window = window,
});
},
onResendInvite: function onResendInvite(user) {
- console.log(user);
+ var _this3 = this;
+
external_CoreHome_["AjaxHelper"].fetch({
method: 'UsersManager.resendInvite',
userLogin: user.login
- }).then(function (res) {
- console.log(res);
+ }).then(function () {
+ _this3.fetchUsers();
+
+ var id = external_CoreHome_["NotificationsStore"].show({
+ message: Object(external_CoreHome_["translate"])('UsersManager_ResendInviteSuccess', user.login),
+ id: 'resendinvite',
+ context: 'success',
+ type: 'transient'
+ });
+ external_CoreHome_["NotificationsStore"].scrollToNotification(id);
});
},
fetchUsers: function fetchUsers() {
- var _this3 = this;
+ var _this4 = this;
this.isLoadingUsers = true;
return external_CoreHome_["AjaxHelper"].fetch(Object.assign(Object.assign({}, this.searchParams), {}, {
@@ -3332,15 +3356,15 @@ var UsersManagervue_type_script_lang_ts_window = window,
returnResponseObject: true
}).then(function (helper) {
var result = helper.getRequestHandle();
- _this3.totalEntries = parseInt(result.getResponseHeader('x-matomo-total-results') || '0', 10);
- _this3.users = result.responseJSON;
- _this3.isLoadingUsers = false;
+ _this4.totalEntries = parseInt(result.getResponseHeader('x-matomo-total-results') || '0', 10);
+ _this4.users = result.responseJSON;
+ _this4.isLoadingUsers = false;
}).catch(function () {
- _this3.isLoadingUsers = false;
+ _this4.isLoadingUsers = false;
});
},
addExistingUser: function addExistingUser() {
- var _this4 = this;
+ var _this5 = this;
this.isLoadingUsers = true;
return external_CoreHome_["AjaxHelper"].fetch({
@@ -3348,12 +3372,12 @@ var UsersManagervue_type_script_lang_ts_window = window,
userLogin: this.addNewUserLoginEmail
}).then(function (response) {
if (response && response.value) {
- return _this4.addNewUserLoginEmail;
+ return _this5.addNewUserLoginEmail;
}
return external_CoreHome_["AjaxHelper"].fetch({
method: 'UsersManager.getUserLoginFromUserEmail',
- userEmail: _this4.addNewUserLoginEmail
+ userEmail: _this5.addNewUserLoginEmail
}).then(function (r) {
return r.value;
});
@@ -3363,12 +3387,12 @@ var UsersManagervue_type_script_lang_ts_window = window,
}, {
userLogin: login,
access: 'view',
- idSites: _this4.searchParams.idSite
+ idSites: _this5.searchParams.idSite
});
}).then(function () {
- return _this4.fetchUsers();
+ return _this5.fetchUsers();
}).catch(function () {
- _this4.isLoadingUsers = false;
+ _this5.isLoadingUsers = false;
});
},
onAddNewUser: function onAddNewUser() {
@@ -3404,7 +3428,7 @@ var UsersManagervue_type_script_lang_ts_window = window,
-UsersManagervue_type_script_lang_ts.render = UsersManagervue_type_template_id_621f5797_render
+UsersManagervue_type_script_lang_ts.render = UsersManagervue_type_template_id_4688a5a2_render
/* harmony default export */ var UsersManager = (UsersManagervue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UsersManager/UsersManager.adapter.ts
@@ -3433,6 +3457,9 @@ UsersManagervue_type_script_lang_ts.render = UsersManagervue_type_template_id_62
},
filterAccessLevels: {
angularJsBind: '<'
+ },
+ filterStatusLevels: {
+ angularJsBind: '<'
}
},
directiveName: 'piwikUsersManager',
diff --git a/plugins/UsersManager/vue/dist/UsersManager.umd.min.js b/plugins/UsersManager/vue/dist/UsersManager.umd.min.js
index c3c14a30d0..980b483417 100644
--- a/plugins/UsersManager/vue/dist/UsersManager.umd.min.js
+++ b/plugins/UsersManager/vue/dist/UsersManager.umd.min.js
@@ -1,56 +1,56 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["UsersManager"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["UsersManager"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(s){if(t[s])return t[s].exports;var r=t[s]={i:s,l:!1,exports:{}};return e[s].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,s){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(s,r,function(t){return e[t]}.bind(null,r));return s},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/UsersManager/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bba":function(e,t,n){},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},f2d6:function(e,t,n){"use strict";n("8bba")},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"CapabilitiesEdit",(function(){return E})),n.d(t,"UserPermissionsEdit",(function(){return Fe})),n.d(t,"UserEditForm",(function(){return yt})),n.d(t,"PagedUsersList",(function(){return es})),n.d(t,"UsersManager",(function(){return Ss})),n.d(t,"NewsletterSettings",(function(){return ks})),n.d(t,"AnonymousSettings",(function(){return Ms})),n.d(t,"PersonalSettings",(function(){return $s})),"undefined"!==typeof window){var s=window.document.currentScript,r=s&&s.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);r&&(n.p=r[1])}var i=n("19dc"),a=n("8bbf"),o=["title"],l=["onClick"],c={key:0,class:"addCapability"},d={class:"ui-confirm confirmCapabilityToggle modal",ref:"confirmCapabilityToggleModal"},u={class:"modal-content"},m=["innerHTML"],b=["innerHTML"],p={class:"modal-footer"};function g(e,t,n,s,r,i){var g=Object(a["resolveComponent"])("Field");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["capabilitiesEdit",{busy:e.isBusy}])},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.actualCapabilities,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:t.id,class:"chip"},[Object(a["createElementVNode"])("span",{class:"capability-name",title:"".concat(t.description," ").concat(e.isIncludedInRole(t)?"
".concat(e.translate("UsersManager_IncludedInUsersRole")):"")},Object(a["toDisplayString"])(t.category)+": "+Object(a["toDisplayString"])(t.name),9,o),e.isIncludedInRole(t)?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",{key:0,class:"icon-close",onClick:function(n){e.capabilityToRemoveId=t.id,e.onToggleCapability(!1)}},null,8,l))])})),128)),e.availableCapabilitiesGrouped.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",c,[Object(a["createVNode"])(g,{"model-value":e.capabilityToAddId,"onUpdate:modelValue":t[0]||(t[0]=function(t){e.capabilityToAddId=t,e.onToggleCapability(!0)}),disabled:e.isBusy,uicontrol:"expandable-select",name:"add_capability","full-width":!0,options:e.availableCapabilitiesGrouped},null,8,["model-value","disabled","options"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",d,[Object(a["createElementVNode"])("div",u,[e.isAddingCapability?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",{key:0,innerHTML:e.$sanitize(e.confirmAddCapabilityToggleContent)},null,8,m)):Object(a["createCommentVNode"])("",!0),e.isAddingCapability?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",{key:1,innerHTML:e.$sanitize(e.confirmCapabilityToggleContent)},null,8,b))]),Object(a["createElementVNode"])("div",p,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.toggleCapability()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[2]||(t[2]=Object(a["withModifiers"])((function(t){e.capabilityToAddOrRemove=null,e.capabilityToAddId=null,e.capabilityToRemoveId=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)],2)}var h=n("a5a2");function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function j(e,t){for(var n=0;n
".concat(e.translate("UsersManager_IncludedInUsersRole")):"")},Object(a["toDisplayString"])(t.category)+": "+Object(a["toDisplayString"])(t.name),9,o),e.isIncludedInRole(t)?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",{key:0,class:"icon-close",onClick:function(n){e.capabilityToRemoveId=t.id,e.onToggleCapability(!1)}},null,8,l))])})),128)),e.availableCapabilitiesGrouped.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",c,[Object(a["createVNode"])(g,{"model-value":e.capabilityToAddId,"onUpdate:modelValue":t[0]||(t[0]=function(t){e.capabilityToAddId=t,e.onToggleCapability(!0)}),disabled:e.isBusy,uicontrol:"expandable-select",name:"add_capability","full-width":!0,options:e.availableCapabilitiesGrouped},null,8,["model-value","disabled","options"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",d,[Object(a["createElementVNode"])("div",u,[e.isAddingCapability?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",{key:0,innerHTML:e.$sanitize(e.confirmAddCapabilityToggleContent)},null,8,m)):Object(a["createCommentVNode"])("",!0),e.isAddingCapability?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",{key:1,innerHTML:e.$sanitize(e.confirmCapabilityToggleContent)},null,8,b))]),Object(a["createElementVNode"])("div",p,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.toggleCapability()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[2]||(t[2]=Object(a["withModifiers"])((function(t){e.capabilityToAddOrRemove=null,e.capabilityToAddId=null,e.capabilityToRemoveId=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)],2)}var f=n("a5a2");function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function j(e,t){for(var n=0;n".concat(this.userLogin,""),"".concat(this.capabilityToAddOrRemove?this.capabilityToAddOrRemove.name:"",""),"".concat(this.siteNameText,""))},confirmCapabilityToggleContent:function(){return Object(i["translate"])("UsersManager_AreYouSureRemoveCapability","".concat(this.capabilityToAddOrRemove?this.capabilityToAddOrRemove.name:"",""),"".concat(this.userLogin,""),"".concat(this.siteNameText,""))},siteNameText:function(){return i["Matomo"].helper.htmlEntities(this.siteName)},availableCapabilitiesGrouped:function(){var e=this,t=this.availableCapabilities.filter((function(t){return!e.capabilitiesSet[t.id]})).map((function(e){return{group:e.category,key:e.id,value:e.name,tooltip:e.description}}));return t.sort((function(e,t){return e.group===t.group?e.value===t.value?0:e.value".concat(this.userLogin,""),"".concat(this.capabilityToAddOrRemove?this.capabilityToAddOrRemove.name:"",""),"".concat(this.siteNameText,""))},confirmCapabilityToggleContent:function(){return Object(i["translate"])("UsersManager_AreYouSureRemoveCapability","".concat(this.capabilityToAddOrRemove?this.capabilityToAddOrRemove.name:"",""),"".concat(this.userLogin,""),"".concat(this.siteNameText,""))},siteNameText:function(){return i["Matomo"].helper.htmlEntities(this.siteName)},availableCapabilitiesGrouped:function(){var e=this,t=this.availableCapabilities.filter((function(t){return!e.capabilitiesSet[t.id]})).map((function(e){return{group:e.category,key:e.id,value:e.name,tooltip:e.description}}));return t.sort((function(e,t){return e.group===t.group?e.value===t.value?0:e.valuee.limit?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",q,[Object(a["createElementVNode"])("div",$,[Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["prev",{disabled:e.offset<=0}])},[Object(a["createElementVNode"])("span",{class:"pointer",onClick:t[6]||(t[6]=function(t){return e.gotoPreviousPage()})},"« "+Object(a["toDisplayString"])(e.translate("General_Previous")),1)],2),Object(a["createElementVNode"])("span",G,[Object(a["createElementVNode"])("span",{textContent:Object(a["toDisplayString"])(e.paginationText)},null,8,z)]),Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["next",{disabled:e.offset+e.limit>=e.totalEntries}])},[Object(a["createElementVNode"])("span",{class:"pointer",onClick:t[7]||(t[7]=function(t){return e.gotoNextPage()})},Object(a["toDisplayString"])(e.translate("General_Next"))+" »",1)],2)])])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",W,[e.isRoleHelpToggled?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,context:"info",type:"persistent",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.rolesHelpText)},null,8,Y)]})),_:1})):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",X,[e.isCapabilitiesHelpToggled?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,context:"info",type:"persistent",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.translate("UsersManager_CapabilitiesHelp")),1)]})),_:1})):Object(a["createCommentVNode"])("",!0)]),Object(a["withDirectives"])(Object(a["createElementVNode"])("table",K,[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("th",Q,[Object(a["createElementVNode"])("span",Z,[Object(a["createElementVNode"])("label",null,[Object(a["createElementVNode"])("input",{type:"checkbox",id:"perm_edit_select_all",checked:e.isAllCheckboxSelected,onChange:t[8]||(t[8]=function(t){return e.onAllCheckboxChange(t)})},null,40,ee),te])])]),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("General_Name")),1),Object(a["createElementVNode"])("th",ne,[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize("".concat(e.translate("UsersManager_Role")," "))},null,8,se),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["helpIcon",{sticky:e.isRoleHelpToggled}]),onClick:t[9]||(t[9]=Object(a["withModifiers"])((function(t){return e.isRoleHelpToggled=!e.isRoleHelpToggled}),["prevent"]))},ie,2)]),Object(a["createElementVNode"])("th",ae,[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize("".concat(e.translate("UsersManager_Capabilities")," "))},null,8,oe),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["helpIcon",{sticky:e.isCapabilitiesHelpToggled}]),onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.isCapabilitiesHelpToggled=!e.isCapabilitiesHelpToggled}),["prevent"]))},ce,2)])])]),Object(a["createElementVNode"])("tbody",null,[e.isAllCheckboxSelected&&e.siteAccess.length=(this.totalEntries||0)||(this.offset=e,this.fetchAccess())},showRemoveAccessConfirm:function(){Pe(this.$refs.deleteAccessConfirmModal).modal({dismissible:!1}).modal("open")},changeUserRole:function(){var e=this,t=function(){var t=[];return Object.keys(e.selectedRows).forEach((function(n){e.selectedRows[n]&&e.siteAccess[n]&&t.push(e.siteAccess[n].idsite)})),t},n=function(){return i["AjaxHelper"].fetch({method:"UsersManager.getSitesAccessForUser",filter_search:e.siteNameFilter,filter_access:e.accessLevelFilter,userLogin:e.userLogin,filter_limit:"-1"}).then((function(e){return e.map((function(e){return e.idsite}))}))};return this.isLoadingAccess=!0,Promise.resolve().then((function(){return e.siteAccessToChange?[e.siteAccessToChange.idsite]:e.areAllResultsSelected?n():t()})).then((function(t){return i["AjaxHelper"].post({method:"UsersManager.setUserAccess"},{userLogin:e.userLogin,access:e.roleToChangeTo,idSites:t})})).catch((function(){})).then((function(){return e.$emit("accessChanged"),e.fetchAccess()}))},showChangeAccessConfirm:function(){Pe(this.$refs.changeAccessConfirmModal).modal({dismissible:!1}).modal("open")},getRoleDisplay:function(e){var t=null;return this.filteredAccessLevels.forEach((function(n){n.key===e&&(t=n.value)})),t},giveAccessToAllSites:function(){var e=this;this.isGivingAccessToAllSites=!0,i["AjaxHelper"].fetch({method:"SitesManager.getSitesWithAdminAccess",filter_limit:-1}).then((function(t){var n=t.map((function(e){return e.idsite}));return i["AjaxHelper"].post({method:"UsersManager.setUserAccess"},{userLogin:e.userLogin,access:e.allWebsitesAccssLevelSet,idSites:n})})).then((function(){return e.fetchAccess()})).finally((function(){e.isGivingAccessToAllSites=!1}))},showChangeAccessAllSitesModal:function(){Pe(this.$refs.confirmGiveAccessAllSitesModal).modal({dismissible:!1}).modal("open")},onChangeSiteFilter:function(e){var t=this;setTimeout((function(){var n=e.target.value;t.siteNameFilter!==n&&(t.siteNameFilter=n,t.offset=0,t.fetchAccess())}))},onRoleChange:function(e,t){this.previousRole=e.role,this.roleToChangeTo=t,this.siteAccessToChange=e,this.showChangeAccessConfirm()}},computed:{rolesHelpText:function(){return Object(i["translate"])("UsersManager_RolesHelp",'',"",'',"")},theDisplayedWebsitesAreSelectedText:function(){var e=Object(i["translate"])("UsersManager_TheDisplayedWebsitesAreSelected","".concat(this.siteAccess.length,""));return"".concat(e," ")},clickToSelectAllText:function(){return Object(i["translate"])("UsersManager_ClickToSelectAll","".concat(this.totalEntries,""))},allWebsitesAreSelectedText:function(){return Object(i["translate"])("UsersManager_AllWebsitesAreSelected","".concat(this.totalEntries,""))},clickToSelectDisplayedWebsitesText:function(){return Object(i["translate"])("UsersManager_ClickToSelectDisplayedWebsites","".concat(this.siteAccess.length,""))},deletePermConfirmSingleText:function(){return Object(i["translate"])("UsersManager_DeletePermConfirmSingle","".concat(this.userLogin,""),"".concat(this.siteAccessToChangeName,""))},deletePermConfirmMultipleText:function(){return Object(i["translate"])("UsersManager_DeletePermConfirmMultiple","".concat(this.userLogin,""),"".concat(this.affectedSitesCount,""))},changePermToSiteConfirmSingleText:function(){return Object(i["translate"])("UsersManager_ChangePermToSiteConfirmSingle","".concat(this.userLogin,""),"".concat(this.siteAccessToChangeName,""),"".concat(this.getRoleDisplay(this.roleToChangeTo),""))},changePermToSiteConfirmMultipleText:function(){return Object(i["translate"])("UsersManager_ChangePermToSiteConfirmMultiple","".concat(this.userLogin,""),"".concat(this.affectedSitesCount,""),"".concat(this.getRoleDisplay(this.roleToChangeTo),""))},changePermToAllSitesConfirmText:function(){return Object(i["translate"])("UsersManager_ChangePermToAllSitesConfirm","".concat(this.userLogin,""),"".concat(this.getRoleDisplay(this.allWebsitesAccssLevelSet),""))},paginationLowerBound:function(){return this.offset+1},paginationUpperBound:function(){return this.totalEntries?Math.min(this.offset+this.limit,this.totalEntries):"?"},filteredAccessLevels:function(){return this.accessLevels.filter((function(e){return"superuser"!==e.key}))},filteredSelectAccessLevels:function(){return this.filterAccessLevels.filter((function(e){return"superuser"!==e.key}))},selectedRowsCount:function(){var e=0;return Object.values(this.selectedRows).forEach((function(t){t&&(e+=1)})),e},affectedSitesCount:function(){return this.areAllResultsSelected?this.totalEntries:this.selectedRowsCount},allPropsWatch:function(){return this.userLogin,this.limit,this.accessLevels,this.filterAccessLevels,Date.now()},siteAccessToChangeName:function(){return this.siteAccessToChange?i["Matomo"].helper.htmlEntities(this.siteAccessToChange.site_name):""},paginationText:function(){var e=Object(i["translate"])("General_Pagination","".concat(this.paginationLowerBound),"".concat(this.paginationUpperBound),"".concat(this.totalEntries));return" ".concat(e," ")}}});He.render=Re;var Fe=He,Ie=(Object(i["createAngularJsAdapter"])({component:Fe,scope:{userLogin:{angularJsBind:"<"},limit:{angularJsBind:"<"},onUserHasAccessDetected:{angularJsBind:"&",vue:"userHasAccessDetected"},onAccessChange:{angularJsBind:"&",vue:"accessChanged"},accessLevels:{angularJsBind:"<"},filterAccessLevels:{angularJsBind:"<"}},directiveName:"piwikUserPermissionsEdit",restrict:"E"}),{class:"row"}),Je={key:0,class:"col m2 entityList"},qe={class:"listCircle"},$e={key:0,class:"icon-warning"},Ge=Object(a["createElementVNode"])("div",{class:"save-button-spacer hide-on-small-only"},null,-1),ze={href:"",class:"entityCancelLink"},We={class:"visibleTab col m10"},Ye={key:0,class:"basic-info-tab"},Xe={class:"form-group row",style:{position:"relative"}},Ke={class:"col s12 m6"},Qe={class:"col s12 m6"},Ze={key:0,class:"form-help"},et=["innerHTML"],tt={key:0,class:"entityCancel"},nt={key:1,class:"user-permissions"},st={key:0},rt={key:1,class:"alert alert-info"},it={key:2,class:"superuser-access"},at={class:"superuser-confirm-modal modal",ref:"superUserConfirmModal"},ot={class:"modal-content"},lt={key:0},ct={key:1},dt={class:"modal-footer"},ut={key:3,class:"twofa-reset"},mt={class:"resetTwoFa"},bt={class:"twofa-confirm-modal modal",ref:"twofaConfirmModal"},pt={class:"modal-content"},gt={class:"modal-footer"},ht={class:"change-password-modal modal",ref:"changePasswordModal"},ft={class:"modal-content"},jt=["innerHTML"],Ot={class:"modal-footer"};
+ */function Re(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Notification"),l=Object(a["resolveComponent"])("Field"),c=Object(a["resolveComponent"])("CapabilitiesEdit"),d=Object(a["resolveDirective"])("dropdown-menu"),u=Object(a["resolveDirective"])("content-table");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["userPermissionsEdit",{loading:e.isLoadingAccess}])},[e.hasAccessToAtLeastOneSite?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",V,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{context:"warning",type:"transient",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("strong",null,Object(a["toDisplayString"])(e.translate("General_Warning"))+":",1),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("UsersManager_NoAccessWarning")),1)]})),_:1})])])),Object(a["createElementVNode"])("div",k,[Object(a["createElementVNode"])("div",A,[Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("span",w,Object(a["toDisplayString"])(e.translate("UsersManager_GiveAccessToAll"))+":",1),Object(a["createElementVNode"])("div",T,[Object(a["createVNode"])(l,{modelValue:e.allWebsitesAccssLevelSet,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.allWebsitesAccssLevelSet=t}),uicontrol:"select",options:e.filteredAccessLevels,"full-width":!0},null,8,["modelValue","options"])]),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["btn",{disabled:e.isGivingAccessToAllSites}]),onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.showChangeAccessAllSitesModal()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Apply")),3)]),Object(a["createElementVNode"])("p",B,Object(a["toDisplayString"])(e.translate("UsersManager_OrManageIndividually"))+":",1)])]),Object(a["createElementVNode"])("div",_,[Object(a["createElementVNode"])("div",D,[Object(a["createElementVNode"])("div",L,[Object(a["withDirectives"])(Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["dropdown-trigger btn",{disabled:e.isBulkActionsDisabled}]),href:"","data-target":"user-permissions-edit-bulk-actions"},[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_BulkActions")),1)],2),[[d,{activates:"#user-permissions-edit-bulk-actions"}]]),Object(a["createElementVNode"])("ul",R,[Object(a["createElementVNode"])("li",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("a",x,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_SetPermission")),1)],512),[[d,{activates:"#user-permissions-bulk-set-access"}]]),Object(a["createElementVNode"])("ul",P,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.filteredAccessLevels,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:t.key},[Object(a["createElementVNode"])("a",{href:"",onClick:Object(a["withModifiers"])((function(n){e.siteAccessToChange=null,e.roleToChangeTo=t.key,e.showChangeAccessConfirm()}),["prevent"])},Object(a["toDisplayString"])(t.value),9,F)])})),128))])]),Object(a["createElementVNode"])("li",null,[Object(a["createElementVNode"])("a",{href:"",onClick:t[2]||(t[2]=Object(a["withModifiers"])((function(t){e.siteAccessToChange=null,e.roleToChangeTo="noaccess",e.showRemoveAccessConfirm()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_RemovePermissions")),1)])])]),Object(a["createElementVNode"])("div",H,[Object(a["createElementVNode"])("input",{type:"text",value:e.siteNameFilter,onKeydown:t[3]||(t[3]=function(t){e.onChangeSiteFilter(t)}),onChange:t[4]||(t[4]=function(t){e.onChangeSiteFilter(t)}),placeholder:e.translate("UsersManager_FilterByWebsite")},null,40,I)]),Object(a["createElementVNode"])("div",J,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(l,{modelValue:e.accessLevelFilter,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.accessLevelFilter=t}),uicontrol:"select",options:e.filteredSelectAccessLevels,"full-width":!0,placeholder:e.translate("UsersManager_FilterByAccess")},null,8,["modelValue","options","placeholder"])])])]),e.totalEntries>e.limit?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",q,[Object(a["createElementVNode"])("div",$,[Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["prev",{disabled:e.offset<=0}])},[Object(a["createElementVNode"])("span",{class:"pointer",onClick:t[6]||(t[6]=function(t){return e.gotoPreviousPage()})},"« "+Object(a["toDisplayString"])(e.translate("General_Previous")),1)],2),Object(a["createElementVNode"])("span",G,[Object(a["createElementVNode"])("span",{textContent:Object(a["toDisplayString"])(e.paginationText)},null,8,z)]),Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["next",{disabled:e.offset+e.limit>=e.totalEntries}])},[Object(a["createElementVNode"])("span",{class:"pointer",onClick:t[7]||(t[7]=function(t){return e.gotoNextPage()})},Object(a["toDisplayString"])(e.translate("General_Next"))+" »",1)],2)])])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",W,[e.isRoleHelpToggled?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,context:"info",type:"persistent",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.rolesHelpText)},null,8,Y)]})),_:1})):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",X,[e.isCapabilitiesHelpToggled?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,context:"info",type:"persistent",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.translate("UsersManager_CapabilitiesHelp")),1)]})),_:1})):Object(a["createCommentVNode"])("",!0)]),Object(a["withDirectives"])(Object(a["createElementVNode"])("table",K,[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("th",Q,[Object(a["createElementVNode"])("span",Z,[Object(a["createElementVNode"])("label",null,[Object(a["createElementVNode"])("input",{type:"checkbox",id:"perm_edit_select_all",checked:e.isAllCheckboxSelected,onChange:t[8]||(t[8]=function(t){return e.onAllCheckboxChange(t)})},null,40,ee),te])])]),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("General_Name")),1),Object(a["createElementVNode"])("th",ne,[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize("".concat(e.translate("UsersManager_Role")," "))},null,8,se),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["helpIcon",{sticky:e.isRoleHelpToggled}]),onClick:t[9]||(t[9]=Object(a["withModifiers"])((function(t){return e.isRoleHelpToggled=!e.isRoleHelpToggled}),["prevent"]))},ie,2)]),Object(a["createElementVNode"])("th",ae,[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize("".concat(e.translate("UsersManager_Capabilities")," "))},null,8,oe),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["helpIcon",{sticky:e.isCapabilitiesHelpToggled}]),onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.isCapabilitiesHelpToggled=!e.isCapabilitiesHelpToggled}),["prevent"]))},ce,2)])])]),Object(a["createElementVNode"])("tbody",null,[e.isAllCheckboxSelected&&e.siteAccess.length=(this.totalEntries||0)||(this.offset=e,this.fetchAccess())},showRemoveAccessConfirm:function(){Pe(this.$refs.deleteAccessConfirmModal).modal({dismissible:!1}).modal("open")},changeUserRole:function(){var e=this,t=function(){var t=[];return Object.keys(e.selectedRows).forEach((function(n){e.selectedRows[n]&&e.siteAccess[n]&&t.push(e.siteAccess[n].idsite)})),t},n=function(){return i["AjaxHelper"].fetch({method:"UsersManager.getSitesAccessForUser",filter_search:e.siteNameFilter,filter_access:e.accessLevelFilter,userLogin:e.userLogin,filter_limit:"-1"}).then((function(e){return e.map((function(e){return e.idsite}))}))};return this.isLoadingAccess=!0,Promise.resolve().then((function(){return e.siteAccessToChange?[e.siteAccessToChange.idsite]:e.areAllResultsSelected?n():t()})).then((function(t){return i["AjaxHelper"].post({method:"UsersManager.setUserAccess"},{userLogin:e.userLogin,access:e.roleToChangeTo,idSites:t})})).catch((function(){})).then((function(){return e.$emit("accessChanged"),e.fetchAccess()}))},showChangeAccessConfirm:function(){Pe(this.$refs.changeAccessConfirmModal).modal({dismissible:!1}).modal("open")},getRoleDisplay:function(e){var t=null;return this.filteredAccessLevels.forEach((function(n){n.key===e&&(t=n.value)})),t},giveAccessToAllSites:function(){var e=this;this.isGivingAccessToAllSites=!0,i["AjaxHelper"].fetch({method:"SitesManager.getSitesWithAdminAccess",filter_limit:-1}).then((function(t){var n=t.map((function(e){return e.idsite}));return i["AjaxHelper"].post({method:"UsersManager.setUserAccess"},{userLogin:e.userLogin,access:e.allWebsitesAccssLevelSet,idSites:n})})).then((function(){return e.fetchAccess()})).finally((function(){e.isGivingAccessToAllSites=!1}))},showChangeAccessAllSitesModal:function(){Pe(this.$refs.confirmGiveAccessAllSitesModal).modal({dismissible:!1}).modal("open")},onChangeSiteFilter:function(e){var t=this;setTimeout((function(){var n=e.target.value;t.siteNameFilter!==n&&(t.siteNameFilter=n,t.offset=0,t.fetchAccess())}))},onRoleChange:function(e,t){this.previousRole=e.role,this.roleToChangeTo=t,this.siteAccessToChange=e,this.showChangeAccessConfirm()}},computed:{rolesHelpText:function(){return Object(i["translate"])("UsersManager_RolesHelp",'',"",'',"")},theDisplayedWebsitesAreSelectedText:function(){var e=Object(i["translate"])("UsersManager_TheDisplayedWebsitesAreSelected","".concat(this.siteAccess.length,""));return"".concat(e," ")},clickToSelectAllText:function(){return Object(i["translate"])("UsersManager_ClickToSelectAll","".concat(this.totalEntries,""))},allWebsitesAreSelectedText:function(){return Object(i["translate"])("UsersManager_AllWebsitesAreSelected","".concat(this.totalEntries,""))},clickToSelectDisplayedWebsitesText:function(){return Object(i["translate"])("UsersManager_ClickToSelectDisplayedWebsites","".concat(this.siteAccess.length,""))},deletePermConfirmSingleText:function(){return Object(i["translate"])("UsersManager_DeletePermConfirmSingle","".concat(this.userLogin,""),"".concat(this.siteAccessToChangeName,""))},deletePermConfirmMultipleText:function(){return Object(i["translate"])("UsersManager_DeletePermConfirmMultiple","".concat(this.userLogin,""),"".concat(this.affectedSitesCount,""))},changePermToSiteConfirmSingleText:function(){return Object(i["translate"])("UsersManager_ChangePermToSiteConfirmSingle","".concat(this.userLogin,""),"".concat(this.siteAccessToChangeName,""),"".concat(this.getRoleDisplay(this.roleToChangeTo),""))},changePermToSiteConfirmMultipleText:function(){return Object(i["translate"])("UsersManager_ChangePermToSiteConfirmMultiple","".concat(this.userLogin,""),"".concat(this.affectedSitesCount,""),"".concat(this.getRoleDisplay(this.roleToChangeTo),""))},changePermToAllSitesConfirmText:function(){return Object(i["translate"])("UsersManager_ChangePermToAllSitesConfirm","".concat(this.userLogin,""),"".concat(this.getRoleDisplay(this.allWebsitesAccssLevelSet),""))},paginationLowerBound:function(){return this.offset+1},paginationUpperBound:function(){return this.totalEntries?Math.min(this.offset+this.limit,this.totalEntries):"?"},filteredAccessLevels:function(){return this.accessLevels.filter((function(e){return"superuser"!==e.key}))},filteredSelectAccessLevels:function(){return this.filterAccessLevels.filter((function(e){return"superuser"!==e.key}))},selectedRowsCount:function(){var e=0;return Object.values(this.selectedRows).forEach((function(t){t&&(e+=1)})),e},affectedSitesCount:function(){return this.areAllResultsSelected?this.totalEntries:this.selectedRowsCount},allPropsWatch:function(){return this.userLogin,this.limit,this.accessLevels,this.filterAccessLevels,Date.now()},siteAccessToChangeName:function(){return this.siteAccessToChange?i["Matomo"].helper.htmlEntities(this.siteAccessToChange.site_name):""},paginationText:function(){var e=Object(i["translate"])("General_Pagination","".concat(this.paginationLowerBound),"".concat(this.paginationUpperBound),"".concat(this.totalEntries));return" ".concat(e," ")}}});Fe.render=Re;var He=Fe,Ie=(Object(i["createAngularJsAdapter"])({component:He,scope:{userLogin:{angularJsBind:"<"},limit:{angularJsBind:"<"},onUserHasAccessDetected:{angularJsBind:"&",vue:"userHasAccessDetected"},onAccessChange:{angularJsBind:"&",vue:"accessChanged"},accessLevels:{angularJsBind:"<"},filterAccessLevels:{angularJsBind:"<"}},directiveName:"piwikUserPermissionsEdit",restrict:"E"}),{class:"row"}),Je={key:0,class:"col m2 entityList"},qe={class:"listCircle"},$e={key:0,class:"icon-warning"},Ge=Object(a["createElementVNode"])("div",{class:"save-button-spacer hide-on-small-only"},null,-1),ze={href:"",class:"entityCancelLink"},We={class:"visibleTab col m10"},Ye={key:0,class:"basic-info-tab"},Xe={class:"form-group row",style:{position:"relative"}},Ke={class:"col s12 m6"},Qe={class:"col s12 m6"},Ze={key:0,class:"form-help"},et=["innerHTML"],tt={key:0,class:"entityCancel"},nt={key:1,class:"user-permissions"},st={key:0},rt={key:1,class:"alert alert-info"},it={key:2,class:"superuser-access"},at={class:"superuser-confirm-modal modal",ref:"superUserConfirmModal"},ot={class:"modal-content"},lt={key:0},ct={key:1},dt={class:"modal-footer"},ut={key:3,class:"twofa-reset"},mt={class:"resetTwoFa"},bt={class:"twofa-confirm-modal modal",ref:"twofaConfirmModal"},pt={class:"modal-content"},gt={class:"modal-footer"},ft={class:"change-password-modal modal",ref:"changePasswordModal"},ht={class:"modal-content"},jt=["innerHTML"],Ot={class:"modal-footer"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function vt(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SaveButton"),c=Object(a["resolveComponent"])("UserPermissionsEdit"),d=Object(a["resolveComponent"])("ContentBlock"),u=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(d,{class:Object(a["normalizeClass"])(["userEditForm",{loading:e.isSavingUserInfo}]),"content-title":"".concat(e.formTitle," ").concat(e.isAdd?"":"'".concat(e.theUser.login,"'"))},{default:Object(a["withCtx"])((function(){return[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",Ie,[e.isAdd?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Je,[Object(a["createElementVNode"])("ul",qe,[Object(a["createElementVNode"])("li",{class:Object(a["normalizeClass"])([{active:"basic"===e.activeTab},"menuBasicInfo"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[0]||(t[0]=Object(a["withModifiers"])((function(t){return e.activeTab="basic"}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_BasicInformation")),1)],2),Object(a["createElementVNode"])("li",{class:Object(a["normalizeClass"])([{active:"permissions"===e.activeTab},"menuPermissions"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.activeTab="permissions"}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("UsersManager_Permissions")),1),e.userHasAccess||e.theUser.superuser_access?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",$e))],2),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:0,class:Object(a["normalizeClass"])([{active:"superuser"===e.activeTab},"menuSuperuser"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[2]||(t[2]=Object(a["withModifiers"])((function(t){return e.activeTab="superuser"}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_SuperUserAccess")),1)],2)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole&&e.theUser.uses_2fa&&!e.isAdd?(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:1,class:Object(a["normalizeClass"])([{active:"2fa"===e.activeTab},"menuUserTwoFa"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[3]||(t[3]=Object(a["withModifiers"])((function(t){return e.activeTab="2fa"}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_TwoFactorAuthentication")),1)],2)):Object(a["createCommentVNode"])("",!0)]),Ge,Object(a["createElementVNode"])("div",{class:"entityCancel",onClick:t[4]||(t[4]=Object(a["withModifiers"])((function(t){return e.onDoneEditing()}),["prevent"]))},[Object(a["createElementVNode"])("a",ze,Object(a["toDisplayString"])(e.translate("Mobile_NavigationBack")),1)])])),Object(a["createElementVNode"])("div",We,["basic"===e.activeTab?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ye,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.theUser.login,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.theUser.login=t}),disabled:e.isSavingUserInfo||!e.isAdd||e.isShowingPasswordConfirm,uicontrol:"text",name:"user_login",maxlength:100,title:e.translate("General_Username")},null,8,["modelValue","disabled","title"])]),Object(a["createElementVNode"])("div",null,[e.isPendingUser?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,"model-value":e.theUser.password,disabled:e.isSavingUserInfo||"superuser"!==e.currentUserRole&&!e.isAdd||e.isShowingPasswordConfirm,"onUpdate:modelValue":t[6]||(t[6]=function(t){e.theUser.password=t,e.isPasswordModified=!0}),uicontrol:"password",name:"user_password",title:e.translate("General_Password")},null,8,["model-value","disabled","title"])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",null,["superuser"===e.currentUserRole||e.isAdd?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,modelValue:e.theUser.email,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.theUser.email=t}),disabled:e.isSavingUserInfo||"superuser"!==e.currentUserRole&&!e.isAdd||e.isShowingPasswordConfirm,uicontrol:"text",name:"user_email",maxlength:100,title:e.translate("UsersManager_Email")},null,8,["modelValue","disabled","title"])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",null,[e.isAdd?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,modelValue:e.firstSiteAccess,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.firstSiteAccess=t}),disabled:e.isSavingUserInfo,uicontrol:"site",name:"user_site","ui-control-attributes":{onlySitesWithAdminAccess:!0},title:e.translate("UsersManager_FirstWebsitePermission"),"inline-help":e.translate("UsersManager_FirstSiteInlineHelp")},null,8,["modelValue","disabled","title","inline-help"])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",Xe,[Object(a["createElementVNode"])("div",Ke,["superuser"===e.currentUserRole||e.isAdd?(Object(a["openBlock"])(),Object(a["createBlock"])(l,{key:0,style:{position:"absolute",bottom:"0"},value:e.saveButtonLabel,disabled:e.isAdd&&(!e.firstSiteAccess||!e.firstSiteAccess.id),saving:e.isSavingUserInfo,onConfirm:t[9]||(t[9]=function(t){return e.saveUserInfo()})},null,8,["value","disabled","saving"])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",Qe,[e.isAdd?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ze,[Object(a["createElementVNode"])("span",{class:"inline-help",innerHTML:e.$sanitize(e.translate("UsersManager_InviteSuccessNotification",[7]))},null,8,et)])):Object(a["createCommentVNode"])("",!0)])])]),e.isAdd?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",tt,[Object(a["createElementVNode"])("a",{href:"",class:"entityCancelLink",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.onDoneEditing()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Cancel")),1)])):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0),e.isAdd?Object(a["createCommentVNode"])("",!0):Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",nt,[e.theUser.superuser_access?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",st,[Object(a["createVNode"])(c,{"user-login":e.theUser.login,onUserHasAccessDetected:t[11]||(t[11]=function(t){return e.userHasAccess=t.hasAccess}),onAccessChanged:t[12]||(t[12]=function(t){return e.isUserModified=!0}),"access-levels":e.accessLevels,"filter-access-levels":e.filterAccessLevels},null,8,["user-login","access-levels","filter-access-levels"])])),e.theUser.superuser_access?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",rt,Object(a["toDisplayString"])(e.translate("UsersManager_SuperUsersPermissionsNotice")),1)):Object(a["createCommentVNode"])("",!0)],512)),[[a["vShow"],"permissions"===e.activeTab]]),"superuser"!==e.activeTab||"superuser"!==e.currentUserRole||e.isAdd?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",it,[Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_SuperUserIntro1")),1),Object(a["createElementVNode"])("p",null,[Object(a["createElementVNode"])("strong",null,Object(a["toDisplayString"])(e.translate("UsersManager_SuperUserIntro2")),1)]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.superUserAccessChecked,"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.superUserAccessChecked=t}),onClick:t[14]||(t[14]=function(t){return e.confirmSuperUserChange()}),disabled:e.isSavingUserInfo,uicontrol:"checkbox",name:"superuser_access",title:e.translate("UsersManager_HasSuperUserAccess")},null,8,["modelValue","disabled","title"])]),Object(a["createElementVNode"])("div",at,[Object(a["createElementVNode"])("div",ot,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("UsersManager_AreYouSure")),1),e.theUser.superuser_access?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",lt,Object(a["toDisplayString"])(e.translate("UsersManager_RemoveSuperuserAccessConfirm")),1)):Object(a["createCommentVNode"])("",!0),e.theUser.superuser_access?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",ct,Object(a["toDisplayString"])(e.translate("UsersManager_AddSuperuserAccessConfirm")),1)),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.passwordConfirmationForSuperUser,"onUpdate:modelValue":t[15]||(t[15]=function(t){return e.passwordConfirmationForSuperUser=t}),uicontrol:"password",name:"currentUserPasswordForSuperUser",autocomplete:!1,"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",dt,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[16]||(t[16]=Object(a["withModifiers"])((function(t){return e.toggleSuperuserAccess()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[17]||(t[17]=Object(a["withModifiers"])((function(t){e.setSuperUserAccessChecked(),e.passwordConfirmationForSuperUser=""}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)])),"superuser"!==e.currentUserRole||e.isAdd?Object(a["createCommentVNode"])("",!0):Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ut,[Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_ResetTwoFactorAuthenticationInfo")),1),Object(a["createElementVNode"])("div",mt,[Object(a["createVNode"])(l,{saving:e.isResetting2FA,onConfirm:t[18]||(t[18]=function(t){return e.confirmReset2FA()}),value:e.translate("UsersManager_ResetTwoFactorAuthentication")},null,8,["saving","value"])]),Object(a["createElementVNode"])("div",bt,[Object(a["createElementVNode"])("div",pt,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("UsersManager_AreYouSure")),1),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.passwordConfirmation,"onUpdate:modelValue":t[19]||(t[19]=function(t){return e.passwordConfirmation=t}),uicontrol:"password",name:"currentUserPasswordTwoFa",autocomplete:!1,"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",gt,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[20]||(t[20]=Object(a["withModifiers"])((function(t){return e.reset2FA()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[21]||(t[21]=function(t){t.preventDefault(),e.passwordConfirmation=""})},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)],512)),[[a["vShow"],"2fa"===e.activeTab]])])],512),[[u]]),Object(a["createElementVNode"])("div",ht,[Object(a["createElementVNode"])("div",ft,[Object(a["createElementVNode"])("h2",{innerHTML:e.$sanitize(e.changePasswordTitle)},null,8,jt),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.passwordConfirmation,"onUpdate:modelValue":t[22]||(t[22]=function(t){return e.passwordConfirmation=t}),uicontrol:"password",name:"currentUserPasswordChangePwd",autocomplete:!1,"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",Ot,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[23]||(t[23]=Object(a["withModifiers"])((function(t){return e.updateUser()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[24]||(t[24]=function(t){t.preventDefault(),e.passwordConfirmation=""})},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)]})),_:1},8,["class","content-title"])}var Ct={login:"",superuser_access:!1,uses_2fa:!1,password:"",email:"",invited_at:""},Nt=window,St=Nt.$,Ut=Object(a["defineComponent"])({props:{user:Object,currentUserRole:{type:String,required:!0},accessLevels:{type:Array,required:!0},filterAccessLevels:{type:Array,required:!0},initialSiteId:{type:[String,Number],required:!0},initialSiteName:{type:String,required:!0}},components:{ContentBlock:i["ContentBlock"],Field:h["Field"],SaveButton:h["SaveButton"],UserPermissionsEdit:Fe},directives:{Form:h["Form"]},data:function(){return{theUser:this.user||Object.assign({},Ct),activeTab:"basic",permissionsForIdSite:1,isSavingUserInfo:!1,userHasAccess:!0,firstSiteAccess:{id:this.initialSiteId,name:this.initialSiteName},isUserModified:!1,passwordConfirmation:"",isPasswordModified:!1,superUserAccessChecked:null,passwordConfirmationForSuperUser:"",isResetting2FA:!1,isShowingPasswordConfirm:!1}},emits:["done","updated"],watch:{user:function(e){this.onUserChange(e)}},created:function(){this.onUserChange(this.user)},methods:{onUserChange:function(e){this.theUser=e||Object.assign({},Ct),this.theUser.password||this.resetPasswordVar(),this.setSuperUserAccessChecked()},confirmSuperUserChange:function(){St(this.$refs.superUserConfirmModal).modal({dismissible:!1}).modal("open")},confirmReset2FA:function(){St(this.$refs.twofaConfirmModal).modal({dismissible:!1}).modal("open")},toggleSuperuserAccess:function(){var e=this;this.isSavingUserInfo=!0,i["AjaxHelper"].post({method:"UsersManager.setSuperUserAccess"},{userLogin:this.theUser.login,hasSuperUserAccess:this.theUser.superuser_access?"0":"1",passwordConfirmation:this.passwordConfirmationForSuperUser}).then((function(){e.theUser.superuser_access=!e.theUser.superuser_access})).catch((function(){})).then((function(){e.isSavingUserInfo=!1,e.isUserModified=!0,e.passwordConfirmationForSuperUser="",e.setSuperUserAccessChecked()}))},saveUserInfo:function(){var e=this;return Promise.resolve().then((function(){return e.isAdd?e.createUser():e.confirmUserChange()})).then((function(){e.$emit("updated",{user:Object(a["readonly"])(e.theUser)})}))},createUser:function(){var e=this;return this.isSavingUserInfo=!0,i["AjaxHelper"].post({method:"UsersManager.inviteUser"},{userLogin:this.theUser.login,email:this.theUser.email,initialIdSite:this.firstSiteAccess?this.firstSiteAccess.id:void 0}).catch((function(t){throw e.isSavingUserInfo=!1,t})).then((function(){e.firstSiteAccess=null,e.isSavingUserInfo=!1,e.isUserModified=!0,e.theUser.invited_at="xx",e.resetPasswordVar(),e.showUserSavedNotification()}))},resetPasswordVar:function(){this.isAdd||(this.theUser.password="XXXXXXXX")},confirmUserChange:function(){var e=this;this.passwordConfirmation="",this.isShowingPasswordConfirm=!0;var t=function(t){var n=t.keyCode?t.keyCode:t.which;13===n&&(St(e.$refs.changePasswordModal).modal("close"),e.updateUser())};St(this.$refs.changePasswordModal).modal({dismissible:!1,onOpenEnd:function(){e.isShowingPasswordConfirm=!1,St(".modal.open #currentUserPasswordChangePwd").focus().off("keypress").keypress(t)}}).modal("open")},showUserSavedNotification:function(){i["NotificationsStore"].show({message:Object(i["translate"])("General_YourChangesHaveBeenSaved"),context:"success",type:"toast"})},reset2FA:function(){var e=this;return this.isResetting2FA=!0,i["AjaxHelper"].post({method:"TwoFactorAuth.resetTwoFactorAuth",userLogin:this.theUser.login,passwordConfirmation:this.passwordConfirmation}).catch((function(t){throw e.isResetting2FA=!1,t})).then((function(){e.isResetting2FA=!1,e.theUser.uses_2fa=!1,e.activeTab="basic",e.showUserSavedNotification()})).finally((function(){e.passwordConfirmation=""}))},updateUser:function(){var e=this;return this.isSavingUserInfo=!0,i["AjaxHelper"].post({method:"UsersManager.updateUser"},{userLogin:this.theUser.login,password:this.isPasswordModified&&this.theUser.password?this.theUser.password:void 0,passwordConfirmation:this.passwordConfirmation?this.passwordConfirmation:void 0,email:this.theUser.email}).then((function(){e.isSavingUserInfo=!1,e.passwordConfirmation="",e.isUserModified=!0,e.isPasswordModified=!1,e.resetPasswordVar(),e.showUserSavedNotification()})).catch((function(){e.isSavingUserInfo=!1,e.passwordConfirmation=""}))},setSuperUserAccessChecked:function(){this.superUserAccessChecked=!!this.theUser.superuser_access},onDoneEditing:function(){this.$emit("done",{isUserModified:this.isUserModified})}},computed:{formTitle:function(){return this.isAdd?Object(i["translate"])("UsersManager_InviteNewUser"):Object(i["translate"])("UsersManager_EditUser")},saveButtonLabel:function(){return this.isAdd?Object(i["translate"])("UsersManager_InviteUser"):Object(i["translate"])("UsersManager_SaveBasicInfo")},isPendingUser:function(){return this.user&&(""===this.theUser.invited_at||!this.theUser.invited_at)},isAdd:function(){return!this.user},changePasswordTitle:function(){return Object(i["translate"])("UsersManager_AreYouSureChangeDetails","".concat(this.theUser.login,""))}}});Ut.render=vt;var yt=Ut;
+ */function vt(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SaveButton"),c=Object(a["resolveComponent"])("UserPermissionsEdit"),d=Object(a["resolveComponent"])("ContentBlock"),u=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(d,{class:Object(a["normalizeClass"])(["userEditForm",{loading:e.isSavingUserInfo}]),"content-title":"".concat(e.formTitle," ").concat(e.isAdd?"":"'".concat(e.theUser.login,"'"))},{default:Object(a["withCtx"])((function(){return[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",Ie,[e.isAdd?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Je,[Object(a["createElementVNode"])("ul",qe,[Object(a["createElementVNode"])("li",{class:Object(a["normalizeClass"])([{active:"basic"===e.activeTab},"menuBasicInfo"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[0]||(t[0]=Object(a["withModifiers"])((function(t){return e.activeTab="basic"}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_BasicInformation")),1)],2),Object(a["createElementVNode"])("li",{class:Object(a["normalizeClass"])([{active:"permissions"===e.activeTab},"menuPermissions"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.activeTab="permissions"}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("UsersManager_Permissions")),1),e.userHasAccess||e.theUser.superuser_access?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",$e))],2),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:0,class:Object(a["normalizeClass"])([{active:"superuser"===e.activeTab},"menuSuperuser"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[2]||(t[2]=Object(a["withModifiers"])((function(t){return e.activeTab="superuser"}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_SuperUserAccess")),1)],2)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole&&e.theUser.uses_2fa&&!e.isAdd?(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:1,class:Object(a["normalizeClass"])([{active:"2fa"===e.activeTab},"menuUserTwoFa"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[3]||(t[3]=Object(a["withModifiers"])((function(t){return e.activeTab="2fa"}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_TwoFactorAuthentication")),1)],2)):Object(a["createCommentVNode"])("",!0)]),Ge,Object(a["createElementVNode"])("div",{class:"entityCancel",onClick:t[4]||(t[4]=Object(a["withModifiers"])((function(t){return e.onDoneEditing()}),["prevent"]))},[Object(a["createElementVNode"])("a",ze,Object(a["toDisplayString"])(e.translate("Mobile_NavigationBack")),1)])])),Object(a["createElementVNode"])("div",We,["basic"===e.activeTab?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ye,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.theUser.login,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.theUser.login=t}),disabled:e.isSavingUserInfo||!e.isAdd||e.isShowingPasswordConfirm,uicontrol:"text",name:"user_login",maxlength:100,title:e.translate("General_Username")},null,8,["modelValue","disabled","title"])]),Object(a["createElementVNode"])("div",null,[e.isPending?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,"model-value":e.theUser.password,disabled:e.isSavingUserInfo||"superuser"!==e.currentUserRole&&!e.isAdd||e.isShowingPasswordConfirm,"onUpdate:modelValue":t[6]||(t[6]=function(t){e.theUser.password=t,e.isPasswordModified=!0}),uicontrol:"password",name:"user_password",title:e.translate("General_Password")},null,8,["model-value","disabled","title"]))]),Object(a["createElementVNode"])("div",null,["superuser"===e.currentUserRole||e.isAdd?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,modelValue:e.theUser.email,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.theUser.email=t}),disabled:e.isSavingUserInfo||"superuser"!==e.currentUserRole&&!e.isAdd||e.isShowingPasswordConfirm,uicontrol:"text",name:"user_email",maxlength:100,title:e.translate("UsersManager_Email")},null,8,["modelValue","disabled","title"])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",null,[e.isAdd?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,modelValue:e.firstSiteAccess,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.firstSiteAccess=t}),disabled:e.isSavingUserInfo,uicontrol:"site",name:"user_site","ui-control-attributes":{onlySitesWithAdminAccess:!0},title:e.translate("UsersManager_FirstWebsitePermission"),"inline-help":e.translate("UsersManager_FirstSiteInlineHelp")},null,8,["modelValue","disabled","title","inline-help"])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",Xe,[Object(a["createElementVNode"])("div",Ke,["superuser"===e.currentUserRole||e.isAdd?(Object(a["openBlock"])(),Object(a["createBlock"])(l,{key:0,style:{position:"absolute",bottom:"0"},value:e.saveButtonLabel,disabled:e.isAdd&&(!e.firstSiteAccess||!e.firstSiteAccess.id),saving:e.isSavingUserInfo,onConfirm:t[9]||(t[9]=function(t){return e.saveUserInfo()})},null,8,["value","disabled","saving"])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",Qe,[e.isAdd?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ze,[Object(a["createElementVNode"])("span",{class:"inline-help",innerHTML:e.$sanitize(e.translate("UsersManager_InviteSuccessNotification",[7]))},null,8,et)])):Object(a["createCommentVNode"])("",!0)])])]),e.isAdd?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",tt,[Object(a["createElementVNode"])("a",{href:"",class:"entityCancelLink",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.onDoneEditing()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Cancel")),1)])):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0),e.isAdd?Object(a["createCommentVNode"])("",!0):Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",nt,[e.theUser.superuser_access?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",st,[Object(a["createVNode"])(c,{"user-login":e.theUser.login,onUserHasAccessDetected:t[11]||(t[11]=function(t){return e.userHasAccess=t.hasAccess}),onAccessChanged:t[12]||(t[12]=function(t){return e.isUserModified=!0}),"access-levels":e.accessLevels,"filter-access-levels":e.filterAccessLevels},null,8,["user-login","access-levels","filter-access-levels"])])),e.theUser.superuser_access?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",rt,Object(a["toDisplayString"])(e.translate("UsersManager_SuperUsersPermissionsNotice")),1)):Object(a["createCommentVNode"])("",!0)],512)),[[a["vShow"],"permissions"===e.activeTab]]),"superuser"!==e.activeTab||"superuser"!==e.currentUserRole||e.isAdd?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",it,[Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_SuperUserIntro1")),1),Object(a["createElementVNode"])("p",null,[Object(a["createElementVNode"])("strong",null,Object(a["toDisplayString"])(e.translate("UsersManager_SuperUserIntro2")),1)]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.superUserAccessChecked,"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.superUserAccessChecked=t}),onClick:t[14]||(t[14]=function(t){return e.confirmSuperUserChange()}),disabled:e.isSavingUserInfo,uicontrol:"checkbox",name:"superuser_access",title:e.translate("UsersManager_HasSuperUserAccess")},null,8,["modelValue","disabled","title"])]),Object(a["createElementVNode"])("div",at,[Object(a["createElementVNode"])("div",ot,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("UsersManager_AreYouSure")),1),e.theUser.superuser_access?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",lt,Object(a["toDisplayString"])(e.translate("UsersManager_RemoveSuperuserAccessConfirm")),1)):Object(a["createCommentVNode"])("",!0),e.theUser.superuser_access?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",ct,Object(a["toDisplayString"])(e.translate("UsersManager_AddSuperuserAccessConfirm")),1)),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.passwordConfirmationForSuperUser,"onUpdate:modelValue":t[15]||(t[15]=function(t){return e.passwordConfirmationForSuperUser=t}),uicontrol:"password",name:"currentUserPasswordForSuperUser",autocomplete:!1,"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",dt,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[16]||(t[16]=Object(a["withModifiers"])((function(t){return e.toggleSuperuserAccess()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[17]||(t[17]=Object(a["withModifiers"])((function(t){e.setSuperUserAccessChecked(),e.passwordConfirmationForSuperUser=""}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)])),"superuser"!==e.currentUserRole||e.isAdd?Object(a["createCommentVNode"])("",!0):Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ut,[Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_ResetTwoFactorAuthenticationInfo")),1),Object(a["createElementVNode"])("div",mt,[Object(a["createVNode"])(l,{saving:e.isResetting2FA,onConfirm:t[18]||(t[18]=function(t){return e.confirmReset2FA()}),value:e.translate("UsersManager_ResetTwoFactorAuthentication")},null,8,["saving","value"])]),Object(a["createElementVNode"])("div",bt,[Object(a["createElementVNode"])("div",pt,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("UsersManager_AreYouSure")),1),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.passwordConfirmation,"onUpdate:modelValue":t[19]||(t[19]=function(t){return e.passwordConfirmation=t}),uicontrol:"password",name:"currentUserPasswordTwoFa",autocomplete:!1,"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",gt,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[20]||(t[20]=Object(a["withModifiers"])((function(t){return e.reset2FA()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[21]||(t[21]=function(t){t.preventDefault(),e.passwordConfirmation=""})},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)],512)),[[a["vShow"],"2fa"===e.activeTab]])])],512),[[u]]),Object(a["createElementVNode"])("div",ft,[Object(a["createElementVNode"])("div",ht,[Object(a["createElementVNode"])("h2",{innerHTML:e.$sanitize(e.changePasswordTitle)},null,8,jt),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.passwordConfirmation,"onUpdate:modelValue":t[22]||(t[22]=function(t){return e.passwordConfirmation=t}),uicontrol:"password",name:"currentUserPasswordChangePwd",autocomplete:!1,"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",Ot,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[23]||(t[23]=Object(a["withModifiers"])((function(t){return e.updateUser()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[24]||(t[24]=function(t){t.preventDefault(),e.passwordConfirmation=""})},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)]})),_:1},8,["class","content-title"])}var Ct={login:"",superuser_access:!1,uses_2fa:!1,password:"",email:"",invite_status:""},Nt=window,St=Nt.$,Ut=Object(a["defineComponent"])({props:{user:Object,currentUserRole:{type:String,required:!0},accessLevels:{type:Array,required:!0},filterAccessLevels:{type:Array,required:!0},initialSiteId:{type:[String,Number],required:!0},initialSiteName:{type:String,required:!0}},components:{ContentBlock:i["ContentBlock"],Field:f["Field"],SaveButton:f["SaveButton"],UserPermissionsEdit:He},directives:{Form:f["Form"]},data:function(){return{theUser:this.user||Object.assign({},Ct),activeTab:"basic",permissionsForIdSite:1,isSavingUserInfo:!1,userHasAccess:!0,firstSiteAccess:{id:this.initialSiteId,name:this.initialSiteName},isUserModified:!1,passwordConfirmation:"",isPasswordModified:!1,superUserAccessChecked:null,passwordConfirmationForSuperUser:"",isResetting2FA:!1,isShowingPasswordConfirm:!1}},emits:["done","updated"],watch:{user:function(e){this.onUserChange(e)}},created:function(){this.onUserChange(this.user)},methods:{onUserChange:function(e){this.theUser=e||Object.assign({},Ct),this.theUser.password||this.resetPasswordVar(),this.setSuperUserAccessChecked()},confirmSuperUserChange:function(){St(this.$refs.superUserConfirmModal).modal({dismissible:!1}).modal("open")},confirmReset2FA:function(){St(this.$refs.twofaConfirmModal).modal({dismissible:!1}).modal("open")},toggleSuperuserAccess:function(){var e=this;this.isSavingUserInfo=!0,i["AjaxHelper"].post({method:"UsersManager.setSuperUserAccess"},{userLogin:this.theUser.login,hasSuperUserAccess:this.theUser.superuser_access?"0":"1",passwordConfirmation:this.passwordConfirmationForSuperUser}).then((function(){e.theUser.superuser_access=!e.theUser.superuser_access})).catch((function(){})).then((function(){e.isSavingUserInfo=!1,e.isUserModified=!0,e.passwordConfirmationForSuperUser="",e.setSuperUserAccessChecked()}))},saveUserInfo:function(){var e=this;return Promise.resolve().then((function(){return e.isAdd?e.createUser():e.confirmUserChange()})).then((function(){e.$emit("updated",{user:Object(a["readonly"])(e.theUser)})}))},createUser:function(){var e=this;return this.isSavingUserInfo=!0,i["AjaxHelper"].post({method:"UsersManager.inviteUser"},{userLogin:this.theUser.login,email:this.theUser.email,initialIdSite:this.firstSiteAccess?this.firstSiteAccess.id:void 0}).catch((function(t){throw e.isSavingUserInfo=!1,t})).then((function(){e.firstSiteAccess=null,e.isSavingUserInfo=!1,e.isUserModified=!0,e.theUser.invite_status="pending",e.resetPasswordVar(),e.showUserCreatedNotification()}))},resetPasswordVar:function(){this.isAdd||(this.theUser.password="XXXXXXXX")},confirmUserChange:function(){var e=this;this.passwordConfirmation="",this.isShowingPasswordConfirm=!0;var t=function(t){var n=t.keyCode?t.keyCode:t.which;13===n&&(St(e.$refs.changePasswordModal).modal("close"),e.updateUser())};St(this.$refs.changePasswordModal).modal({dismissible:!1,onOpenEnd:function(){e.isShowingPasswordConfirm=!1,St(".modal.open #currentUserPasswordChangePwd").focus().off("keypress").keypress(t)}}).modal("open")},showUserSavedNotification:function(){i["NotificationsStore"].show({message:Object(i["translate"])("General_YourChangesHaveBeenSaved"),context:"success",type:"toast"})},showUserCreatedNotification:function(){i["NotificationsStore"].show({message:Object(i["translate"])("UsersManager_InviteSuccess"),context:"success",type:"toast"})},reset2FA:function(){var e=this;return this.isResetting2FA=!0,i["AjaxHelper"].post({method:"TwoFactorAuth.resetTwoFactorAuth",userLogin:this.theUser.login,passwordConfirmation:this.passwordConfirmation}).catch((function(t){throw e.isResetting2FA=!1,t})).then((function(){e.isResetting2FA=!1,e.theUser.uses_2fa=!1,e.activeTab="basic",e.showUserSavedNotification()})).finally((function(){e.passwordConfirmation=""}))},updateUser:function(){var e=this;return this.isSavingUserInfo=!0,i["AjaxHelper"].post({method:"UsersManager.updateUser"},{userLogin:this.theUser.login,password:this.isPasswordModified&&this.theUser.password?this.theUser.password:void 0,passwordConfirmation:this.passwordConfirmation?this.passwordConfirmation:void 0,email:this.theUser.email}).then((function(){e.isSavingUserInfo=!1,e.passwordConfirmation="",e.isUserModified=!0,e.isPasswordModified=!1,e.resetPasswordVar(),e.showUserSavedNotification()})).catch((function(){e.isSavingUserInfo=!1,e.passwordConfirmation=""}))},setSuperUserAccessChecked:function(){this.superUserAccessChecked=!!this.theUser.superuser_access},onDoneEditing:function(){this.$emit("done",{isUserModified:this.isUserModified})}},computed:{formTitle:function(){return this.isAdd?Object(i["translate"])("UsersManager_InviteNewUser"):Object(i["translate"])("UsersManager_EditUser")},saveButtonLabel:function(){return this.isAdd?Object(i["translate"])("UsersManager_InviteUser"):Object(i["translate"])("UsersManager_SaveBasicInfo")},isPending:function(){return!this.user||!("pending"!==this.user.invite_status&&!Number.isInteger(this.user.invite_status))},isAdd:function(){return!this.user},changePasswordTitle:function(){return Object(i["translate"])("UsersManager_AreYouSureChangeDetails","".concat(this.theUser.login,""))}}});Ut.render=vt;var yt=Ut,Et=(Object(i["createAngularJsAdapter"])({component:yt,scope:{user:{angularJsBind:"<"},onDoneEditing:{angularJsBind:"&",vue:"done"},currentUserRole:{angularJsBind:"<"},accessLevels:{angularJsBind:"<"},filterAccessLevels:{angularJsBind:"<"},initialSiteId:{angularJsBind:"<"},initialSiteName:{angularJsBind:"<"},onUpdated:{angularJsBind:"&",vue:"updated"}},directiveName:"piwikUserEditForm",restrict:"E"}),{class:"userListFilters row"}),Vt={class:"col s12 m12 l8"},kt={class:"input-field col s12 m3 l3"},At={id:"user-list-bulk-actions",class:"dropdown-content"},wt={class:"dropdown-trigger","data-target":"bulk-set-access"},Tt={id:"bulk-set-access",class:"dropdown-content"},Mt=["onClick"],Bt={key:0},_t={class:"input-field col s12 m3 l3"},Dt={class:"permissions-for-selector"},Lt={class:"input-field col s12 m3 l3"},Rt={class:"input-field col s12 m3 l3"},xt={key:0,class:"input-field col s12 m12 l4 users-list-pagination-container"},Pt={class:"usersListPagination"},Ft={class:"pointer"},Ht={class:"counter"},It={class:"pointer"},Jt={key:0,class:"roles-help-notification"},qt=["innerHTML"],$t={class:"select-cell"},Gt={class:"checkbox-container"},zt=Object(a["createElementVNode"])("span",null,null,-1),Wt={class:"first"},Yt={class:"role_header"},Xt={style:{"margin-right":"3.5px"}},Kt=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),Qt=[Kt],Zt={key:0},en=["title"],tn={key:2},nn={class:"actions-cell-header"},sn={key:0,class:"select-all-row"},rn={colspan:"8"},an={key:0},on=["innerHTML"],ln=["innerHTML"],cn={key:1},dn=["innerHTML"],un=["innerHTML"],mn=["id"],bn={class:"select-cell"},pn={class:"checkbox-container"},gn=["id","onUpdate:modelValue"],fn=Object(a["createElementVNode"])("span",null,null,-1),hn={id:"userLogin"},jn={class:"access-cell"},On={key:0,id:"email"},vn={key:1,id:"twofa"},Cn={key:0,class:"icon-ok"},Nn={key:1,class:"icon-close"},Sn={key:2,id:"last_seen"},Un={id:"status"},yn=["title"],En={class:"center actions-cell"},Vn=["onClick"],kn=Object(a["createElementVNode"])("span",{class:"icon-email"},null,-1),An=[kn],wn=["onClick"],Tn=Object(a["createElementVNode"])("span",{class:"icon-edit"},null,-1),Mn=[Tn],Bn=["onClick"],_n=Object(a["createElementVNode"])("span",{class:"icon-delete"},null,-1),Dn=[_n],Ln={class:"delete-user-confirm-modal modal",ref:"deleteUserConfirmModal"},Rn={class:"modal-content"},xn=["innerHTML"],Pn=["innerHTML"],Fn={class:"modal-footer"},Hn={class:"change-user-role-confirm-modal modal",ref:"changeUserRoleConfirmModal"},In={class:"modal-content"},Jn=["innerHTML"],qn={key:1},$n=["innerHTML"],Gn=["innerHTML"],zn={class:"modal-footer"},Wn={class:"resend-invite-confirm-modal modal",ref:"resendInviteConfirmModal"},Yn={class:"modal-content"},Xn=["innerHTML"],Kn={class:"modal-footer"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */Object(i["createAngularJsAdapter"])({component:yt,scope:{user:{angularJsBind:"<"},onDoneEditing:{angularJsBind:"&",vue:"done"},currentUserRole:{angularJsBind:"<"},accessLevels:{angularJsBind:"<"},filterAccessLevels:{angularJsBind:"<"},initialSiteId:{angularJsBind:"<"},initialSiteName:{angularJsBind:"<"},onUpdated:{angularJsBind:"&",vue:"updated"}},directiveName:"piwikUserEditForm",restrict:"E"});Object(a["pushScopeId"])("data-v-2ff6c088");var Et={class:"userListFilters row"},Vt={class:"col s12 m12 l6"},kt={class:"input-field col s12 m4 l4"},At={id:"user-list-bulk-actions",class:"dropdown-content"},wt={class:"dropdown-trigger","data-target":"bulk-set-access"},Tt={id:"bulk-set-access",class:"dropdown-content"},Mt=["onClick"],Bt={key:0},_t={class:"input-field col s12 m4 l4"},Dt={class:"permissions-for-selector"},Lt={class:"input-field col s12 m4 l4"},Rt={key:0,class:"input-field col s12 m12 l6 users-list-pagination-container"},xt={class:"usersListPagination"},Pt={class:"pointer"},Ht={class:"counter"},Ft={class:"pointer"},It={key:0,class:"roles-help-notification"},Jt=["innerHTML"],qt={class:"select-cell"},$t={class:"checkbox-container"},Gt=Object(a["createElementVNode"])("span",null,null,-1),zt={class:"first"},Wt={class:"role_header"},Yt={style:{"margin-right":"3.5px"}},Xt=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),Kt=[Xt],Qt={key:0},Zt=["title"],en={key:2},tn={class:"actions-cell-header"},nn={key:0,class:"select-all-row"},sn={colspan:"8"},rn={key:0},an=["innerHTML"],on=["innerHTML"],ln={key:1},cn=["innerHTML"],dn=["innerHTML"],un=["id"],mn={class:"select-cell"},bn={class:"checkbox-container"},pn=["id","onUpdate:modelValue"],gn=Object(a["createElementVNode"])("span",null,null,-1),hn={id:"userLogin"},fn={class:"access-cell"},jn={key:0,id:"email"},On={key:1,id:"twofa"},vn={key:0,class:"icon-ok"},Cn={key:1,class:"icon-close"},Nn={key:2,id:"last_seen"},Sn={id:"status"},Un={class:"center actions-cell"},yn=["onClick"],En=Object(a["createElementVNode"])("span",{class:"icon-email"},null,-1),Vn=[En],kn=["onClick"],An=Object(a["createElementVNode"])("span",{class:"icon-edit"},null,-1),wn=[An],Tn=["onClick"],Mn=Object(a["createElementVNode"])("span",{class:"icon-delete"},null,-1),Bn=[Mn],_n={class:"delete-user-confirm-modal modal",ref:"deleteUserConfirmModal"},Dn={class:"modal-content"},Ln=["innerHTML"],Rn=["innerHTML"],xn={class:"modal-footer"},Pn={class:"change-user-role-confirm-modal modal",ref:"changeUserRoleConfirmModal"},Hn={class:"modal-content"},Fn=["innerHTML"],In={key:1},Jn=["innerHTML"],qn=["innerHTML"],$n={class:"modal-footer"},Gn={class:"resend-invite-confirm-modal modal",ref:"resendInviteConfirmModal"},zn={class:"modal-content"},Wn=["innerHTML"],Yn={class:"modal-footer"};function Xn(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("ActivityIndicator"),c=Object(a["resolveComponent"])("Notification"),d=Object(a["resolveComponent"])("ContentBlock"),u=Object(a["resolveDirective"])("dropdown-menu"),m=Object(a["resolveDirective"])("content-table");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["pagedUsersList",{loading:e.isLoadingUsers}])},[Object(a["createElementVNode"])("div",Et,[Object(a["createElementVNode"])("div",Vt,[Object(a["createElementVNode"])("div",kt,[Object(a["withDirectives"])(Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["dropdown-trigger btn bulk-actions",{disabled:e.isBulkActionsDisabled}]),href:"","data-target":"user-list-bulk-actions"},[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_BulkActions")),1)],2),[[u]]),Object(a["createElementVNode"])("ul",At,[Object(a["createElementVNode"])("li",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("a",wt,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_SetPermission")),1)],512),[[u]]),Object(a["createElementVNode"])("ul",Tt,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.bulkActionAccessLevels,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:t.key},[Object(a["createElementVNode"])("a",{href:"",onClick:Object(a["withModifiers"])((function(n){e.userToChange=null,e.roleToChangeTo=t.key,e.showAccessChangeConfirm()}),["prevent"])},Object(a["toDisplayString"])(t.value),9,Mt)])})),128))])]),Object(a["createElementVNode"])("li",null,[Object(a["createElementVNode"])("a",{href:"",onClick:t[0]||(t[0]=Object(a["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo="noaccess",e.showAccessChangeConfirm()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_RemovePermissions")),1)]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",Bt,[Object(a["createElementVNode"])("a",{href:"",onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.showDeleteConfirm()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_DeleteUsers")),1)])):Object(a["createCommentVNode"])("",!0)])]),Object(a["createElementVNode"])("div",_t,[Object(a["createElementVNode"])("div",Dt,[Object(a["createVNode"])(o,{"model-value":e.userTextFilter,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.onUserTextFilterChange(t)}),name:"user-text-filter",uicontrol:"text","full-width":!0,placeholder:e.translate("UsersManager_UserSearch")},null,8,["model-value","placeholder"])])]),Object(a["createElementVNode"])("div",Lt,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{"model-value":e.accessLevelFilter,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.accessLevelFilter=t,e.changeSearch({filter_access:e.accessLevelFilter,offset:0})}),name:"access-level-filter",uicontrol:"select",options:e.filterAccessLevels,"full-width":!0,placeholder:e.translate("UsersManager_FilterByAccess")},null,8,["model-value","options","placeholder"])])])]),e.totalEntries>e.searchParams.limit?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Rt,[Object(a["createElementVNode"])("div",xt,[Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["btn prev",{disabled:e.searchParams.offset<=0}]),onClick:t[4]||(t[4]=Object(a["withModifiers"])((function(t){return e.gotoPreviousPage()}),["prevent"]))},[Object(a["createElementVNode"])("span",Pt,"« "+Object(a["toDisplayString"])(e.translate("General_Previous")),1)],2),Object(a["createElementVNode"])("div",Ht,[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])({visibility:e.isLoadingUsers?"hidden":"visible"})},Object(a["toDisplayString"])(e.translate("General_Pagination",e.paginationLowerBound,e.paginationUpperBound,e.totalEntries)),3),Object(a["createVNode"])(l,{loading:e.isLoadingUsers},null,8,["loading"])]),Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["btn next",{disabled:e.searchParams.offset+e.searchParams.limit>=e.totalEntries}]),onClick:t[5]||(t[5]=Object(a["withModifiers"])((function(t){return e.gotoNextPage()}),["prevent"]))},[Object(a["createElementVNode"])("span",Ft,Object(a["toDisplayString"])(e.translate("General_Next"))+" »",1)],2)])])):Object(a["createCommentVNode"])("",!0)]),e.isRoleHelpToggled?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",It,[Object(a["createVNode"])(c,{context:"info",type:"persistent",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.rolesHelpText)},null,8,Jt)]})),_:1})])):Object(a["createCommentVNode"])("",!0),Object(a["createVNode"])(d,null,{default:Object(a["withCtx"])((function(){return[Object(a["withDirectives"])(Object(a["createElementVNode"])("table",{id:"manageUsersTable",class:Object(a["normalizeClass"])({loading:e.isLoadingUsers})},[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("th",qt,[Object(a["createElementVNode"])("span",$t,[Object(a["createElementVNode"])("label",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",id:"paged_users_select_all",checked:"checked","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.isAllCheckboxSelected=t}),onChange:t[7]||(t[7]=function(t){return e.onAllCheckboxChange()})},null,544),[[a["vModelCheckbox"],e.isAllCheckboxSelected]]),Gt])])]),Object(a["createElementVNode"])("th",zt,Object(a["toDisplayString"])(e.translate("UsersManager_Username")),1),Object(a["createElementVNode"])("th",Wt,[Object(a["createElementVNode"])("span",Yt,Object(a["toDisplayString"])(e.translate("UsersManager_RoleFor")),1),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["helpIcon",{sticky:e.isRoleHelpToggled}]),onClick:t[8]||(t[8]=Object(a["withModifiers"])((function(t){return e.isRoleHelpToggled=!e.isRoleHelpToggled}),["prevent"]))},Kt,2),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{class:"permissions-for-selector","model-value":e.permissionsForSite,"onUpdate:modelValue":t[9]||(t[9]=function(t){e.onPermissionsForUpdate(t)}),uicontrol:"site","ui-control-attributes":{onlySitesWithAdminAccess:"superuser"!==e.currentUserRole}},null,8,["model-value","ui-control-attributes"])])]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("th",Qt,Object(a["toDisplayString"])(e.translate("UsersManager_Email")),1)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("th",{key:1,title:e.translate("UsersManager_UsesTwoFactorAuthentication")},Object(a["toDisplayString"])(e.translate("UsersManager_2FA")),9,Zt)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("th",en,Object(a["toDisplayString"])(e.translate("UsersManager_LastSeen")),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("UsersManager_Status")),1),Object(a["createElementVNode"])("th",tn,[Object(a["createElementVNode"])("div",null,Object(a["toDisplayString"])(e.translate("General_Actions")),1)])])]),Object(a["createElementVNode"])("tbody",null,[e.isAllCheckboxSelected&&e.users.length&&e.users.length".concat(e.users.length,""))),style:{"margin-right":"3.5px"}},null,8,an),Object(a["createElementVNode"])("a",{class:"toggle-select-all-in-search",href:"#",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.$sanitize(e.translate("UsersManager_ClickToSelectAll","".concat(e.totalEntries,"")))},null,8,on)])),e.areAllResultsSelected?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ln,[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.translate("UsersManager_AllUsersAreSelected","".concat(e.totalEntries,""))),style:{"margin-right":"3.5px"}},null,8,cn),Object(a["createElementVNode"])("a",{class:"toggle-select-all-in-search",href:"#",onClick:t[11]||(t[11]=Object(a["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.$sanitize(e.translate("UsersManager_ClickToSelectDisplayedUsers","".concat(e.users.length,"")))},null,8,dn)])):Object(a["createCommentVNode"])("",!0)])])):Object(a["createCommentVNode"])("",!0),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.users,(function(n,s){return Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{id:"row".concat(s),key:n.login},[Object(a["createElementVNode"])("td",mn,[Object(a["createElementVNode"])("span",bn,[Object(a["createElementVNode"])("label",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",id:"paged_users_select_row".concat(s),"onUpdate:modelValue":function(t){return e.selectedRows[s]=t},onClick:t[12]||(t[12]=function(t){return e.onRowSelected()})},null,8,pn),[[a["vModelCheckbox"],e.selectedRows[s]]]),gn])])]),Object(a["createElementVNode"])("td",hn,Object(a["toDisplayString"])(n.login),1),Object(a["createElementVNode"])("td",fn,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{"model-value":n.role,"onUpdate:modelValue":function(t){e.userToChange=n,e.roleToChangeTo=t,e.showAccessChangeConfirm()},disabled:"superuser"===n.role,uicontrol:"select",options:"anonymous"!==n.login?e.accessLevels:e.anonymousAccessLevels},null,8,["model-value","onUpdate:modelValue","disabled","options"])])]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("td",jn,Object(a["toDisplayString"])(n.email),1)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("td",On,[n.uses_2fa?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",vn)):Object(a["createCommentVNode"])("",!0),n.uses_2fa?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",Cn))])):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("td",Nn,Object(a["toDisplayString"])(n.last_seen?"".concat(n.last_seen," ago"):"-"),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("td",Sn,[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])(n.invite_status)},Object(a["toDisplayString"])(e.getInviteStatus(n.invite_status)),3)]),Object(a["createElementVNode"])("td",Un,["accept"!==n.invite_status?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,class:"resend table-action",title:"Resend Invite",onClick:function(t){e.userToChange=n,e.showResendConfirm()}},Vn,8,yn)):Object(a["createCommentVNode"])("",!0),"anonymous"!==n.login?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:1,class:"edituser table-action",title:"Edit",onClick:function(t){return e.$emit("editUser",{user:n})}},wn,8,kn)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole&&"anonymous"!==n.login?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:2,class:"deleteuser table-action",title:"Delete",onClick:function(t){e.userToChange=n,e.showDeleteConfirm()}},Bn,8,Tn)):Object(a["createCommentVNode"])("",!0)])],8,un)})),128))])],2),[[m]])]})),_:1}),Object(a["createElementVNode"])("div",_n,[Object(a["createElementVNode"])("div",Dn,[e.userToChange?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.translate("UsersManager_DeleteUserConfirmSingle","".concat(e.userToChange.login,"")))},null,8,Ln)):Object(a["createCommentVNode"])("",!0),e.userToChange?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{key:1,innerHTML:e.$sanitize(e.translate("UsersManager_DeleteUserConfirmMultiple","".concat(e.affectedUsersCount,"")))},null,8,Rn))]),Object(a["createElementVNode"])("div",xn,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[13]||(t[13]=Object(a["withModifiers"])((function(t){return e.deleteRequestedUsers()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[14]||(t[14]=Object(a["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512),Object(a["createElementVNode"])("div",Pn,[Object(a["createElementVNode"])("div",Hn,[e.userToChange?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.deleteUserPermConfirmSingleText)},null,8,Fn)):Object(a["createCommentVNode"])("",!0),e.userToChange&&"anonymous"===e.userToChange.login&&"view"===e.roleToChangeTo?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",In,[Object(a["createElementVNode"])("em",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_Note"))+": ",1),Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.translate("UsersManager_AnonymousUserRoleChangeWarning","anonymous",e.getRoleDisplay(e.roleToChangeTo)))},null,8,Jn)])])):Object(a["createCommentVNode"])("",!0),e.userToChange?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{key:2,innerHTML:e.$sanitize(e.deleteUserPermConfirmMultipleText)},null,8,qn))]),Object(a["createElementVNode"])("div",$n,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[15]||(t[15]=Object(a["withModifiers"])((function(t){return e.changeUserRole()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[16]||(t[16]=Object(a["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512),Object(a["createElementVNode"])("div",Gn,[Object(a["createElementVNode"])("div",zn,[e.userToChange?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.translate("UsersManager_ResendInviteConfirmSingle","".concat(e.userToChange.login,"")))},null,8,Wn)):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",Yn,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[17]||(t[17]=Object(a["withModifiers"])((function(t){return e.resendRequestedUser()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[18]||(t[18]=Object(a["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)],2)}Object(a["popScopeId"])();var Kn=window,Qn=Kn.$,Zn=Object(a["defineComponent"])({props:{initialSiteId:{type:[String,Number],required:!0},initialSiteName:{type:String,required:!0},currentUserRole:String,isLoadingUsers:Boolean,accessLevels:{type:Array,required:!0},filterAccessLevels:{type:Array,required:!0},totalEntries:Number,users:{type:Array,required:!0},searchParams:{type:Object,required:!0}},components:{Field:h["Field"],ActivityIndicator:i["ActivityIndicator"],Notification:i["Notification"],ContentBlock:i["ContentBlock"]},directives:{DropdownMenu:i["DropdownMenu"],ContentTable:i["ContentTable"]},data:function(){return{areAllResultsSelected:!1,selectedRows:{},isAllCheckboxSelected:!1,isBulkActionsDisabled:!0,userToChange:null,roleToChangeTo:null,accessLevelFilter:null,isRoleHelpToggled:!1,userTextFilter:"",permissionsForSite:{id:this.initialSiteId,name:this.initialSiteName}}},emits:["editUser","changeUserRole","deleteUser","searchChange","resendInvite"],created:function(){this.onUserTextFilterChange=Object(i["debounce"])(this.onUserTextFilterChange,300)},watch:{users:function(){this.clearSelection()}},methods:{getInviteStatus:function(e){return"accept"===e?Object(i["translate"])("UsersManager_Active"):"pending"===e?Object(i["translate"])("UsersManager_Pending"):"expired"===e?Object(i["translate"])("UsersManager_Expired"):Object(i["translate"])("UsersManager_Decline")},onPermissionsForUpdate:function(e){this.permissionsForSite=e,this.changeSearch({idSite:this.permissionsForSite.id})},clearSelection:function(){this.selectedRows={},this.areAllResultsSelected=!1,this.isBulkActionsDisabled=!0,this.isAllCheckboxSelected=!1,this.userToChange=null},onAllCheckboxChange:function(){if(this.isAllCheckboxSelected){for(var e=0;e!==this.users.length;e+=1)this.selectedRows[e]=!0;this.isBulkActionsDisabled=!1}else this.clearSelection()},changeUserRole:function(){this.$emit("changeUserRole",{users:this.userOperationSubject,role:this.roleToChangeTo})},onRowSelected:function(){var e=this;setTimeout((function(){var t=e.selectedCount;e.isBulkActionsDisabled=0===t,e.isAllCheckboxSelected=t===e.users.length}))},deleteRequestedUsers:function(){this.$emit("deleteUser",{users:this.userOperationSubject})},resendRequestedUser:function(){this.$emit("resendInvite",{user:this.userToChange})},showDeleteConfirm:function(){Qn(this.$refs.deleteUserConfirmModal).modal({dismissible:!1}).modal("open")},showResendConfirm:function(){Qn(this.$refs.resendInviteConfirmModal).modal({dismissible:!1}).modal("open")},showAccessChangeConfirm:function(){Qn(this.$refs.changeUserRoleConfirmModal).modal({dismissible:!1}).modal("open")},getRoleDisplay:function(e){var t=null;return this.accessLevels.forEach((function(n){n.key===e&&(t=n.value)})),t},changeSearch:function(e){var t=Object.assign(Object.assign({},this.searchParams),e);this.$emit("searchChange",{params:t})},gotoPreviousPage:function(){this.changeSearch({offset:Math.max(0,this.searchParams.offset-this.searchParams.limit)})},gotoNextPage:function(){var e=this.searchParams.offset+this.searchParams.limit;e>=this.totalEntries||this.changeSearch({offset:e})},onUserTextFilterChange:function(e){this.userTextFilter=e,this.changeSearch({filter_search:e,offset:0})}},computed:{paginationLowerBound:function(){return this.searchParams.offset+1},paginationUpperBound:function(){if(null===this.totalEntries)return"?";var e=this.searchParams;return Math.min(e.offset+e.limit,this.totalEntries)},userOperationSubject:function(){return this.userToChange?[this.userToChange]:this.areAllResultsSelected?"all":this.selectedUsers},selectedUsers:function(){var e=this,t=this.users,n=[];return Object.keys(this.selectedRows).forEach((function(s){var r=parseInt(s,10);e.selectedRows[s]&&t[r]&&n.push(t[r])})),n},rolesHelpText:function(){var e="https://matomo.org/faq/general/faq_70/",t="https://matomo.org/faq/general/faq_69/";return Object(i["translate"])("UsersManager_RolesHelp",''),"",''),"")},affectedUsersCount:function(){return this.areAllResultsSelected?this.totalEntries||0:this.selectedCount},selectedCount:function(){var e=this,t=0;return Object.keys(this.selectedRows).forEach((function(n){e.selectedRows[n]&&(t+=1)})),t},deleteUserPermConfirmSingleText:function(){var e,t;return Object(i["translate"])("UsersManager_DeleteUserPermConfirmSingle","".concat((null===(e=this.userToChange)||void 0===e?void 0:e.login)||"",""),"".concat(this.getRoleDisplay(this.roleToChangeTo),""),"".concat(i["Matomo"].helper.htmlEntities((null===(t=this.permissionsForSite)||void 0===t?void 0:t.name)||""),""))},deleteUserPermConfirmMultipleText:function(){var e;return Object(i["translate"])("UsersManager_DeleteUserPermConfirmMultiple","".concat(this.affectedUsersCount,""),"".concat(this.getRoleDisplay(this.roleToChangeTo),""),"".concat(i["Matomo"].helper.htmlEntities((null===(e=this.permissionsForSite)||void 0===e?void 0:e.name)||""),""))},bulkActionAccessLevels:function(){return this.accessLevels.filter((function(e){return"noaccess"!==e.key&&"superuser"!==e.key}))},anonymousAccessLevels:function(){return this.accessLevels.filter((function(e){return"noaccess"===e.key||"view"===e.key}))}}});n("f2d6");Zn.render=Xn,Zn.__scopeId="data-v-2ff6c088";var es=Zn,ts=(Object(i["createAngularJsAdapter"])({component:es,scope:{onEditUser:{angularJsBind:"&",vue:"editUser"},onChangeUserRole:{angularJsBind:"&",vue:"changeUserRole"},onDeleteUser:{angularJsBind:"&",vue:"deleteUser"},onSearchChange:{angularJsBind:"&",vue:"searchChange"},onResendInvite:{angularJsBind:"&",vue:"resendInvite"},initialSiteId:{angularJsBind:"<"},initialSiteName:{angularJsBind:"<"},currentUserRole:{angularJsBind:"<"},isLoadingUsers:{angularJsBind:"<"},accessLevels:{angularJsBind:"<"},filterAccessLevels:{angularJsBind:"<"},totalEntries:{angularJsBind:"<"},users:{angularJsBind:"<"},searchParams:{angularJsBind:"<"}},directiveName:"piwikPagedUsersList",restrict:"E"}),{class:"usersManager"}),ns={key:0},ss={key:1},rs={class:"row add-user-container"},is={class:"col s12"},as={class:"input-field",style:{"margin-right":"3.5px"}},os={key:0,class:"input-field"},ls={key:0},cs={class:"add-existing-user-modal modal",ref:"addExistingUserModal"},ds={class:"modal-content"},us={class:"modal-footer"};
+ */function Qn(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("ActivityIndicator"),c=Object(a["resolveComponent"])("Notification"),d=Object(a["resolveComponent"])("ContentBlock"),u=Object(a["resolveDirective"])("dropdown-menu"),m=Object(a["resolveDirective"])("content-table");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["pagedUsersList",{loading:e.isLoadingUsers}])},[Object(a["createElementVNode"])("div",Et,[Object(a["createElementVNode"])("div",Vt,[Object(a["createElementVNode"])("div",kt,[Object(a["withDirectives"])(Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["dropdown-trigger btn bulk-actions",{disabled:e.isBulkActionsDisabled}]),href:"","data-target":"user-list-bulk-actions"},[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_BulkActions")),1)],2),[[u]]),Object(a["createElementVNode"])("ul",At,[Object(a["createElementVNode"])("li",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("a",wt,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_SetPermission")),1)],512),[[u]]),Object(a["createElementVNode"])("ul",Tt,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.bulkActionAccessLevels,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:t.key},[Object(a["createElementVNode"])("a",{href:"",onClick:Object(a["withModifiers"])((function(n){e.userToChange=null,e.roleToChangeTo=t.key,e.showAccessChangeConfirm()}),["prevent"])},Object(a["toDisplayString"])(t.value),9,Mt)])})),128))])]),Object(a["createElementVNode"])("li",null,[Object(a["createElementVNode"])("a",{href:"",onClick:t[0]||(t[0]=Object(a["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo="noaccess",e.showAccessChangeConfirm()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_RemovePermissions")),1)]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",Bt,[Object(a["createElementVNode"])("a",{href:"",onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.showDeleteConfirm()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_DeleteUsers")),1)])):Object(a["createCommentVNode"])("",!0)])]),Object(a["createElementVNode"])("div",_t,[Object(a["createElementVNode"])("div",Dt,[Object(a["createVNode"])(o,{"model-value":e.userTextFilter,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.onUserTextFilterChange(t)}),name:"user-text-filter",uicontrol:"text","full-width":!0,placeholder:e.translate("UsersManager_UserSearch")},null,8,["model-value","placeholder"])])]),Object(a["createElementVNode"])("div",Lt,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{"model-value":e.accessLevelFilter,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.accessLevelFilter=t,e.changeSearch({filter_access:e.accessLevelFilter,offset:0})}),name:"access-level-filter",uicontrol:"select",options:e.filterAccessLevels,"full-width":!0,placeholder:e.translate("UsersManager_FilterByAccess")},null,8,["model-value","options","placeholder"])])]),Object(a["createElementVNode"])("div",Rt,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{"model-value":e.statusLevelFilter,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.statusLevelFilter=t,e.changeSearch({filter_status:e.statusLevelFilter,offset:0})}),name:"status-level-filter",uicontrol:"select",options:e.filterStatusLevels,"full-width":!0,placeholder:e.translate("UsersManager_FilterByStatus")},null,8,["model-value","options","placeholder"])])])]),e.totalEntries>e.searchParams.limit?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",xt,[Object(a["createElementVNode"])("div",Pt,[Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["btn prev",{disabled:e.searchParams.offset<=0}]),onClick:t[5]||(t[5]=Object(a["withModifiers"])((function(t){return e.gotoPreviousPage()}),["prevent"]))},[Object(a["createElementVNode"])("span",Ft,"« "+Object(a["toDisplayString"])(e.translate("General_Previous")),1)],2),Object(a["createElementVNode"])("div",Ht,[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])({visibility:e.isLoadingUsers?"hidden":"visible"})},Object(a["toDisplayString"])(e.translate("General_Pagination",e.paginationLowerBound,e.paginationUpperBound,e.totalEntries)),3),Object(a["createVNode"])(l,{loading:e.isLoadingUsers},null,8,["loading"])]),Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["btn next",{disabled:e.searchParams.offset+e.searchParams.limit>=e.totalEntries}]),onClick:t[6]||(t[6]=Object(a["withModifiers"])((function(t){return e.gotoNextPage()}),["prevent"]))},[Object(a["createElementVNode"])("span",It,Object(a["toDisplayString"])(e.translate("General_Next"))+" »",1)],2)])])):Object(a["createCommentVNode"])("",!0)]),e.isRoleHelpToggled?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Jt,[Object(a["createVNode"])(c,{context:"info",type:"persistent",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.rolesHelpText)},null,8,qt)]})),_:1})])):Object(a["createCommentVNode"])("",!0),Object(a["createVNode"])(d,null,{default:Object(a["withCtx"])((function(){return[Object(a["withDirectives"])(Object(a["createElementVNode"])("table",{id:"manageUsersTable",class:Object(a["normalizeClass"])({loading:e.isLoadingUsers})},[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("th",$t,[Object(a["createElementVNode"])("span",Gt,[Object(a["createElementVNode"])("label",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",id:"paged_users_select_all",checked:"checked","onUpdate:modelValue":t[7]||(t[7]=function(t){return e.isAllCheckboxSelected=t}),onChange:t[8]||(t[8]=function(t){return e.onAllCheckboxChange()})},null,544),[[a["vModelCheckbox"],e.isAllCheckboxSelected]]),zt])])]),Object(a["createElementVNode"])("th",Wt,Object(a["toDisplayString"])(e.translate("UsersManager_Username")),1),Object(a["createElementVNode"])("th",Yt,[Object(a["createElementVNode"])("span",Xt,Object(a["toDisplayString"])(e.translate("UsersManager_RoleFor")),1),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["helpIcon",{sticky:e.isRoleHelpToggled}]),onClick:t[9]||(t[9]=Object(a["withModifiers"])((function(t){return e.isRoleHelpToggled=!e.isRoleHelpToggled}),["prevent"]))},Qt,2),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{class:"permissions-for-selector","model-value":e.permissionsForSite,"onUpdate:modelValue":t[10]||(t[10]=function(t){e.onPermissionsForUpdate(t)}),uicontrol:"site","ui-control-attributes":{onlySitesWithAdminAccess:"superuser"!==e.currentUserRole}},null,8,["model-value","ui-control-attributes"])])]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("th",Zt,Object(a["toDisplayString"])(e.translate("UsersManager_Email")),1)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("th",{key:1,title:e.translate("UsersManager_UsesTwoFactorAuthentication")},Object(a["toDisplayString"])(e.translate("UsersManager_2FA")),9,en)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("th",tn,Object(a["toDisplayString"])(e.translate("UsersManager_LastSeen")),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("UsersManager_Status")),1),Object(a["createElementVNode"])("th",nn,[Object(a["createElementVNode"])("div",null,Object(a["toDisplayString"])(e.translate("General_Actions")),1)])])]),Object(a["createElementVNode"])("tbody",null,[e.isAllCheckboxSelected&&e.users.length&&e.users.length".concat(e.users.length,""))),style:{"margin-right":"3.5px"}},null,8,on),Object(a["createElementVNode"])("a",{class:"toggle-select-all-in-search",href:"#",onClick:t[11]||(t[11]=Object(a["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.$sanitize(e.translate("UsersManager_ClickToSelectAll","".concat(e.totalEntries,"")))},null,8,ln)])),e.areAllResultsSelected?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",cn,[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.translate("UsersManager_AllUsersAreSelected","".concat(e.totalEntries,""))),style:{"margin-right":"3.5px"}},null,8,dn),Object(a["createElementVNode"])("a",{class:"toggle-select-all-in-search",href:"#",onClick:t[12]||(t[12]=Object(a["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.$sanitize(e.translate("UsersManager_ClickToSelectDisplayedUsers","".concat(e.users.length,"")))},null,8,un)])):Object(a["createCommentVNode"])("",!0)])])):Object(a["createCommentVNode"])("",!0),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.users,(function(n,s){return Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{id:"row".concat(s),key:n.login},[Object(a["createElementVNode"])("td",bn,[Object(a["createElementVNode"])("span",pn,[Object(a["createElementVNode"])("label",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",id:"paged_users_select_row".concat(s),"onUpdate:modelValue":function(t){return e.selectedRows[s]=t},onClick:t[13]||(t[13]=function(t){return e.onRowSelected()})},null,8,gn),[[a["vModelCheckbox"],e.selectedRows[s]]]),fn])])]),Object(a["createElementVNode"])("td",hn,Object(a["toDisplayString"])(n.login),1),Object(a["createElementVNode"])("td",jn,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{"model-value":n.role,"onUpdate:modelValue":function(t){e.userToChange=n,e.roleToChangeTo=t,e.showAccessChangeConfirm()},disabled:"superuser"===n.role,uicontrol:"select",options:"anonymous"!==n.login?e.accessLevels:e.anonymousAccessLevels},null,8,["model-value","onUpdate:modelValue","disabled","options"])])]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("td",On,Object(a["toDisplayString"])(n.email),1)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("td",vn,[n.uses_2fa?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",Cn)):Object(a["createCommentVNode"])("",!0),n.uses_2fa?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",Nn))])):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("td",Sn,Object(a["toDisplayString"])(n.last_seen?"".concat(n.last_seen," ago"):"-"),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("td",Un,[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])(Number.isInteger(n.invite_status)?"pending":n.invite_status),title:"expired"===n.invite_status?e.translate("UsersManager_ExpiredInviteAutomaticallyRemoved","3"):""},Object(a["toDisplayString"])(e.getInviteStatus(n.invite_status)),11,yn)]),Object(a["createElementVNode"])("td",En,[("superuser"===e.currentUserRole||"admin"===e.currentUserRole&&n.invited_by===e.currentUserLogin)&&"active"!==n.invite_status?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,class:"resend table-action",title:"Resend Invite",onClick:function(t){e.userToChange=n,e.showResendConfirm()}},An,8,Vn)):Object(a["createCommentVNode"])("",!0),"anonymous"!==n.login?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:1,class:"edituser table-action",title:"Edit",onClick:function(t){return e.$emit("editUser",{user:n})}},Mn,8,wn)):Object(a["createCommentVNode"])("",!0),("superuser"===e.currentUserRole||"admin"===e.currentUserRole&&n.invited_by===e.currentUserLogin)&&"anonymous"!==n.login?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:2,class:"deleteuser table-action",title:"Delete",onClick:function(t){e.userToChange=n,e.showDeleteConfirm()}},Dn,8,Bn)):Object(a["createCommentVNode"])("",!0)])],8,mn)})),128))])],2),[[m]])]})),_:1}),Object(a["createElementVNode"])("div",Ln,[Object(a["createElementVNode"])("div",Rn,[e.userToChange?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.translate("UsersManager_DeleteUserConfirmSingle","".concat(e.userToChange.login,"")))},null,8,xn)):Object(a["createCommentVNode"])("",!0),e.userToChange?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{key:1,innerHTML:e.$sanitize(e.translate("UsersManager_DeleteUserConfirmMultiple","".concat(e.affectedUsersCount,"")))},null,8,Pn))]),Object(a["createElementVNode"])("div",Fn,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[14]||(t[14]=Object(a["withModifiers"])((function(t){return e.deleteRequestedUsers()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[15]||(t[15]=Object(a["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512),Object(a["createElementVNode"])("div",Hn,[Object(a["createElementVNode"])("div",In,[e.userToChange?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.deleteUserPermConfirmSingleText)},null,8,Jn)):Object(a["createCommentVNode"])("",!0),e.userToChange&&"anonymous"===e.userToChange.login&&"view"===e.roleToChangeTo?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",qn,[Object(a["createElementVNode"])("em",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_Note"))+": ",1),Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.translate("UsersManager_AnonymousUserRoleChangeWarning","anonymous",e.getRoleDisplay(e.roleToChangeTo)))},null,8,$n)])])):Object(a["createCommentVNode"])("",!0),e.userToChange?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{key:2,innerHTML:e.$sanitize(e.deleteUserPermConfirmMultipleText)},null,8,Gn))]),Object(a["createElementVNode"])("div",zn,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[16]||(t[16]=Object(a["withModifiers"])((function(t){return e.changeUserRole()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[17]||(t[17]=Object(a["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512),Object(a["createElementVNode"])("div",Wn,[Object(a["createElementVNode"])("div",Yn,[e.userToChange?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.translate("UsersManager_ResendInviteConfirmSingle","".concat(e.userToChange.login,"")))},null,8,Xn)):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",Kn,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[18]||(t[18]=Object(a["withModifiers"])((function(t){return e.resendRequestedUser()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[19]||(t[19]=Object(a["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)],2)}var Zn=window,es=Zn.$,ts=Object(a["defineComponent"])({props:{initialSiteId:{type:[String,Number],required:!0},initialSiteName:{type:String,required:!0},currentUserRole:String,isLoadingUsers:Boolean,accessLevels:{type:Array,required:!0},filterAccessLevels:{type:Array,required:!0},filterStatusLevels:{type:Array,required:!0},totalEntries:Number,users:{type:Array,required:!0},searchParams:{type:Object,required:!0}},components:{Field:f["Field"],ActivityIndicator:i["ActivityIndicator"],Notification:i["Notification"],ContentBlock:i["ContentBlock"]},directives:{DropdownMenu:i["DropdownMenu"],ContentTable:i["ContentTable"]},data:function(){return{areAllResultsSelected:!1,selectedRows:{},isAllCheckboxSelected:!1,isBulkActionsDisabled:!0,userToChange:null,roleToChangeTo:null,accessLevelFilter:null,statusLevelFilter:null,isRoleHelpToggled:!1,userTextFilter:"",permissionsForSite:{id:this.initialSiteId,name:this.initialSiteName}}},emits:["editUser","changeUserRole","deleteUser","searchChange","resendInvite"],created:function(){this.onUserTextFilterChange=Object(i["debounce"])(this.onUserTextFilterChange,300)},watch:{users:function(){this.clearSelection()}},methods:{getInviteStatus:function(e){return Number.isInteger(e)?Object(i["translate"])("UsersManager_InviteDayLeft",e):"expired"===e?Object(i["translate"])("UsersManager_Expired"):Object(i["translate"])("UsersManager_Active")},onPermissionsForUpdate:function(e){this.permissionsForSite=e,this.changeSearch({idSite:this.permissionsForSite.id})},clearSelection:function(){this.selectedRows={},this.areAllResultsSelected=!1,this.isBulkActionsDisabled=!0,this.isAllCheckboxSelected=!1,this.userToChange=null},onAllCheckboxChange:function(){if(this.isAllCheckboxSelected){for(var e=0;e!==this.users.length;e+=1)this.selectedRows[e]=!0;this.isBulkActionsDisabled=!1}else this.clearSelection()},changeUserRole:function(){this.$emit("changeUserRole",{users:this.userOperationSubject,role:this.roleToChangeTo})},onRowSelected:function(){var e=this;setTimeout((function(){var t=e.selectedCount;e.isBulkActionsDisabled=0===t,e.isAllCheckboxSelected=t===e.users.length}))},deleteRequestedUsers:function(){this.$emit("deleteUser",{users:this.userOperationSubject})},resendRequestedUser:function(){this.$emit("resendInvite",{user:this.userToChange})},showDeleteConfirm:function(){es(this.$refs.deleteUserConfirmModal).modal({dismissible:!1}).modal("open")},showResendConfirm:function(){es(this.$refs.resendInviteConfirmModal).modal({dismissible:!1}).modal("open")},showAccessChangeConfirm:function(){es(this.$refs.changeUserRoleConfirmModal).modal({dismissible:!1}).modal("open")},getRoleDisplay:function(e){var t=null;return this.accessLevels.forEach((function(n){n.key===e&&(t=n.value)})),t},changeSearch:function(e){var t=Object.assign(Object.assign({},this.searchParams),e);this.$emit("searchChange",{params:t})},gotoPreviousPage:function(){this.changeSearch({offset:Math.max(0,this.searchParams.offset-this.searchParams.limit)})},gotoNextPage:function(){var e=this.searchParams.offset+this.searchParams.limit;e>=this.totalEntries||this.changeSearch({offset:e})},onUserTextFilterChange:function(e){this.userTextFilter=e,this.changeSearch({filter_search:e,offset:0})}},computed:{currentUserLogin:function(){return i["Matomo"].userLogin},paginationLowerBound:function(){return this.searchParams.offset+1},paginationUpperBound:function(){if(null===this.totalEntries)return"?";var e=this.searchParams;return Math.min(e.offset+e.limit,this.totalEntries)},userOperationSubject:function(){return this.userToChange?[this.userToChange]:this.areAllResultsSelected?"all":this.selectedUsers},selectedUsers:function(){var e=this,t=this.users,n=[];return Object.keys(this.selectedRows).forEach((function(s){var r=parseInt(s,10);e.selectedRows[s]&&t[r]&&n.push(t[r])})),n},rolesHelpText:function(){var e="https://matomo.org/faq/general/faq_70/",t="https://matomo.org/faq/general/faq_69/";return Object(i["translate"])("UsersManager_RolesHelp",''),"",''),"")},affectedUsersCount:function(){return this.areAllResultsSelected?this.totalEntries||0:this.selectedCount},selectedCount:function(){var e=this,t=0;return Object.keys(this.selectedRows).forEach((function(n){e.selectedRows[n]&&(t+=1)})),t},deleteUserPermConfirmSingleText:function(){var e,t;return Object(i["translate"])("UsersManager_DeleteUserPermConfirmSingle","".concat((null===(e=this.userToChange)||void 0===e?void 0:e.login)||"",""),"".concat(this.getRoleDisplay(this.roleToChangeTo),""),"".concat(i["Matomo"].helper.htmlEntities((null===(t=this.permissionsForSite)||void 0===t?void 0:t.name)||""),""))},deleteUserPermConfirmMultipleText:function(){var e;return Object(i["translate"])("UsersManager_DeleteUserPermConfirmMultiple","".concat(this.affectedUsersCount,""),"".concat(this.getRoleDisplay(this.roleToChangeTo),""),"".concat(i["Matomo"].helper.htmlEntities((null===(e=this.permissionsForSite)||void 0===e?void 0:e.name)||""),""))},bulkActionAccessLevels:function(){return this.accessLevels.filter((function(e){return"noaccess"!==e.key&&"superuser"!==e.key}))},anonymousAccessLevels:function(){return this.accessLevels.filter((function(e){return"noaccess"===e.key||"view"===e.key}))}}});ts.render=Qn;var ns=ts,ss=(Object(i["createAngularJsAdapter"])({component:ns,scope:{onEditUser:{angularJsBind:"&",vue:"editUser"},onChangeUserRole:{angularJsBind:"&",vue:"changeUserRole"},onDeleteUser:{angularJsBind:"&",vue:"deleteUser"},onSearchChange:{angularJsBind:"&",vue:"searchChange"},onResendInvite:{angularJsBind:"&",vue:"resendInvite"},initialSiteId:{angularJsBind:"<"},initialSiteName:{angularJsBind:"<"},currentUserRole:{angularJsBind:"<"},isLoadingUsers:{angularJsBind:"<"},accessLevels:{angularJsBind:"<"},filterAccessLevels:{angularJsBind:"<"},totalEntries:{angularJsBind:"<"},users:{angularJsBind:"<"},searchParams:{angularJsBind:"<"}},directiveName:"piwikPagedUsersList",restrict:"E"}),{class:"usersManager"}),rs={key:0},is={key:1},as={class:"row add-user-container"},os={class:"col s12"},ls={class:"input-field",style:{"margin-right":"3.5px"}},cs={key:0,class:"input-field"},ds={key:0},us={class:"add-existing-user-modal modal",ref:"addExistingUserModal"},ms={class:"modal-content"},bs={class:"modal-footer"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function ms(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("EnrichedHeadline"),l=Object(a["resolveComponent"])("PagedUsersList"),c=Object(a["resolveComponent"])("UserEditForm"),d=Object(a["resolveComponent"])("Field"),u=Object(a["resolveDirective"])("content-intro"),m=Object(a["resolveDirective"])("tooltips");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ts,[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("h2",null,[Object(a["createVNode"])(o,{"help-url":"https://matomo.org/docs/manage-users/","feature-name":"Users Management"},{default:Object(a["withCtx"])((function(){return[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_ManageUsers")),1)]})),_:1})]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",ns,Object(a["toDisplayString"])(e.translate("UsersManager_ManageUsersDesc")),1)):Object(a["createCommentVNode"])("",!0),"admin"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",ss,Object(a["toDisplayString"])(e.translate("UsersManager_ManageUsersAdminDesc")),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",rs,[Object(a["createElementVNode"])("div",is,[Object(a["createElementVNode"])("div",as,[Object(a["createElementVNode"])("a",{class:"btn add-new-user",onClick:t[0]||(t[0]=function(t){return e.onAddNewUser()})},Object(a["toDisplayString"])(e.translate("UsersManager_InviteNewUser")),1)]),"superuser"!==e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",os,[Object(a["createElementVNode"])("a",{class:"btn add-existing-user",onClick:t[1]||(t[1]=function(t){return e.showAddExistingUserModal()})},Object(a["toDisplayString"])(e.translate("UsersManager_AddExistingUser")),1)])):Object(a["createCommentVNode"])("",!0)])]),Object(a["createVNode"])(l,{onEditUser:t[2]||(t[2]=function(t){return e.onEditUser(t.user)}),onChangeUserRole:t[3]||(t[3]=function(t){return e.onChangeUserRole(t.users,t.role)}),onDeleteUser:t[4]||(t[4]=function(t){return e.onDeleteUser(t.users)}),onSearchChange:t[5]||(t[5]=function(t){e.searchParams=t.params,e.fetchUsers()}),onResendInvite:t[6]||(t[6]=function(t){return e.onResendInvite(t.user)}),"initial-site-id":e.initialSiteId,"initial-site-name":e.initialSiteName,"is-loading-users":e.isLoadingUsers,"current-user-role":e.currentUserRole,"access-levels":e.accessLevels,"filter-access-levels":e.actualFilterAccessLevels,"search-params":e.searchParams,users:e.users,"total-entries":e.totalEntries},null,8,["initial-site-id","initial-site-name","is-loading-users","current-user-role","access-levels","filter-access-levels","search-params","users","total-entries"])],512),[[u]])],512),[[a["vShow"],!e.isEditing]]),e.isEditing?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ls,[Object(a["createVNode"])(c,{onDone:t[7]||(t[7]=function(t){return e.onDoneEditing(t.isUserModified)}),user:e.userBeingEdited,"current-user-role":e.currentUserRole,"access-levels":e.accessLevels,"filter-access-levels":e.actualFilterAccessLevels,"initial-site-id":e.initialSiteId,"initial-site-name":e.initialSiteName,onUpdated:t[8]||(t[8]=function(t){return e.userBeingEdited=t.user})},null,8,["user","current-user-role","access-levels","filter-access-levels","initial-site-id","initial-site-name"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",cs,[Object(a["createElementVNode"])("div",ds,[Object(a["createElementVNode"])("h3",null,Object(a["toDisplayString"])(e.translate("UsersManager_AddExistingUser")),1),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_EnterUsernameOrEmail"))+":",1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(d,{modelValue:e.addNewUserLoginEmail,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.addNewUserLoginEmail=t}),name:"add-existing-user-email",uicontrol:"text"},null,8,["modelValue"])])]),Object(a["createElementVNode"])("div",us,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.addExistingUser()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Add")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[11]||(t[11]=Object(a["withModifiers"])((function(t){return e.addNewUserLoginEmail=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Cancel")),1)])],512)],512)),[[m]])}function bs(e){return fs(e)||hs(e)||gs(e)||ps()}function ps(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function gs(e,t){if(e){if("string"===typeof e)return js(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?js(e,t):void 0}}function hs(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function fs(e){if(Array.isArray(e))return js(e)}function js(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,s=new Array(t);ne.length)&&(t=e.length);for(var n=0,s=new Array(t);n0?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ys,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"anonymousDefaultReport",modelValue:e.defaultReport,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.defaultReport=t}),introduction:e.translate("UsersManager_WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess"),options:e.defaultReportOptions},null,8,["modelValue","introduction","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"anonymousDefaultReportWebsite",modelValue:e.defaultReportWebsite,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.defaultReportWebsite=t}),options:e.anonymousSites},null,8,["modelValue","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"anonymousDefaultDate",modelValue:e.defaultDate,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.defaultDate=t}),introduction:e.translate("UsersManager_ForAnonymousUsersReportDateToLoadByDefault"),options:e.availableDefaultDates},null,8,["modelValue","introduction","options"])]),Object(a["createVNode"])(l,{saving:e.loading,onConfirm:t[3]||(t[3]=function(t){return e.save()})},null,8,["saving"])],512)),[[d]]):Object(a["createCommentVNode"])("",!0)]})),_:1},8,["content-title"])}var Vs=Object(a["defineComponent"])({props:{title:{type:String,required:!0},anonymousSites:{type:Array,required:!0},anonymousDefaultReport:{type:[String,Number],required:!0},anonymousDefaultSite:{type:String,required:!0},anonymousDefaultDate:{type:String,required:!0},availableDefaultDates:{type:Object,required:!0},defaultReportOptions:{type:Object,required:!0}},components:{ContentBlock:i["ContentBlock"],SaveButton:h["SaveButton"],Field:h["Field"]},directives:{Form:h["Form"]},data:function(){return{loading:!1,defaultReport:"".concat(this.anonymousDefaultReport),defaultReportWebsite:this.anonymousDefaultSite,defaultDate:this.anonymousDefaultDate}},methods:{save:function(){var e=this,t={anonymousDefaultReport:"1"===this.defaultReport?this.defaultReportWebsite:this.defaultReport,anonymousDefaultDate:this.defaultDate};this.loading=!0,i["AjaxHelper"].post({module:"UsersManager",action:"recordAnonymousUserSettings",format:"json"},t,{withTokenInUrl:!0}).then((function(){var e=i["NotificationsStore"].show({message:Object(i["translate"])("CoreAdminHome_SettingsSaveSuccess"),id:"anonymousUserSettings",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.loading=!1}))}}});Vs.render=Es;var ks=Vs,As=(Object(i["createAngularJsAdapter"])({component:ks,scope:{title:{angularJsBind:"<"},anonymousSites:{angularJsBind:"<"},anonymousDefaultReport:{angularJsBind:"<"},anonymousDefaultSite:{angularJsBind:"<"},anonymousDefaultDate:{angularJsBind:"<"},availableDefaultDates:{angularJsBind:"<"},defaultReportOptions:{angularJsBind:"<"}},directiveName:"matomoAnonymousSettings"}),{id:"newsletterSignup"});
+ */function ks(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SaveButton"),c=Object(a["resolveComponent"])("ContentBlock"),d=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(c,{"content-title":e.title},{default:Object(a["withCtx"])((function(){return[0===e.anonymousSites.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Es,Object(a["toDisplayString"])(e.translate("UsersManager_NoteNoAnonymousUserAccessSettingsWontBeUsed2")),1)):Object(a["createCommentVNode"])("",!0),e.anonymousSites.length>0?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Vs,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"anonymousDefaultReport",modelValue:e.defaultReport,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.defaultReport=t}),introduction:e.translate("UsersManager_WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess"),options:e.defaultReportOptions},null,8,["modelValue","introduction","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"anonymousDefaultReportWebsite",modelValue:e.defaultReportWebsite,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.defaultReportWebsite=t}),options:e.anonymousSites},null,8,["modelValue","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"anonymousDefaultDate",modelValue:e.defaultDate,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.defaultDate=t}),introduction:e.translate("UsersManager_ForAnonymousUsersReportDateToLoadByDefault"),options:e.availableDefaultDates},null,8,["modelValue","introduction","options"])]),Object(a["createVNode"])(l,{saving:e.loading,onConfirm:t[3]||(t[3]=function(t){return e.save()})},null,8,["saving"])],512)),[[d]]):Object(a["createCommentVNode"])("",!0)]})),_:1},8,["content-title"])}var As=Object(a["defineComponent"])({props:{title:{type:String,required:!0},anonymousSites:{type:Array,required:!0},anonymousDefaultReport:{type:[String,Number],required:!0},anonymousDefaultSite:{type:String,required:!0},anonymousDefaultDate:{type:String,required:!0},availableDefaultDates:{type:Object,required:!0},defaultReportOptions:{type:Object,required:!0}},components:{ContentBlock:i["ContentBlock"],SaveButton:f["SaveButton"],Field:f["Field"]},directives:{Form:f["Form"]},data:function(){return{loading:!1,defaultReport:"".concat(this.anonymousDefaultReport),defaultReportWebsite:this.anonymousDefaultSite,defaultDate:this.anonymousDefaultDate}},methods:{save:function(){var e=this,t={anonymousDefaultReport:"1"===this.defaultReport?this.defaultReportWebsite:this.defaultReport,anonymousDefaultDate:this.defaultDate};this.loading=!0,i["AjaxHelper"].post({module:"UsersManager",action:"recordAnonymousUserSettings",format:"json"},t,{withTokenInUrl:!0}).then((function(){var e=i["NotificationsStore"].show({message:Object(i["translate"])("CoreAdminHome_SettingsSaveSuccess"),id:"anonymousUserSettings",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.loading=!1}))}}});As.render=ks;var ws=As,Ts=(Object(i["createAngularJsAdapter"])({component:ws,scope:{title:{angularJsBind:"<"},anonymousSites:{angularJsBind:"<"},anonymousDefaultReport:{angularJsBind:"<"},anonymousDefaultSite:{angularJsBind:"<"},anonymousDefaultDate:{angularJsBind:"<"},availableDefaultDates:{angularJsBind:"<"},defaultReportOptions:{angularJsBind:"<"}},directiveName:"matomoAnonymousSettings"}),{id:"newsletterSignup"});
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function ws(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SaveButton"),c=Object(a["resolveComponent"])("ContentBlock");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",As,[Object(a["createVNode"])(c,{"content-title":e.translate("UsersManager_NewsletterSignupTitle")},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"checkbox",name:"newsletterSignupCheckbox",id:"newsletterSignupCheckbox",modelValue:e.newsletterSignupCheckbox,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.newsletterSignupCheckbox=t}),"full-width":!0,title:e.signupTitleText},null,8,["modelValue","title"])]),Object(a["createVNode"])(l,{id:"newsletterSignupBtn",onConfirm:t[1]||(t[1]=function(t){return e.signupForNewsletter()}),disabled:!e.newsletterSignupCheckbox,value:e.newsletterSignupButtonTitle,saving:e.isProcessingNewsletterSignup},null,8,["disabled","value","saving"])]})),_:1},8,["content-title"])],512)),[[a["vShow"],e.showNewsletterSignup]])}var Ts=Object(a["defineComponent"])({data:function(){return{showNewsletterSignup:!0,newsletterSignupCheckbox:!1,isProcessingNewsletterSignup:!1,newsletterSignupButtonTitle:Object(i["translate"])("General_Save")}},components:{ContentBlock:i["ContentBlock"],SaveButton:h["SaveButton"],Field:h["Field"]},computed:{signupTitleText:function(){return Object(i["translate"])("UsersManager_NewsletterSignupMessage",'',"")}},methods:{signupForNewsletter:function(){var e=this;this.newsletterSignupButtonTitle=Object(i["translate"])("General_Loading"),this.isProcessingNewsletterSignup=!0,i["AjaxHelper"].fetch({module:"API",method:"UsersManager.newsletterSignup"},{withTokenInUrl:!0}).then((function(){e.isProcessingNewsletterSignup=!1,e.showNewsletterSignup=!1;var t=i["NotificationsStore"].show({message:Object(i["translate"])("UsersManager_NewsletterSignupSuccessMessage"),id:"newslettersignup",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(t)})).catch((function(){e.isProcessingNewsletterSignup=!1;var t=i["NotificationsStore"].show({message:Object(i["translate"])("UsersManager_NewsletterSignupFailureMessage"),id:"newslettersignup",context:"error",type:"transient"});i["NotificationsStore"].scrollToNotification(t),e.newsletterSignupButtonTitle=Object(i["translate"])("General_PleaseTryAgain")}))}}});Ts.render=ws;var Ms=Ts,Bs=(Object(i["createAngularJsAdapter"])({component:Ms,scope:{},directiveName:"matomoNewsletterSettings"}),{id:"userSettingsTable"}),_s={key:0},Ds={id:"languageHelp",class:"inline-help-node"},Ls={target:"_blank",rel:"noreferrer noopener",href:"https://matomo.org/translations/"},Rs={class:"sites_autocomplete"},xs={class:"modal",id:"confirmChangesWithPassword",ref:"confirmChangesWithPasswordModal"},Ps={class:"modal-content"},Hs={class:"modal-footer"};
+ */function Ms(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SaveButton"),c=Object(a["resolveComponent"])("ContentBlock");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ts,[Object(a["createVNode"])(c,{"content-title":e.translate("UsersManager_NewsletterSignupTitle")},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"checkbox",name:"newsletterSignupCheckbox",id:"newsletterSignupCheckbox",modelValue:e.newsletterSignupCheckbox,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.newsletterSignupCheckbox=t}),"full-width":!0,title:e.signupTitleText},null,8,["modelValue","title"])]),Object(a["createVNode"])(l,{id:"newsletterSignupBtn",onConfirm:t[1]||(t[1]=function(t){return e.signupForNewsletter()}),disabled:!e.newsletterSignupCheckbox,value:e.newsletterSignupButtonTitle,saving:e.isProcessingNewsletterSignup},null,8,["disabled","value","saving"])]})),_:1},8,["content-title"])],512)),[[a["vShow"],e.showNewsletterSignup]])}var Bs=Object(a["defineComponent"])({data:function(){return{showNewsletterSignup:!0,newsletterSignupCheckbox:!1,isProcessingNewsletterSignup:!1,newsletterSignupButtonTitle:Object(i["translate"])("General_Save")}},components:{ContentBlock:i["ContentBlock"],SaveButton:f["SaveButton"],Field:f["Field"]},computed:{signupTitleText:function(){return Object(i["translate"])("UsersManager_NewsletterSignupMessage",'',"")}},methods:{signupForNewsletter:function(){var e=this;this.newsletterSignupButtonTitle=Object(i["translate"])("General_Loading"),this.isProcessingNewsletterSignup=!0,i["AjaxHelper"].fetch({module:"API",method:"UsersManager.newsletterSignup"},{withTokenInUrl:!0}).then((function(){e.isProcessingNewsletterSignup=!1,e.showNewsletterSignup=!1;var t=i["NotificationsStore"].show({message:Object(i["translate"])("UsersManager_NewsletterSignupSuccessMessage"),id:"newslettersignup",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(t)})).catch((function(){e.isProcessingNewsletterSignup=!1;var t=i["NotificationsStore"].show({message:Object(i["translate"])("UsersManager_NewsletterSignupFailureMessage"),id:"newslettersignup",context:"error",type:"transient"});i["NotificationsStore"].scrollToNotification(t),e.newsletterSignupButtonTitle=Object(i["translate"])("General_PleaseTryAgain")}))}}});Bs.render=Ms;var _s=Bs,Ds=(Object(i["createAngularJsAdapter"])({component:_s,scope:{},directiveName:"matomoNewsletterSettings"}),{id:"userSettingsTable"}),Ls={key:0},Rs={id:"languageHelp",class:"inline-help-node"},xs={target:"_blank",rel:"noreferrer noopener",href:"https://matomo.org/translations/"},Ps={class:"sites_autocomplete"},Fs={class:"modal",id:"confirmChangesWithPassword",ref:"confirmChangesWithPasswordModal"},Hs={class:"modal-content"},Is={class:"modal-footer"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Fs(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SiteSelector"),c=Object(a["resolveComponent"])("SaveButton"),d=Object(a["resolveComponent"])("ContentBlock"),u=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(d,{"content-title":e.title,feature:"true"},{default:Object(a["withCtx"])((function(){return[Object(a["withDirectives"])(Object(a["createElementVNode"])("form",Bs,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"text",name:"username",title:e.translate("General_Username"),disabled:!0,modelValue:e.username,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.username=t}),"inline-help":e.translate("UsersManager_YourUsernameCannotBeChanged")},null,8,["title","modelValue","inline-help"])]),e.isUsersAdminEnabled?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",_s,[Object(a["createVNode"])(o,{uicontrol:"text",name:"email","model-value":e.email,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.email=t,e.doesRequirePasswordConfirmation=!0}),maxlength:100,title:e.translate("UsersManager_Email")},null,8,["model-value","title"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Ds,[Object(a["createElementVNode"])("a",Ls,Object(a["toDisplayString"])(e.translate("LanguagesManager_AboutPiwikTranslations")),1)]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"language",modelValue:e.language,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.language=t}),title:e.translate("General_Language"),options:e.languageOptions,"inline-help":"#languageHelp"},null,8,["modelValue","title","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"timeformat",modelValue:e.timeformat,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.timeformat=t}),title:e.translate("General_TimeFormat"),options:e.timeFormats},null,8,["modelValue","title","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"defaultReport",modelValue:e.theDefaultReport,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.theDefaultReport=t}),introduction:e.translate("UsersManager_ReportToLoadByDefault"),title:e.translate("General_AllWebsitesDashboard"),options:e.defaultReportOptions},null,8,["modelValue","introduction","title","options"])]),Object(a["createElementVNode"])("div",Rs,[Object(a["createVNode"])(l,{modelValue:e.site,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.site=t}),"show-selected-site":!0,"switch-site-on-select":!1,"show-all-sites-item":!1,showselectedsite:!0,id:"defaultReportSiteSelector"},null,8,["modelValue"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"defaultDate",modelValue:e.theDefaultDate,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.theDefaultDate=t}),introduction:e.translate("UsersManager_ReportDateToLoadByDefault"),options:e.availableDefaultDates},null,8,["modelValue","introduction","options"])]),Object(a["createVNode"])(c,{onConfirm:t[7]||(t[7]=function(t){return e.save()}),saving:e.loading},null,8,["saving"]),Object(a["createElementVNode"])("div",xs,[Object(a["createElementVNode"])("div",Ps,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"password",name:"currentPassword",autocomplete:!1,modelValue:e.passwordCurrent,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.passwordCurrent=t}),"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",Hs,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action btn",onClick:t[9]||(t[9]=Object(a["withModifiers"])((function(t){return e.save()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Ok")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.passwordCurrent=""}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Cancel")),1)])],512)],512),[[u]])]})),_:1},8,["content-title"])}var Is=window,Js=Is.$,qs=Object(a["defineComponent"])({props:{isUsersAdminEnabled:{type:Boolean,required:!0},title:{type:String,required:!0},userLogin:{type:String,required:!0},userEmail:{type:String,required:!0},currentLanguageCode:{type:String,required:!0},languageOptions:{type:Object,required:!0},currentTimeformat:{type:Number,required:!0},timeFormats:{type:Object,required:!0},defaultReport:{type:[String,Number],required:!0},defaultReportOptions:{type:Object,required:!0},defaultReportIdSite:{type:[String,Number],required:!0},defaultReportSiteName:{type:String,required:!0},defaultDate:{type:String,required:!0},availableDefaultDates:{type:Object,required:!0}},components:{ContentBlock:i["ContentBlock"],SaveButton:h["SaveButton"],Field:h["Field"],SiteSelector:i["SiteSelector"]},directives:{Form:h["Form"]},data:function(){return{doesRequirePasswordConfirmation:!1,username:this.userLogin,email:this.userEmail,language:this.currentLanguageCode,timeformat:this.currentTimeformat,theDefaultReport:this.defaultReport,site:{id:this.defaultReportIdSite,name:i["Matomo"].helper.htmlDecode(this.defaultReportSiteName)},theDefaultDate:this.defaultDate,loading:!1,passwordCurrent:""}},methods:{save:function(){var e=this;if(!this.doesRequirePasswordConfirmation||this.passwordCurrent){var t=M.Modal.getInstance(this.$refs.confirmChangesWithPasswordModal);t&&t.close();var n={email:this.email,defaultReport:"MultiSites"===this.theDefaultReport?this.theDefaultReport:this.site.id,defaultDate:this.theDefaultDate,language:this.language,timeformat:this.timeformat};this.passwordCurrent&&(n.passwordConfirmation=this.passwordCurrent),this.loading=!0,i["AjaxHelper"].post({module:"UsersManager",action:"recordUserSettings",format:"json"},n,{withTokenInUrl:!0}).then((function(){var t=i["NotificationsStore"].show({message:Object(i["translate"])("CoreAdminHome_SettingsSaveSuccess"),id:"PersonalSettingsSuccess",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(t),e.doesRequirePasswordConfirmation=!1,e.passwordCurrent="",e.loading=!1})).catch((function(){e.loading=!1,e.passwordCurrent=""}))}else Js(this.$refs.confirmChangesWithPasswordModal).modal({dismissible:!1,ready:function(){Js(".modal.open #currentPassword").focus()}}).modal("open")}}});qs.render=Fs;var $s=qs;
+ */function Js(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SiteSelector"),c=Object(a["resolveComponent"])("SaveButton"),d=Object(a["resolveComponent"])("ContentBlock"),u=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(d,{"content-title":e.title,feature:"true"},{default:Object(a["withCtx"])((function(){return[Object(a["withDirectives"])(Object(a["createElementVNode"])("form",Ds,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"text",name:"username",title:e.translate("General_Username"),disabled:!0,modelValue:e.username,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.username=t}),"inline-help":e.translate("UsersManager_YourUsernameCannotBeChanged")},null,8,["title","modelValue","inline-help"])]),e.isUsersAdminEnabled?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ls,[Object(a["createVNode"])(o,{uicontrol:"text",name:"email","model-value":e.email,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.email=t,e.doesRequirePasswordConfirmation=!0}),maxlength:100,title:e.translate("UsersManager_Email")},null,8,["model-value","title"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Rs,[Object(a["createElementVNode"])("a",xs,Object(a["toDisplayString"])(e.translate("LanguagesManager_AboutPiwikTranslations")),1)]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"language",modelValue:e.language,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.language=t}),title:e.translate("General_Language"),options:e.languageOptions,"inline-help":"#languageHelp"},null,8,["modelValue","title","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"timeformat",modelValue:e.timeformat,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.timeformat=t}),title:e.translate("General_TimeFormat"),options:e.timeFormats},null,8,["modelValue","title","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"defaultReport",modelValue:e.theDefaultReport,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.theDefaultReport=t}),introduction:e.translate("UsersManager_ReportToLoadByDefault"),title:e.translate("General_AllWebsitesDashboard"),options:e.defaultReportOptions},null,8,["modelValue","introduction","title","options"])]),Object(a["createElementVNode"])("div",Ps,[Object(a["createVNode"])(l,{modelValue:e.site,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.site=t}),"show-selected-site":!0,"switch-site-on-select":!1,"show-all-sites-item":!1,showselectedsite:!0,id:"defaultReportSiteSelector"},null,8,["modelValue"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"defaultDate",modelValue:e.theDefaultDate,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.theDefaultDate=t}),introduction:e.translate("UsersManager_ReportDateToLoadByDefault"),options:e.availableDefaultDates},null,8,["modelValue","introduction","options"])]),Object(a["createVNode"])(c,{onConfirm:t[7]||(t[7]=function(t){return e.save()}),saving:e.loading},null,8,["saving"]),Object(a["createElementVNode"])("div",Fs,[Object(a["createElementVNode"])("div",Hs,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"password",name:"currentPassword",autocomplete:!1,modelValue:e.passwordCurrent,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.passwordCurrent=t}),"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",Is,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action btn",onClick:t[9]||(t[9]=Object(a["withModifiers"])((function(t){return e.save()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Ok")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.passwordCurrent=""}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Cancel")),1)])],512)],512),[[u]])]})),_:1},8,["content-title"])}var qs=window,$s=qs.$,Gs=Object(a["defineComponent"])({props:{isUsersAdminEnabled:{type:Boolean,required:!0},title:{type:String,required:!0},userLogin:{type:String,required:!0},userEmail:{type:String,required:!0},currentLanguageCode:{type:String,required:!0},languageOptions:{type:Object,required:!0},currentTimeformat:{type:Number,required:!0},timeFormats:{type:Object,required:!0},defaultReport:{type:[String,Number],required:!0},defaultReportOptions:{type:Object,required:!0},defaultReportIdSite:{type:[String,Number],required:!0},defaultReportSiteName:{type:String,required:!0},defaultDate:{type:String,required:!0},availableDefaultDates:{type:Object,required:!0}},components:{ContentBlock:i["ContentBlock"],SaveButton:f["SaveButton"],Field:f["Field"],SiteSelector:i["SiteSelector"]},directives:{Form:f["Form"]},data:function(){return{doesRequirePasswordConfirmation:!1,username:this.userLogin,email:this.userEmail,language:this.currentLanguageCode,timeformat:this.currentTimeformat,theDefaultReport:this.defaultReport,site:{id:this.defaultReportIdSite,name:i["Matomo"].helper.htmlDecode(this.defaultReportSiteName)},theDefaultDate:this.defaultDate,loading:!1,passwordCurrent:""}},methods:{save:function(){var e=this;if(!this.doesRequirePasswordConfirmation||this.passwordCurrent){var t=M.Modal.getInstance(this.$refs.confirmChangesWithPasswordModal);t&&t.close();var n={email:this.email,defaultReport:"MultiSites"===this.theDefaultReport?this.theDefaultReport:this.site.id,defaultDate:this.theDefaultDate,language:this.language,timeformat:this.timeformat};this.passwordCurrent&&(n.passwordConfirmation=this.passwordCurrent),this.loading=!0,i["AjaxHelper"].post({module:"UsersManager",action:"recordUserSettings",format:"json"},n,{withTokenInUrl:!0}).then((function(){var t=i["NotificationsStore"].show({message:Object(i["translate"])("CoreAdminHome_SettingsSaveSuccess"),id:"PersonalSettingsSuccess",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(t),e.doesRequirePasswordConfirmation=!1,e.passwordCurrent="",e.loading=!1})).catch((function(){e.loading=!1,e.passwordCurrent=""}))}else $s(this.$refs.confirmChangesWithPasswordModal).modal({dismissible:!1,ready:function(){$s(".modal.open #currentPassword").focus()}}).modal("open")}}});Gs.render=Js;var zs=Gs;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */Object(i["createAngularJsAdapter"])({component:$s,scope:{isUsersAdminEnabled:{angularJsBind:"<"},title:{angularJsBind:"<"},userLogin:{angularJsBind:"<"},userEmail:{angularJsBind:"<"},currentLanguageCode:{angularJsBind:"<"},languageOptions:{angularJsBind:"<"},currentTimeformat:{angularJsBind:"<"},timeFormats:{angularJsBind:"<"},defaultReport:{angularJsBind:"<"},defaultReportOptions:{angularJsBind:"<"},defaultReportIdSite:{angularJsBind:"<"},defaultReportSiteName:{angularJsBind:"<"},defaultDate:{angularJsBind:"<"},availableDefaultDates:{angularJsBind:"<"}},directiveName:"matomoPersonalSettings"})}})}));
+ */Object(i["createAngularJsAdapter"])({component:zs,scope:{isUsersAdminEnabled:{angularJsBind:"<"},title:{angularJsBind:"<"},userLogin:{angularJsBind:"<"},userEmail:{angularJsBind:"<"},currentLanguageCode:{angularJsBind:"<"},languageOptions:{angularJsBind:"<"},currentTimeformat:{angularJsBind:"<"},timeFormats:{angularJsBind:"<"},defaultReport:{angularJsBind:"<"},defaultReportOptions:{angularJsBind:"<"},defaultReportIdSite:{angularJsBind:"<"},defaultReportSiteName:{angularJsBind:"<"},defaultDate:{angularJsBind:"<"},availableDefaultDates:{angularJsBind:"<"}},directiveName:"matomoPersonalSettings"})}})}));
//# sourceMappingURL=UsersManager.umd.min.js.map
\ No newline at end of file
diff --git a/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.less b/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.less
index bc52e87ce3..f1a7d66783 100644
--- a/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.less
+++ b/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.less
@@ -37,7 +37,7 @@
table.entityTable tbody tr td.actions-cell {
width: 140px;
padding: 0;
- text-align: center;
+ text-align: left;
}
table.entityTable th.actions-cell-header > div {
@@ -124,6 +124,7 @@
.input-field > .btn {
margin-top: .7rem;
+ white-space: nowrap;
}
&.row {
@@ -133,6 +134,11 @@
}
}
+ .users-list-pagination-container {
+ float: right;
+ min-width: 350px;
+ }
+
.usersListPagination {
display: flex;
flex-direction: row;
@@ -140,6 +146,7 @@
justify-content: space-between;
margin-top: .7rem;
float: right;
+ white-space: nowrap;
.pointer {
cursor: pointer;
@@ -165,11 +172,11 @@
}
#status {
- .accept {
+ .active {
color: green;
}
- .expired, .decline {
+ .expired {
color: red;
}
diff --git a/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue b/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue
index 6af4687037..f0e5121354 100644
--- a/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue
+++ b/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue
@@ -6,41 +6,41 @@