Advertisement
Elise_194

User Model

Jul 26th, 2017
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 8.50 KB | None | 0 0
  1. <?php
  2.  
  3. namespace app\modules\admin\models;
  4.  
  5. use Yii;
  6. use yii\behaviors\TimestampBehavior;
  7. use PEAR2\Net\RouterOS;
  8.  
  9. /**
  10.  * This is the model class for table "user".
  11.  *
  12.  * @property integer $id
  13.  * @property string $surname
  14.  * @property string $username
  15.  * @property string $auth_key
  16.  * @property string $password_hash
  17.  * @property string $password_reset_token
  18.  * @property string $email
  19.  * @property integer $status
  20.  * @property integer $created_at
  21.  * @property integer $updated_at
  22.  * @property string $balance
  23.  */
  24. class User extends \yii\db\ActiveRecord
  25. {
  26.     public $passview;
  27.     /**
  28.      * @inheritdoc
  29.      */
  30.     public static function tableName()
  31.     {
  32.         return 'user';
  33.     }
  34.  
  35.     public function behaviors()
  36.     {
  37.         return [
  38.             TimestampBehavior::className(),
  39.         ];
  40.     }
  41.     /**
  42.      * @inheritdoc
  43.      */
  44.     public function getTariffs() {
  45.         return $this->hasOne(Tariffs::className(), ['id' => 'tariffs_id']);
  46.     }
  47.  
  48.     public function getNametarif() {
  49.         return $this->tariffs->name;
  50.     }
  51.  
  52.     public function getConnection() {
  53.         return $this->hasOne(Connection::className(), ['id' => 'connection_id']);
  54.     }
  55.  
  56.     public function getNameconnection() {
  57.         return $this->connection->nameconnection;
  58.     }
  59.  
  60.     public function getDevices() {
  61.         return $this->hasOne(Devices::className(), ['id' => 'devices_id']);
  62.     }
  63.  
  64.     public function getNamedevices() {
  65.         return $this->devices->name;
  66.     }
  67.  
  68.     public function getSerialnumber() {
  69.         return $this->devices->serialnumber;
  70.     }
  71.  
  72.     public function rules()
  73.     {
  74.         return [
  75.             [['username', 'auth_key', 'password_hash', 'email', 'surname', 'firstname', 'secondname', 'address', 'phone', 'date_contract', 'balance', 'number_contract'], 'required'],
  76.             [['activity', 'devices_id'], 'safe'],
  77.             [['status', 'created_at', 'updated_at', 'balance'], 'integer'],
  78.             [['username', 'password_hash', 'password_reset_token', 'surname', 'firstname', 'secondname', 'address', 'phone'], 'string', 'max' => 255],
  79.             [['auth_key'], 'string', 'max' => 32],
  80.             [['email'], 'email'],
  81.             [['username'], 'unique'],
  82.             [['email'], 'unique'],
  83.             [['password_reset_token'], 'unique'],
  84.             [['passview', 'created_at', 'updated_at', 'nametarif', 'nameconnection', 'namedevices', 'role', 'tariffs_id', 'connection_id'], 'safe'],
  85.         ];
  86.     }
  87.  
  88.     /**
  89.      * @inheritdoc
  90.      */
  91.     public function attributeLabels()
  92.     {
  93.         return [
  94.             'id' => 'ID',
  95.             'surname' => 'Фамилия',
  96.             'firstname' => 'Имя',
  97.             'secondname' => 'Отчество',
  98.             'address' => 'Адрес',
  99.             'phone' => 'Телефон',
  100.             'date_contract' => 'Дата заключение договора',
  101.             'balance' => 'Баланс',
  102.             'tariffs_id' => 'Тариф',
  103.             'connection_id' => 'Соединение',
  104.             'number_contract' => 'Номер договора',
  105.             'activity' => 'Статус',
  106.             'devices_id' => 'Оборудование',
  107.             'username' => 'Логин',
  108.             'auth_key' => 'Auth Key',
  109.             'password_hash' => 'Пароль',
  110.             'password_reset_token' => 'Password Reset Token',
  111.             'email' => 'Email',
  112.             'status' => 'Status',
  113.             'created_at' => 'Created At',
  114.             'updated_at' => 'Updated At',
  115.             'nametarif' => 'Тариф',
  116.             'nameconnection' => 'Тип соединения',
  117.             'namedevices' => 'Оборудование',
  118.             'role' => 'role',
  119.             'serialnumber' => 'Серийный номер',
  120.         ];
  121.     }
  122.     /**
  123.      * @inheritdoc
  124.      */
  125.     public function getId()
  126.     {
  127.         return $this->getPrimaryKey();
  128.     }
  129.  
  130.     public function generateAuthKey()
  131.     {
  132.         $this->auth_key = Yii::$app->security->generateRandomString();
  133.     }
  134.  
  135.     public function mikrotikAdd($model, $tempPassword) {
  136.         $service = Connection::findOne($model->connection_id);
  137.         $profile = Tariffs::findOne($model->tariffs_id);
  138.         try {
  139.             $client = new RouterOS\Client('192.168.199.100', 'admin', 'admin');
  140.         } catch (RouterOS\SocketException $e) {
  141.             $tasks = new Tasks();
  142.             $tasks->action = 'create';
  143.             $tasks->username = $model->username;
  144.             $tasks->password = $tempPassword;
  145.             $tasks->service = $service->nameconnection;
  146.             $tasks->profile = $profile->description;
  147.             $tasks->date = date('Y-m-d h-i');
  148.             $tasks->save();
  149.             Yii::$app->session->setFlash('response', 'Ошибка подключения к оборудованию. Данные по операции добавлены в журнал отложенных заданий');
  150.             Yii::$app->response->redirect(['/admin/user/index']);
  151.         }
  152.  
  153.         $addRequest = new RouterOS\Request('/ppp/secret/add');
  154.  
  155.         $addRequest->setArgument('name', $model->username);
  156.         $addRequest->setArgument('password', $tempPassword);
  157.         $addRequest->setArgument('service', $service->nameconnection);
  158.         $addRequest->setArgument('profile', $profile->description);
  159.         if(!$client) {
  160.             return true;
  161.         }
  162.         if ($client->sendSync($addRequest)->getType() !== RouterOS\Response::TYPE_FINAL) {
  163.             //die("Error when creating ARP entry for 'Yii'");
  164.             $tasks = new Tasks();
  165.             $tasks->action = 'create';
  166.             $tasks->username = $model->username;
  167.             $tasks->password = $tempPassword;
  168.             $tasks->service = $service->nameconnection;
  169.             $tasks->profile = $profile->description;
  170.             $tasks->date = date('Y-m-d h-i');
  171.             $tasks->save();
  172.             Yii::$app->session->setFlash('response', 'Ошибка подключения к оборудованию. Данные по операции добавлены в журнал отложенных заданий');
  173.             Yii::$app->response->redirect(['/admin/user/index']);
  174.         }
  175.     }
  176.  
  177.  
  178.  
  179.     public function mikrotikDelete($us) {
  180.  
  181.         $user = User::find()->where(['id' => $us])->one();
  182.  
  183.         try {
  184.             $client = new RouterOS\Client('192.168.199.100', 'admin', 'admin');
  185.  
  186.             $printRequest = new RouterOS\Request('/ppp/secret/print');
  187.             $printRequest->setArgument('.proplist', '.id');
  188.             $printRequest->setQuery(RouterOS\Query::where('name', $user->username));
  189.             $id = $client->sendSync($printRequest)->getProperty('.id');
  190.  
  191.             $removeRequest = new RouterOS\Request('/ppp/secret/remove');
  192.             $removeRequest->setArgument('numbers', $id);
  193.             $client->sendSync($removeRequest);
  194.  
  195.             $devices = Devices::findOne($user->devices_id);
  196.             $devices->devicesstatus = 0;
  197.             $devices->save();
  198.         } catch (RouterOS\SocketException $e) {
  199.             $tasks = new Tasks();
  200.             $tasks->action = 'delete';
  201.             $tasks->username = $user->username;
  202.             $tasks->date = date('Y-m-d h-i');
  203.             $tasks->save();
  204.             Yii::$app->session->setFlash('response', 'Ошибка подключения к оборудованию. Данные по операции добавлены в журнал отложенных заданий');
  205.             Yii::$app->response->redirect(['/admin/user/index']);
  206.         }
  207.  
  208.     }
  209.  
  210.     public function mikrotikUpdate($model) {
  211.         $util = new RouterOS\Util(
  212.             $client = new RouterOS\Client('192.168.1.100', 'admin', 'admin')
  213.         );
  214.         $util->setMenu('/ppp/secret');
  215.         !$model->activity ? $util->disable(RouterOS\Query::where('name', $model->username)) : $util->enable(RouterOS\Query::where('name', $model->username)) ;
  216.     }
  217.  
  218.     public function mikrotikDisable($model) {
  219.         $util = new RouterOS\Util(
  220.             $client = new RouterOS\Client('192.168.1.100', 'admin', 'admin')
  221.         );
  222.         $util->setMenu('/ppp/secret');
  223.         $util->disable(RouterOS\Query::where('name', $model->username));
  224.     }
  225.  
  226.     public function mikrotikEnable($model) {
  227.         $util = new RouterOS\Util(
  228.             $client = new RouterOS\Client('192.168.1.100', 'admin', 'admin')
  229.         );
  230.         $util->setMenu('/ppp/secret');
  231.         $util->enable(RouterOS\Query::where('name', $model->username));
  232.     }
  233. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement