Access
In this example profile pages are visible only for logged in users.
See https://www.yiiframework.com/doc/guide/2.0/en/concept-events for more info about Yii2 events.
<?php
namespace mydate\components;
use app\base\Controller;
use app\controllers\ProfileController;
use Yii;
use yii\base\BootstrapInterface;
use yii\base\Event;
use yii\filters\AccessControl;
class ThemeBootstrap extends \youdate\components\ThemeBootstrap implements BootstrapInterface
{
/**
* @param \yii\base\Application $app
*/
public function bootstrap($app)
{
parent::bootstrap($app);
// your customization code goes here
// ...
$this->initEvents();
}
public function initEvents()
{
/*
* Do not show profiles if user is not logged in
*/
Event::on(ProfileController::class, ProfileController::EVENT_BEFORE_INIT, function(Event $event) {
if (Yii::$app->user->isGuest) {
/** @var Controller $controller */
$controller = $event->sender;
$controller->attachBehavior('access', [
'class' => AccessControl::class,
'rules' => [
['allow' => false],
],
]);
}
});
}
}