Browse Source
fix(permissions): Reset custom permissions on promotion
fix(permissions): Reset custom permissions on promotion
Signed-off-by: Joas Schilling <coding@schilljs.com>pull/9413/head
No known key found for this signature in database
GPG Key ID: C400AAF20C1BB6FC
4 changed files with 86 additions and 2 deletions
-
2appinfo/info.xml
-
59lib/Migration/Version16000Date20230502145340.php
-
8lib/Service/ParticipantService.php
-
19tests/integration/features/conversation-2/promotion-demotion.feature
@ -0,0 +1,59 @@ |
|||
<?php |
|||
|
|||
declare(strict_types=1); |
|||
|
|||
/** |
|||
* @copyright Copyright (c) 2023 Joas Schilling <coding@schilljs.com> |
|||
* |
|||
* @author Joas Schilling <coding@schilljs.com> |
|||
* |
|||
* @license GNU AGPL version 3 or any later version |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
*/ |
|||
|
|||
namespace OCA\Talk\Migration; |
|||
|
|||
use Closure; |
|||
use OCA\Talk\Model\Attendee; |
|||
use OCA\Talk\Participant; |
|||
use OCP\DB\ISchemaWrapper; |
|||
use OCP\DB\QueryBuilder\IQueryBuilder; |
|||
use OCP\IDBConnection; |
|||
use OCP\Migration\IOutput; |
|||
use OCP\Migration\SimpleMigrationStep; |
|||
|
|||
class Version16000Date20230502145340 extends SimpleMigrationStep { |
|||
public function __construct( |
|||
protected IDBConnection $connection, |
|||
) { |
|||
} |
|||
|
|||
/** |
|||
* @param IOutput $output |
|||
* @param Closure(): ISchemaWrapper $schemaClosure |
|||
* @param array $options |
|||
*/ |
|||
public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): void { |
|||
$query = $this->connection->getQueryBuilder(); |
|||
|
|||
$query->update('talk_attendees') |
|||
->set('permissions', $query->createNamedParameter(Attendee::PERMISSIONS_DEFAULT, IQueryBuilder::PARAM_INT)) |
|||
->where($query->expr()->eq('participant_type', $query->createNamedParameter(Participant::MODERATOR))) |
|||
->orWhere($query->expr()->eq('participant_type', $query->createNamedParameter(Participant::GUEST_MODERATOR))); |
|||
$fixed = $query->executeStatement(); |
|||
|
|||
$output->info('Fixed permissions of ' . $fixed . ' moderators'); |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue