Enh/default group permissions change (#7160)

* Groups - Default permissions/Space creation

* Autocommit PHP CS Fixer

* Groups - Default permissions/Space creation

* Autocommit PHP CS Fixer

* Groups - Default permissions/Space creation

* Autocommit PHP CS Fixer

---------

Co-authored-by: gevorgmansuryan <gevorgmansuryan@users.noreply.github.com>
This commit is contained in:
Gevorg Mansuryan 2024-08-10 12:23:14 +04:00 committed by GitHub
parent c004785fda
commit e303113792
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 75 additions and 21 deletions

View File

@ -17,6 +17,7 @@ HumHub Changelog
- Fix #7149: Fixed dropdown issue on mobile
- Fix #7151: Disable new post's required validation for `message` when post has attached files
- Enh #7106: Enable option for non-member users of a space to create posts
- Enh #7160: Default state set to Deny for `Create Private Spaces` and `Create Public Spaces` Groups permissions
1.16.2 (Unreleased)
---------------------

View File

@ -896,7 +896,7 @@ class StdClass extends \stdClass implements ArrayAccess, Stringable, SeekableIte
protected static function validatedObject(): \stdClass
{
if (self::$validatedObject === null) {
self::$validatedObject = new class () extends \stdClass {
self::$validatedObject = new class extends \stdClass {
};
}

View File

@ -0,0 +1,62 @@
<?php
use humhub\libs\BasePermission;
use humhub\modules\space\permissions\CreatePrivateSpace;
use humhub\modules\space\permissions\CreatePublicSpace;
use humhub\modules\user\models\Group;
use humhub\modules\user\models\GroupPermission;
use yii\db\Migration;
use yii\db\Query;
/**
* Class m240807_230603_add_permissions_to_existing_user_groups
*/
class m240807_230603_add_permissions_to_existing_user_groups extends Migration
{
/**
* {@inheritdoc}
*/
public function safeUp()
{
if (Yii::$app->isInstalled()) {
foreach ((new Query())->from(Group::tableName())->batch() as $groups) {
foreach ($groups as $group) {
foreach ([Yii::createObject(CreatePublicSpace::class), Yii::createObject(CreatePrivateSpace::class)] as $permission) {
/** @var BasePermission $permission */
$exist = (new Query())->from(GroupPermission::tableName())
->where([
'group_id' => $group['id'],
'module_id' => $permission->getModuleId(),
'class' => $permission::class,
])
->exists();
if (!$exist) {
Yii::$app->db->createCommand()->insert(
GroupPermission::tableName(),
[
'permission_id' => $permission->getId(),
'group_id' => $group['id'],
'module_id' => $permission->getModuleId(),
'class' => $permission::class,
'state' => $permission::STATE_ALLOW,
],
)->execute();
}
}
}
}
}
}
/**
* {@inheritdoc}
*/
public function safeDown()
{
echo "m240807_230603_add_permissions_to_existing_user_groups cannot be reverted.\n";
return false;
}
}

View File

@ -36,11 +36,6 @@ class CreatePrivateSpace extends BasePermission
*/
protected $moduleId = 'space';
/**
* @inheritdoc
*/
protected $defaultState = self::STATE_ALLOW;
public function __construct($config = [])
{
parent::__construct($config);

View File

@ -36,11 +36,6 @@ class CreatePublicSpace extends BasePermission
*/
protected $moduleId = 'space';
/**
* @inheritdoc
*/
protected $defaultState = self::STATE_ALLOW;
public function __construct($config = [])
{
parent::__construct($config);

View File

@ -28,7 +28,7 @@ use yii\web\HttpException;
/**
* Description of PermissionManager
*
* @property-read array $permissions
* @author luke
*/
class PermissionManager extends Component
@ -490,6 +490,7 @@ class PermissionManager extends Component
'contentContainer' => $permission->contentContainer,
];
}
return $permissions;
}

View File

@ -104,7 +104,7 @@ class DataTypeHelperTest extends Unit
public function testClassTypeHelperCase3()
{
$value = new class () implements Stringable {
$value = new class implements Stringable {
public function __toString(): string
{
return '';
@ -117,7 +117,7 @@ class DataTypeHelperTest extends Unit
DataTypeHelperMock::matchTypeHelper(Stringable::class, $value, 'object'),
);
$value = new class () {
$value = new class {
public function __toString(): string
{
return '';
@ -247,13 +247,13 @@ class DataTypeHelperTest extends Unit
static::assertEquals('string', DataTypeHelper::matchType('', ['string', 'NULL']));
$values = [
new class () implements Stringable {
new class implements Stringable {
public function __toString(): string
{
return '';
}
},
new class () {
new class {
public function __toString(): string
{
return '';
@ -400,7 +400,7 @@ class DataTypeHelperTest extends Unit
static::assertEquals('1.1', DataTypeHelper::filterString('1.1'));
static::assertEquals('1.1', DataTypeHelper::filterString(1.1));
$value = new class () implements Stringable {
$value = new class implements Stringable {
public function __toString(): string
{
return 'foo';
@ -408,7 +408,7 @@ class DataTypeHelperTest extends Unit
};
static::assertEquals('foo', DataTypeHelper::filterString($value));
$value = new class () {
$value = new class {
public function __toString(): string
{
return 'bar';

View File

@ -46,7 +46,7 @@ class UUIDTest extends HumHubDbTestCase
{
parent::setUpBeforeClass();
static::$toString = new class () {
static::$toString = new class {
public string $uuid = '';
public function __toString()
@ -57,7 +57,7 @@ class UUIDTest extends HumHubDbTestCase
class_alias(get_class(static::$toString), __NAMESPACE__ . '\ToString');
static::$stringable = new class () extends ToString implements Stringable {
static::$stringable = new class extends ToString implements Stringable {
};
}
@ -270,7 +270,7 @@ class UUIDTest extends HumHubDbTestCase
$validator = new UUIDValidator();
$model = new class () extends Model {
$model = new class extends Model {
/**
* @var mixed
*/