Example #1
0
 /**
  * Загружает резюме по идентификатору и токену
  * @param int $id
  * @return \app\models\cv\Cv
  */
 protected function loadCv($id, $token)
 {
     $cv = Cv::find()->byId($id)->withRelated()->active()->one();
     //задаем язык сайта на основе языка резюме
     if ($cv->language) {
         Yii::$app->language = $cv->language;
     }
     if (!$cv) {
         throw new NotFoundHttpException('Запись не найдена');
     }
     //проверяем права на доступ к резюме
     if (Yii::$app->user->isGuest || !Yii::$app->user->can('*/*/*') && !Yii::$app->user->can('cv/*') && !Yii::$app->user->can('cv/index')) {
         //пробуем проверить токен
         //ищем юзера по его токену
         $user = User::find()->byCvToken($token)->one();
         if (!$user) {
             throw new NotFoundHttpException('Запись не найдена');
         }
         //перебираем все разрешенные юзеру резюме, чтобы найти заданное
         $canAccess = false;
         foreach ($user->cv as $allowed) {
             if ($allowed->id !== $cv->id) {
                 continue;
             }
             $canAccess = true;
             break;
         }
         if (!$canAccess) {
             throw new NotFoundHttpException('Запись не найдена');
         }
         //отмечаем посещение для неавторизованного пользователя
         $user->visitCv($cv);
     }
     return $cv;
 }
Example #2
0
 /**
  * Возвращает модель по ее идентификатору
  * @param int $id
  * @return Cv
  */
 protected function findModel($id)
 {
     if (($model = Cv::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('Запись не найдена');
     }
 }
Example #3
0
<?php

use yii\helpers\Html;
use yii\helpers\ArrayHelper;
use yii\bootstrap\ActiveForm;
use yii\helpers\Url;
use app\models\cv\Cv;
//роли пользователей
$roles = ArrayHelper::map(Yii::$app->authManager->getRoles(), 'name', 'description');
//резюме
$cv = ArrayHelper::map(Cv::find()->all(), 'id', 'title');
$form = ActiveForm::begin(['method' => 'post', 'enableClientScript' => false, 'options' => []]);
?>

	<?php 
echo $form->field($model, 'is_active')->checkbox();
?>

	<?php 
echo $form->field($model, 'email');
?>

	<?php 
echo $form->field($model, 'new_password');
?>

	<?php 
echo $form->field($model, 'cv_access_token');
?>

	<?php 
Example #4
0
 /**
  * @inheritdoc
  */
 public function afterSave($insert, $changedAttributes)
 {
     //сохраняем роли пользователя
     if ($this->_roles !== null) {
         Yii::$app->authManager->revokeAll($this->id);
         foreach ($this->_roles as $roleName) {
             $role = Yii::$app->authManager->getRole($roleName);
             Yii::$app->authManager->assign($role, $this->id);
         }
     }
     //сохраняем привязки к доступным резюме
     if ($this->_cvIds !== null) {
         $this->unlinkAll('cv', true);
         $list = Cv::find()->where(['id' => $this->_cvIds])->all();
         foreach ($list as $item) {
             $this->link('cv', $item);
         }
     }
     return parent::afterSave($insert, $changedAttributes);
 }
Example #5
0
 /**
  * Резюме
  * @return \app\models\cv\Cv
  */
 public function getCv()
 {
     return $this->hasOne(Cv::className(), ['id' => 'cv_id']);
 }