/** * Аутентификация пользователя. * @return boolean если аутентификация успешна. */ public function authenticate() { $username = strtolower($this->username); $user = Webadmins::model()->find('LOWER(username)=?', array($username)); Yii::import('ext.kcaptcha.KCaptchaValidator'); if ($user === null) { $this->errorCode = self::ERROR_USERNAME_INVALID; } elseif ($user->try >= 3 && empty($_POST['verify'])) { Yii::app()->request->cookies['captcha_auth'] = new CHttpCookie('captcha_auth', '1'); Yii::app()->controller->refresh(); } elseif ($user->try >= 3 && !KCaptchaValidator::testCode($_POST['verify'])) { $this->errorCode = self::ERROR_PASSWORD_INVALID; } elseif (!$user->validatePassword($this->password)) { $this->errorCode = self::ERROR_PASSWORD_INVALID; $user->try++; $user->scenario = 'auth'; $user->save(); } else { $this->_id = $user->id; $this->setState('email', $user->email); $this->username = $user->username; $this->errorCode = self::ERROR_NONE; // Лог входа, добавить запись $user->last_action = time(); $user->try = 0; $user->scenario = 'auth'; $user->save(); unset(Yii::app()->request->cookies['captha_auth']); } return $this->errorCode == self::ERROR_NONE; }
public function loadModel($id) { $model = Webadmins::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }
public function beforeValidate() { parent::beforeValidate(); if (!$this->isNewRecord) { $oldRecord = Webadmins::model()->findByPk($this->id); if ($this->password && $oldRecord->password !== $this->password) { $this->password = md5($this->password); } else { $this->password = $oldRecord->password; } } else { $this->password = md5($this->password); } return TRUE; }
/** * Удаление админа * @param integer $id ID админа */ public function actionDelete($id) { if (!Webadmins::checkAccess('amxadmins_edit')) { throw new CHttpException(403, "У Вас недостаточно прав"); } $model = $this->loadModel($id); $model->delete(); $wa_model = Webadmins::model()->find('`username` = :nick', array(':nick' => $model->nickname)); if ($wa_model !== null) { $wa_model->delete(); } // Если не аякс запрос, то перенаправляем if (!isset($_GET['ajax'])) { $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin')); } }
* @copyright (C)2016 Craft-Soft.ru. Все права защищены. * @link http://craft-soft.ru/ * @license http://creativecommons.org/licenses/by-nc-sa/4.0/deed.ru «Attribution-NonCommercial-ShareAlike» */ $this->pageTitle = Yii::app()->name . ' :: Админцентр - Системный лог'; $this->breadcrumbs = array('Админцентр' => array('/admin/index'), 'Системный лог'); $this->menu = array(array('label' => 'Удалить все записи', 'url' => '#', 'linkOptions' => array('id' => 'clearLog'))); Yii::app()->clientScript->registerScript('', ' $("a#clearLog").click(function(){ if(!confirm("Удалить все записи лога?")) return false; var ret = ""; $.post("", {"clearlog": 1}, function(data){ jQuery("#logs-grid").yiiGridView("update"); alert("Лог очищен"); }); return false; }); '); $this->renderPartial('/admin/mainmenu', array('active' => 'site', 'activebtn' => 'logs')); ?> <h2>Системный лог</h2> <?php $criteria = new CDbCriteria(); $criteria->group = 'username'; $this->widget('bootstrap.widgets.TbGridView', array('id' => 'logs-grid', 'dataProvider' => $model->search(), 'filter' => $model, 'afterAjaxUpdate' => 'reinstallDatePicker', 'columns' => array(array('name' => 'timestamp', 'type' => 'datetime', 'value' => '$data->timestamp', 'filter' => $this->widget('zii.widgets.jui.CJuiDatePicker', array('model' => $model, 'id' => 'timestamp', 'attribute' => 'timestamp', 'language' => 'ru', 'i18nScriptFile' => 'jquery-ui-i18n.min.js', 'htmlOptions' => array('id' => 'timestamp', 'size' => '10'), 'options' => array('showAnim' => 'fold')), true)), array('name' => 'username', 'value' => '$data->username', 'filter' => CHtml::listData(Webadmins::model()->findAll(), 'username', 'username')), array('name' => 'action', 'value' => 'Logs::getLogType($data->action)', 'filter' => Logs::getLogType(FALSE, TRUE)), array('class' => 'bootstrap.widgets.TbButtonColumn', 'template' => '{view} {delete}')))); Yii::app()->clientScript->registerScript('re-install-date-picker', "\r\n\tfunction reinstallDatePicker(id, data) {\r\n\t\t\$('#timestamp').datepicker(jQuery.extend({showMonthAfterYear:false},jQuery.datepicker.regional['ru'],{'showAnim':'fold'}));\r\n\t}\r\n");