38 lines
923 B
PHP
38 lines
923 B
PHP
<?php
|
|
|
|
namespace humhub\modules\space_profiles\helpers;
|
|
|
|
use humhub\modules\space\models\Space;
|
|
use humhub\modules\user\models\User;
|
|
use Yii;
|
|
|
|
class ProfileAccess
|
|
{
|
|
public static function canView(Space $space, User $user = null): bool
|
|
{
|
|
if ($space->status === Space::STATUS_DISABLED) {
|
|
return false;
|
|
}
|
|
|
|
$user = $user ?: (!Yii::$app->user->isGuest ? Yii::$app->user->getIdentity() : null);
|
|
|
|
if ($user && method_exists($user, 'isSystemAdmin') && $user->isSystemAdmin()) {
|
|
return true;
|
|
}
|
|
|
|
if ($user && method_exists($space, 'isMember') && $space->isMember($user)) {
|
|
return true;
|
|
}
|
|
|
|
if ($space->visibility === Space::VISIBILITY_ALL) {
|
|
return true;
|
|
}
|
|
|
|
if ($space->visibility === Space::VISIBILITY_REGISTERED_ONLY) {
|
|
return $user !== null;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|