Files
space_profiles/controllers/PublicController.php
2026-04-04 13:11:50 -04:00

44 lines
1.4 KiB
PHP

<?php
namespace humhub\modules\space_profiles\controllers;
use humhub\components\Controller;
use humhub\modules\space\models\Space;
use humhub\modules\space_profiles\helpers\ProfileAccess;
use humhub\modules\space_profiles\models\SpaceProfile;
use Yii;
use yii\web\ForbiddenHttpException;
use yii\web\NotFoundHttpException;
class PublicController extends Controller
{
public function actionView(string $slug)
{
$profile = SpaceProfile::findOne(['slug' => $slug]);
if (!$profile instanceof SpaceProfile) {
throw new NotFoundHttpException('Profile not found.');
}
$space = Space::findOne(['contentcontainer_id' => $profile->contentcontainer_id]);
if (!$space instanceof Space) {
throw new NotFoundHttpException('Space not found.');
}
if (!$space->moduleManager->isEnabled('space_profiles')) {
throw new NotFoundHttpException('Profile not available.');
}
if (!ProfileAccess::canView($space)) {
throw new ForbiddenHttpException('You are not allowed to view this profile.');
}
$this->view->title = Yii::t('SpaceProfilesModule.base', 'Rescue Profile') . ' - ' . $space->name;
return $this->render('view', [
'space' => $space,
'profile' => $profile,
'isPublicRoute' => true,
]);
}
}