diff --git a/application/Espo/Classes/Acl/AuthToken/AccessChecker.php b/application/Espo/Classes/Acl/AuthToken/AccessChecker.php new file mode 100644 index 0000000000..d87d16c575 --- /dev/null +++ b/application/Espo/Classes/Acl/AuthToken/AccessChecker.php @@ -0,0 +1,56 @@ +defaultAccessChecker = $defaultAccessChecker; + } + + public function checkCreate(User $user, ScopeData $data): bool + { + return false; + } +} diff --git a/application/Espo/Controllers/AuthToken.php b/application/Espo/Controllers/AuthToken.php index 1894ebe9d2..829965dcb8 100644 --- a/application/Espo/Controllers/AuthToken.php +++ b/application/Espo/Controllers/AuthToken.php @@ -40,51 +40,6 @@ class AuthToken extends \Espo\Core\Controllers\Record } } - public function actionUpdate($params, $data, $request) - { - $dataAr = get_object_vars($data); - - if ( - is_object($data) - && - isset($data->isActive) - && - $data->isActive === false - && - count(array_keys($dataAr)) === 1 - ) { - return parent::actionUpdate($params, $data, $request); - } - throw new Forbidden(); - } - - public function actionMassUpdate($params, $data, $request) - { - if (empty($data->attributes)) { - throw new BadRequest(); - } - - $attributes = $data->attributes; - - if ( - is_object($attributes) - && - isset($attributes->isActive) - && - $attributes->isActive === false - && - count(array_keys(get_object_vars($attributes))) === 1 - ) { - return parent::actionMassUpdate($params, $data, $request); - } - throw new Forbidden(); - } - - public function beforeCreate() - { - throw new Forbidden(); - } - public function beforeCreateLink() { throw new Forbidden(); @@ -94,9 +49,4 @@ class AuthToken extends \Espo\Core\Controllers\Record { throw new Forbidden(); } - - public function beforeMassConvertCurrency() - { - throw new Forbidden(); - } } diff --git a/application/Espo/Resources/metadata/aclDefs/AuthToken.json b/application/Espo/Resources/metadata/aclDefs/AuthToken.json new file mode 100644 index 0000000000..9709b09021 --- /dev/null +++ b/application/Espo/Resources/metadata/aclDefs/AuthToken.json @@ -0,0 +1,3 @@ +{ + "accessCheckerClassName": "Espo\\Classes\\Acl\\AuthToken\\AccessChecker" +} diff --git a/application/Espo/Services/AuthToken.php b/application/Espo/Services/AuthToken.php index b62c8b94b7..cc8418b0a8 100644 --- a/application/Espo/Services/AuthToken.php +++ b/application/Espo/Services/AuthToken.php @@ -29,7 +29,28 @@ namespace Espo\Services; +use StdClass; + class AuthToken extends Record { protected $actionHistoryDisabled = true; + + public function filterUpdateInput(StdClass $data): void + { + parent::filterUpdateInput($data); + + $dataArray = get_object_vars($data); + + foreach (array_keys($dataArray) as $attribute) { + if ($attribute !== 'isActive') { + unset($data->$attribute); + + continue; + } + } + + if ($data->isActive ?? false) { + unset($data->isActive); + } + } } diff --git a/client/src/views/admin/auth-token/record/list.js b/client/src/views/admin/auth-token/record/list.js index 97b71b6879..4bf7b56e99 100644 --- a/client/src/views/admin/auth-token/record/list.js +++ b/client/src/views/admin/auth-token/record/list.js @@ -26,7 +26,7 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -Espo.define('views/admin/auth-token/record/list', 'views/record/list', function (Dep) { +define('views/admin/auth-token/record/list', 'views/record/list', function (Dep) { return Dep.extend({ @@ -39,37 +39,49 @@ Espo.define('views/admin/auth-token/record/list', 'views/record/list', function massActionSetInactive: function () { var ids = false; var allResultIsChecked = this.allResultIsChecked; + if (!allResultIsChecked) { ids = this.checkedList; } + var attributes = { isActive: false }; var ids = false; + var allResultIsChecked = this.allResultIsChecked; + if (!allResultIsChecked) { ids = this.checkedList; } - this.ajaxPutRequest(this.scope + '/action/massUpdate', { - attributes: attributes, - ids: ids || null, - where: (!ids || ids.length == 0) ? this.collection.getWhere() : null, - selectData: (!ids || ids.length == 0) ? this.collection.data : null, - byWhere: this.allResultIsChecked + Espo.Ajax.postRequest('MassAction', { + action: 'update', + entityType: this.entityType, + params: { + ids: ids || null, + where: (!ids || ids.length === 0) ? this.collection.getWhere() : null, + selectData: (!ids || ids.length === 0) ? this.collection.data : null, + }, + data: attributes, }).then(function () { var result = result || {}; - var count = result.count; + this.collection.fetch(); }.bind(this)); }, actionSetInactive: function (data) { - if (!data.id) return; + if (!data.id) { + return; + }; + var model = this.collection.get(data.id); - if (!model) return; + if (!model) { + return; + } Espo.Ui.notify(this.translate('pleaseWait', 'messages'));