|
- <?php
-
- namespace producer\controllers;
-
- class ProducerBaseController extends CommonController {
-
- var $producer ;
-
- /**
- * @inheritdoc
- */
- public function behaviors() {
- return [];
- }
-
- public function actions() {
- return [];
- }
-
- public function beforeAction($event) {
-
- $producer = $this->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);
- }
-
- 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');
- }
- }
- }
- }
-
- ?>
|