Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save bartwttewaall/0c6eb4a0e90ad0dfaf32cc6d3b4adcf2 to your computer and use it in GitHub Desktop.
Save bartwttewaall/0c6eb4a0e90ad0dfaf32cc6d3b4adcf2 to your computer and use it in GitHub Desktop.
<?php
namespace craft\contentmigrations;
use Craft;
use craft\db\Migration;
use craft\elements\User;
/**
* m240105_091858_disablePermissionUtilityFindReplace migration.
*/
class m240105_091858_disablePermissionUtilityFindReplace extends Migration
{
/**
* @inheritdoc
* Running this migration should output:
* *** applying m240105_091858_disablePermissionUtilityFindReplace
* ✔ Removed permission 'utility:find-replace' for user: <username>
* *** applied m240105_091858_disablePermissionUtilityFindReplace (time: 0.375s)
*
* Running a second time should result in:
* *** applying m240105_091858_disablePermissionUtilityFindReplace
* 𐄂 No users found with permission utility:find-replace
* *** applied m240105_091858_disablePermissionUtilityFindReplace (time: 0.375s)
*/
public function safeUp(): bool
{
$FIND_REPLACE = 'utility:find-replace';
$userPermissions = Craft::$app->getUserPermissions();
// find all non-admin users with the permission
$users = User::find()->admin(false)->can($FIND_REPLACE)->all();
if (count($users) == 0) echo "𐄂 No users found with permission $FIND_REPLACE\r\n";
foreach($users as $user) {
$permissions = $userPermissions->getPermissionsByUserId($user->id);
unset($permissions[array_search($FIND_REPLACE, $permissions)]);
$userPermissions->saveUserPermissions($user->id, $permissions);
echo "✔ Removed permission $FIND_REPLACE for user: $user->name\r\n";
}
return true;
}
/**
* @inheritdoc
*/
public function safeDown(): bool
{
echo "m240105_091858_disablePermissionUtilityFindReplace cannot be reverted.\n";
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment