getProducer() ; /* * Producteur protègé par un code */ if(strlen($producer->code)) { // Si l'utilisateur n'est pas connecté, on le redirige vers une page qui lui permet // de se connecter ou de s'inscrire en saisissant le code du producteur if(Yii::$app->user->isGuest) { $this->redirect(Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/producer','id' => $producer->id])) ; } // si l'utilisateur est connecté et qu'il n'a pas encore saisi de code else { $user_etablissement = UserEtablissement::find() ->where([ 'id_user' => Yii::$app->user->id, 'id_etablissement' => $producer->id ]) ->one() ; if(!$user_etablissement || ($user_etablissement && !$user_etablissement->actif)) { $this->redirect(Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/producer-code','id' => $producer->id])) ; } } } return parent::beforeAction($event); } /** * Retourne le producteur courant. * * @return Etablissement * @throws \yii\web\HttpException */ public function getProducer() { if($this->producer) { return $this->producer ; } else { $producer = Etablissement::find() ->with('contact') ->where(['slug' => Yii::$app->getRequest()->getQueryParam('slug_producer')]) ->one() ; if($producer) { $this->producer = $producer ; return $this->producer ; } else { throw new \yii\web\HttpException(404, 'Établissement introuvable'); } } } } ?>