#969 - Доработать функционал модуля "Управление доступом"

parent 7c426cbc
......@@ -13,7 +13,6 @@ use yii\filters\VerbFilter;
class SiteController extends Controller
{
public $page_title = 'SiteController';
/**
* @inheritdoc
......@@ -29,7 +28,7 @@ class SiteController extends Controller
'allow' => true,
],
[
'actions' => ['logout', 'index'],
'actions' => ['logout'],
'allow' => true,
'roles' => ['@'],
],
......@@ -56,67 +55,28 @@ class SiteController extends Controller
];
}
public function actionIndex()
{
return $this->render('index');
}
public function actionLogin()
{
if (!\Yii::$app->user->isGuest) {
if (!\Yii::$app->user->isGuest)
{
return $this->goHome();
}
$this->page_title = 'Панель управления';
$this->layout = "blank";
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
if ($model->load(Yii::$app->request->post()) && $model->login())
{
return $this->goBack();
} else {
}
else
{
return $this->render('login', [
'model' => $model,
]);
}
}
public function actionLogin1()
{
if (!Yii::app()->user->isGuest)
{
throw new CException('Вы уже авторизованы!');
}
$this->layout = "//layouts/adminLogin";
$model = new User("Login");
$params = array(
"model" => $model,
"error_code" => null
);
if (isset($_POST["User"]))
{
$model->attributes = $_POST["User"];
if ($model->validate())
{
$identity = new UserIdentity($_POST["User"]["email"], $_POST["User"]["password"], $_POST["User"]["remember_me"]);
if ($identity->authenticate(false))
{
Yii::app()->user->setState("_allowToUseTiny", (Yii::app()->user->checkAccess('admin')));
$this->redirect($this->url("/main/mainAdmin"));
}
else
{
$params["error_code"] = $identity->errorCode;
}
}
}
$this->render("login", $params);
}
public function actionLogout()
{
......
......@@ -69,8 +69,11 @@ AppAsset::register($this);
<a href="javascript:;"><img src="/img/user-13.jpg" alt="" /></a>
</div-->
<div class="info">
<?php echo \yii::$app->user->identity->name?>
<small><?php echo \yii::$app->user->identity->getPost()?></small>
<?php if(!\yii::$app->user->isGuest)
{
echo \yii::$app->user->identity->name ?>
<small><?php echo \yii::$app->user->identity->getPost()?></small>
<?php } ?>
</div>
</li>
</ul>
......
Test
\ No newline at end of file
<?php
use \common\components;
namespace common\components;
use Yii;
use yii\base\NotSupportedException;
use common\modules\users\models\User;
abstract class AdminController extends \common\components\BaseController
{
public $layout='//main';
public $layout = '//main';
public $tabs;
......@@ -17,19 +21,15 @@ abstract class AdminController extends \common\components\BaseController
{
parent::init();
$admin_url = $this->url('/users/userAdmin/login');
if(\Yii::$app->user->isGuest)
if(Yii::$app->user->isGuest)
{
$this->redirect('/site/login');
\Yii::$app->end();
return $this->redirect('/site/login');
}
if(\Yii::$app->user->identity->getRole() == 'user')
$this->redirect('/');
if (\Yii::$app->user->isGuest && $_SERVER['REQUEST_URI'] != $admin_url)
if(Yii::$app->user->identity->role != User::ROLE_ADMIN)
{
$this->redirect($admin_url);
throw new NotSupportedException('The requested page does not exist.');
}
$this->view->registerJsFile('/js/packages/adminBaseClasses/buttonSet.js');
......
......@@ -59,9 +59,20 @@ class LoginForm extends Model
*/
public function login()
{
if ($this->validate()) {
return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
} else {
if ($this->validate())
{
$user = $this->getUser();
if(Yii::$app->id == 'app-backend' && $user->role != User::ROLE_ADMIN)
{
return false;
}
else
{
return Yii::$app->user->login($user, $this->rememberMe ? 3600 * 24 * 30 : 0);
}
}
else
{
return false;
}
}
......@@ -73,7 +84,8 @@ class LoginForm extends Model
*/
public function getUser()
{
if ($this->_user === false) {
if ($this->_user === false)
{
$this->_user = User::findByUsername($this->username);
}
......
<?php
namespace common\modules\users\controllers;
use Yii;
use yii\filters\VerbFilter;
use yii\helpers\Url;
use yii\web\NotFoundHttpException;
use yii\filters\AccessControl;
use himiklab\sortablegrid\SortableGridAction;
use common\modules\users\models\User;
use common\models\LoginForm;
use common\modules\users\forms\UserForm;
use common\modules\rbac\models\AuthAssignment;
use yii\filters\AccessControl;
use Yii;
use yii\filters\VerbFilter;
use himiklab\sortablegrid\SortableGridAction;
class UserAdminController extends \common\components\AdminController
{
public static function actionsTitles()
{
return array(
"Login" => "Авторизация",
"Manage" => !empty($_GET['is_deleted'])?"Удаленные пользователи":"Все пользователи",
"View" => "Просмотр пользователя",
"Create" => "Добавление пользователя",
......@@ -24,16 +25,21 @@ class UserAdminController extends \common\components\AdminController
"Delete" => "Безвозвратное удаление пользователя",
"SendNewPassword" => "Безвозвратное удаление пользователя",
"SetDeletedFlag" => "Удаление и восстановление пользователя",
"ImportCSV" => "Импорт пользователей из CSV-файла",
"ImportCSV1" => "Импорт пользо",
"Test" => "Импорт пользо",
"Import" => "Импорт пользователей из CSV-файла",
"Captcha" => "",
"Sort" => "",
"Block" => "",
);
}
public function actions()
{
return [
'sort' => [
'class' => \himiklab\sortablegrid\SortableGridAction::className(),
'modelName' => \common\modules\users\models\User::className(),
],
];
}
/**
* @inheritdoc
*/
......@@ -72,19 +78,7 @@ class UserAdminController extends \common\components\AdminController
$this->redirect(['/rbac/role-admin/manage']);
}
public function actions()
{
return [
'captcha' => [
'class' => '\yii\captcha\CaptchaAction',
//'captchaAction' => '/users/user-admin/captcha',
],
'sort' => [
'class' => \himiklab\sortablegrid\SortableGridAction::className(),
'modelName' => \common\modules\users\models\User::className(),
],
];
}
public function actionSendNewPassword($id)
{
......@@ -131,175 +125,6 @@ class UserAdminController extends \common\components\AdminController
$this->render('sendNewPassword', array('form' => $form));
}
public function actionImport()
{
$olds = UserOld::model()->findAll();
$new = new User;
$auth = Yii::app()->authManager;
//add role
foreach ($olds as $old)
{
if ($new->findByAttributes(array('login'=> $old->login)))
{
continue;
}
$new->isNewRecord = true;
$new->id = null;
if ($old->howtoappeal == 'Уважаемая')
{
$new->gender = 'men';
}
elseif ($old->howtoappeal == 'Уважаемый')
{
$new->gender = 'women';
}
else
{
}
//city
$city = City::model()->findByAttributes(array('name'=> $old->city));
if (!$city)
{
$city = new City;
$city->name = $old->city;
$city->save();
}
$new->city_id = $city->id;
$new->password = md5($old->pass);
$new->status = $old->isAct = 1 ? 'active' : 'new';
$new->date_create = date('Y-m-d H:i:s', strtotime($old->regdate));
$fields = array(
'company' => 'company',
'delflag' => 'is_deleted',
'post' => 'post',
'name' => 'first_name',
'surname' => 'last_name',
'patron' => 'patronymic',
'email' => 'email',
'login' => 'login',
'postindex' => 'postindex',
'address' => 'address',
'phone1' => 'phone',
'phone2' => 'phone_ext',
'fax' => 'fax',
);
foreach ($fields as $key=> $val)
{
$new->$val = $old->$key;
}
$new->save(false);
switch ($old->grid)
{
case 1:
$role = 'schneider_electric';
break;
case 2:
$role = 'diller';
break;
case 4:
$role = 'residential';
break;
case 5:
$role = 'test';
continue;
break;
case 6:
$role = 'eds';
break;
case 7:
$role = 'e_commerce';
break;
case 8:
$role = 'admin_sertifikate';
break;
case 9:
$role = 'admin';
break;
case 11:
$role = 'do_dor';
break;
case 15:
$role = 'urezanni_dostup';
break;
case 20:
$role = 'prom_partners';
break;
case 21:
$role = 'admin_sklad';
break;
case 22:
$role = 'si';
break;
case 24:
$role = 'admin_tarif';
break;
}
$auth->assign($role, $new->id);
}
}
public function actionLogin()
{
if (!Yii::app()->user->isGuest)
{
throw new CException('Вы уже авторизованы!');
}
$this->layout = "//layouts/adminLogin";
$model = new User("Login");
$params = array(
"model" => $model,
"error_code" => null
);
if (isset($_POST["User"]))
{
$model->attributes = $_POST["User"];
if ($model->validate())
{
$identity = new UserIdentity($_POST["User"]["email"], $_POST["User"]["password"], $_POST["User"]["remember_me"]);
if ($identity->authenticate(false))
{
Yii::app()->user->setState("_allowToUseTiny", (Yii::app()->user->checkAccess('admin')));
$this->redirect($this->url("/main/mainAdmin"));
}
else
{
$params["error_code"] = $identity->errorCode;
}
}
}
$this->render("login", $params);
}
public function actionTest(){
$items = array();
$model = AuthAssignment::model()->findAll();
foreach($model as $item){
$items[$item->userid][] = $item->itemname;
}
foreach($items as $key=>$value){
if(count($value)>1){
print_r($value);
echo $key.'<br/>';}
}
}
public function actionManage($is_deleted = 0)
{
......@@ -330,27 +155,40 @@ class UserAdminController extends \common\components\AdminController
));
}
private function saveEmailToNewUser($user, $password)
{
$body = Setting::getValue('email_to_new_user');
$subject = Setting::getValue('email_to_new_user_subject');
$mailer_letter = MailerLetter::model();
$body = $mailer_letter->compileText($body, array(
'gender' => 'Уважаемый(ая)',
'user' => $user,
'password' => $password
));
MailerModule::sendMail($user->email, $subject, $body);
}
public function actionCreate()
{
$model = new User;
$model->scenario = User::SCENARIO_CREATE;
$model->status = "active";
$model->role = "manager";
if (!isset($_POST['User']))
$model->send_email = true;
$form = '';
$this->performAjaxValidation($model);
if (!isset($_POST['User']))
{
$model->send_email = true;
}
\Yii::$app->controller->page_title = 'Добавить пользователя';
\Yii::$app->controller->page_title = 'Добавить пользователя';
\Yii::$app->controller->tabs = array(
"управление пользователями" => Url::toRoute("manage"),
);
\yii::$app->controller->breadcrumbs = [
['Все пользователи' => '/users/user-admin/manage'],
'Новый пользователь',
];
\Yii::$app->controller->tabs = array(
"управление пользователями" => Url::toRoute("manage"),
);
\yii::$app->controller->breadcrumbs = [
['Все пользователи' => '/users/user-admin/manage'],
'Новый пользователь',
];
if (isset($_POST['User']))
{
......@@ -361,68 +199,32 @@ if (!isset($_POST['User']))
$password = $model->password;
$model->password = \Yii::$app->security->generatePasswordHash($model->password);
$model->activate_code=\Yii::$app->security->generatePasswordHash($model->password.'xdf5sf');
$model->activate_code=\Yii::$app->security->generatePasswordHash($model->password.'xdf5sf');
if(!$model->save(false)) die(print_r($model->error));
/*$assignment = new AuthAssignment();
$assignment->item_name = $model->role;
$assignment->user_id = $model->id;
$assignment->save();*/
/*if ($model->send_email)
{
//$this->saveEmailToNewUser($model, $password);
$email = Yii::app()->email;
$email->to = $model->email;
$email->from = Setting::getValue('admin_email');
$email->subject = 'Авторизация пользователя на '.Setting::getValue('site_url');
if($model->status == "new")
$email->message = Yii::app()->controller->renderInternal(Yii::getPathOfAlias('application.views.yii-mail.activate').'.php', array('activateCode' => $model->activate_code,'user' => $model,'password' => $password), true);
if($model->status == "active")
$email->message = Yii::app()->controller->renderInternal(Yii::getPathOfAlias('application.views.yii-mail.active_already').'.php', array('activateCode' => $model->activate_code,'user' => $model,'password' => $password), true);
$email->send();
}*/
$this->redirect(array(
'/rbac/role-admin/manage',
'id' => $model->id,
'is_created'=>1
));
}
//else die(print_r($model->errors));
}
$form = new \common\components\BaseForm('/common/modules/users/forms/UserForm', $model);
return $this->render('create', array('form' => $form->out, 'model' => $model));
}
private function saveEmailToNewUser($user, $password)
{
$body = Setting::getValue('email_to_new_user');
$subject = Setting::getValue('email_to_new_user_subject');
$mailer_letter = MailerLetter::model();
$body = $mailer_letter->compileText($body, array(
'gender' => 'Уважаемый(ая)',
'user' => $user,
'password' => $password
));
MailerModule::sendMail($user->email, $subject, $body);
return $this->render('create', [
'form' => $form->out,
'model' => $model
]);
}
public function actionUpdate($id)
{
$model = $this->loadModel($id);
$model->password_c = $model->password;
$model->password_c = $model->password = null;
$model->scenario = User::SCENARIO_UPDATE;
$model->role = $model->getRole();
$old_password = $model->password;
$this->performAjaxValidation($model);
\yii::$app->controller->page_title = 'Редактирование пользователя <small>' . $model->name.'</small>';
......@@ -458,31 +260,21 @@ if (!isset($_POST['User']))
));
}
}
//die(print_r(\yii::getAlias($this->module->id)));
$form = new \common\components\BaseForm('/common/modules/users/forms/UserForm', $model);
//$form = ActiveFormMy::widget(['options'=>]);
//$form = '\common\modules\users\forms\UserForm';
//unset($form->spsFields['captcha']);
//die(print_r($form->out));
return $this->render('update', array(
'form' => $form->out,
'model' => $model,
));
}
public function actionDelete($id)
{
$model = User::find()->where(['id'=>$id])->one();
$model->delete();
$this->findModel($id)->delete();
if (!isset($_GET['ajax']))
{
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : ['/rbac/role-admin/manage']);
}
return $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : ['/rbac/role-admin/manage']);
}
public function actionSetDeletedFlag($id, $is_deleted)
{
$model = $this->loadModel($id);
......@@ -491,115 +283,22 @@ if (!isset($_POST['User']))
$model->date_delete = new CDbExpression('NOW()');
$model->save(false);
$this->redirect($this->createUrl('manage'));
return $this->redirect($this->createUrl('manage'));
}
public function actionImportCSV()
/**
* Finds the Faq model based on its primary key value.
* If the model is not found, a 404 HTTP exception will be thrown.
* @param integer $id
* @return Faq the loaded model
* @throws NotFoundHttpException if the model cannot be found
*/
protected function findModel($id)
{
$model = User::model();
$model->scenario = User::SCENARIO_CSV_IMPORT;
$form = new BaseForm('users.ImportCSVForm', $model);
$params = array('form' => $form);
if (isset($_POST['User']))
{
$model->attributes = $_POST['User'];
if ($model->validate())
{
$csv_file = CUploadedFile::getInstance($model, 'csv_file');
$labels = array('gender', 'last_name', 'first_name', 'patronymic', 'company', 'city_id', 'postindex', 'address', 'email', 'login', 'password', 'post', 'phone', 'phone_ext', 'fax', 'status');
$users = array();
$attr_labels = $model->attributeLabels();
$resource = CSVHelper::open($csv_file->tempName);
$data = CSVHelper::fgetcsv($resource);
$data = CSVHelper::fgetcsv($resource);
try {
while ($data = CSVHelper::fgetcsv($resource)) {
if (count($data) < 2) break;
if (!($data[0] || $data[1] || $data[2] || $data[3] || $data[4])) continue;
if (!$labels) {
$labels = $data;
foreach ($labels as $i => $label) {
$labels[$i] = in_array($label, $attr_labels) ? array_search($label, $attr_labels) : null;
}
continue;
}
$user = array();
foreach ($data as $i => $value) {
if (!$labels[$i]) continue;
$user[$labels[$i]] = $value;
}
$users[] = $user;
}
$params = array('attr_labels' => $attr_labels, 'users' => $users, 'send_email' => $model->send_email);
} catch (Exception $e){
echo 'Импорт прошел неудачно, проверьте структуру файла-шаблона:' . $e->getMessage();
}
}
if (($model = User::findOne($id)) !== null) {
return $model;
} else {
throw new NotFoundHttpException('The requested page does not exist.');
}
else if (isset($_POST['users']))
{
$count = 0;
foreach ($_POST['users'] as $data)
{
if (!isset($data['checked'])) continue;
$count++;
$user = User::model()->findByAttributes(array('login' => $data['login']));
if ($user===null)
$user = new User;
$user->attributes = $data;
$user->validate();
if ($data['password']) {
$user->password = md5($data['password']);
} else {
$data['password'] = PasswordGenerator::generate(7);
$user->password = md5($data['password']);
}
if ($data['gender'])
$user->gender = in_array($data['gender'], array('м', 'М', 'm', 'M')) ? User::GENDER_MAN : User::GENDER_WOMAN;
$city_id = trim($data['city_id']);
if (!empty($city_id))
{
$city = City::model()->findByAttributes(array('name' => $city_id));
if (!$city)
{
$city = new City;
$city->name = $city_id;
$city->save();
}
}
$user->is_deleted = 0;
$user->save(false);
if ($_POST['send_email'])
$this->saveEmailToNewUser($user, $data['password']);
if (!Yii::app()->authManager->isAssigned($_POST['role'], $user->id))
Yii::app()->authManager->assign($_POST['role'], $user->id);
}
Yii::app()->user->setFlash('import_done', "Импорт данных завершен! Импортировано: $count записей");
}
$this->render('importCSV', $params);
}
}
\ No newline at end of file
......@@ -110,9 +110,11 @@ class UserController extends \common\components\BaseController {
}
public function actionRegistration() {
public function actionRegistration()
{
$model = new User();
$model->scenario = User::SCENARIO_REGISTRATION;
$model->role = User::ROLE_USER;
if (isset($_POST['User'])) {
$model->attributes = $_POST['User'];
......
<?php
use common\modules\rbac\models\AuthItem;
// use common\modules\rbac\models\AuthItem;
use common\modules\users\models\User;
use yii\helpers\ArrayHelper;
// use yii\helpers\ArrayHelper;
$roles = AuthItem::find(
['type' => AuthItem::TYPE_ROLE],
"name != '" . AuthItem::ROLE_GUEST . "'"
)->all();
// $roles = AuthItem::find(
// ['type' => AuthItem::TYPE_ROLE],
// "name != '" . AuthItem::ROLE_GUEST . "'"
// )->all();
return [
'activeForm'=>[
'id' => 'user-form',
'class' => 'ActiveForm',
'options' => ['class' => 'form-horizontal'],
'fieldConfig' => [
// 'template' => '<div class="form-group">{label}<div class="col-md-9">{input}</div><div class="col-md-9">{error}</div></div>',
'labelOptions' => ['class' => 'col-md-3 control-label'],
],
'enableAjaxValidation' => false,
// 'htmlOptions'=>['class'=>'registr'),
],
'elements' => [
'send_email' => ['type' => 'checkbox'],
......@@ -30,11 +22,6 @@ return [
'phone' => ['type' => 'text', 'class' => 'form-control'],
'mobile_phone' => ['type' => 'text', 'class' => 'form-control'],
'skype' => ['type' => 'text', 'class' => 'form-control'],
/*'status' => [
'type' => 'dropdownlist',
'items' => User::$status_list,
'class' => 'form-control',
],*/
'status' => [
'type' => 'checkbox',
'value' => 'active',
......@@ -45,16 +32,11 @@ return [
],
'role' => [
'type' => 'dropdownlist',
'items' => ArrayHelper::map($roles, 'name', 'description'),
'items' => User::$role_list,
'class' => 'form-control',
],
'password' => ['type' => 'password', 'class' => 'form-control', 'pwd-id' => 'passwordStrengthDiv'],
'password_c' => ['type' => 'password', 'class' => 'form-control', 'pwd-id' => 'passwordStrengthDiv2'],
/*'captcha' => [
'type' => 'captcha',
'label' => 'Введите код с картинки',
'class' => 'form-control'
],*/
],
'buttons' => [
'sp1' => ['type' => 'htmlBlock', 'value' => '<div class="col-md-8 col-sm-6" style="padding-left: 0;">',],
......
......@@ -30,6 +30,9 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
const STATUS_NEW = 'new';
const STATUS_BLOCKED = 'blocked';
const ROLE_ADMIN = 'admin';
const ROLE_USER = 'user';
const GENDER_MAN = "man";
const GENDER_WOMAN = "woman";
......@@ -56,25 +59,21 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
const SCENARIO_SOCIAL_REGISTRATION = 'SocialRegistration';
const SOURCE_DEFAULT = 'direct';
// public $email;
public $role;
public $password_c;
public $captcha;
public $remember_me = false;
public $activate_error;
// public $activate_code;
// public $checked;
public $csv_file;
public $send_email;
public $generate_new;
// public $fio;
// public $phone;
// public $mobile_phone;
// public $skype;
public $tmp; //for external using. no delete!
// public $post;
public $profile;
public static $role_list = [
self::ROLE_ADMIN => 'Доступ в админ-панель',
self::ROLE_USER => 'Доступ к сайту',
];
public static $occupation_list = [
self::OCCUPATION_CHIEF_IT => 'Руководитель в IT сфере',
......@@ -268,11 +267,16 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
]);
}
public function getPost() {
public function getPost()
{
if(!empty($this->post))
{
return $this->post;
}
else
{
return 'Должность не определена';
}
}
/**
......@@ -430,28 +434,6 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
{
$this->activate_code = md5($this->id . $this->name . $this->email . time(true) . rand(5, 10));
}
public function getRole()
{
// $auth = AuthItem::find()->joinWith('assignment', true)
// ->andWhere(['rule_name' => 'group'])
// ->andWhere(['auth_assignment.user_id' => $this->id])
// ->one();
//
// return $auth->name;
$assigment = AuthAssignment::find(['userid' => $this->id])->one();
if (!$assigment)
{
$assigment = new AuthAssignment();
$assigment->item_name = AuthItem::ROLE_DEFAULT;
$assigment->user_id = $this->id;
$assigment->save(false);
}
return $assigment->role;
return 'admin';
}
public function getRoleName()
{
......@@ -472,13 +454,11 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
return $out;
}
public function isRootRole()
{
return $this->role->name == AuthItem::ROLE_ROOT;
}
public function sendActivationMail()
{
$mailler_letter = MailerLetter::model();
......
<style type="text/css">
.old_value {
text-decoration: line-through;
color: #990000;
}
</style>
<?php if (isset($form)): ?>
<?php if (Yii::app()->user->hasFlash('import_done')): ?>
<?php echo $this->msg(Yii::app()->user->getFlash('import_done'), 'ok'); ?>
<?php endif ?>
<span style="font-size: 14px; color: #008C66;">Краткая инструкция по файла реестра пользователей</span><br /><br />
<div>
Для загрузки реестра пользователей на сайт необходимо:
<ol>
<ul>1. заполнить <a href="/upload/users/users.xls">шаблон</a> в формате MS Excel. Поля для назначения тестов имеют формат "да/нет".</ul>
<ul>2. сохранить файл как CSV (разделители-запятые)</ul>
<ul>3. выбрать группу пользователей из раскрывающегося списка выше</ul>
<ul>4. загрузить файл на сайт c помощью кнопки ниже</ul>
</ol>
<span style="color: red;">Важно!</span> Не используйте клавишу ENTER для перевода строки при заполнении шаблона. Если это необходимо, пользуйтесь вместо этого тегом <strong><span style="color: red">&lt;br&gt;</span></strong>.
<?php echo $form; ?>
<?php endif ?>
<?php if (isset($users)): ?>
<form method="post">
<input type="hidden" name="role" value="<?php echo $_POST['User']['role'] ?>" />
<input type="hidden" name="send_email" value="<?php echo $_POST['User']['send_email'] ?>" />
<?php
$model = User::model();
$model->scenario = User::SCENARIO_CSV_IMPORT;
?>
<?php foreach ($users as $i => $user): ?>
<?php
$user["password"] = isset($user["password"]) ? $user["password"] : PasswordGenerator::generate(6);
$object = $model->findByAttributes(array('login' => trim($user['login'])));
if ($object)
{
foreach ($object->attributes as $attr => $value)
{
if (isset($user[$attr]) && ($user[$attr] != $value))
{
if ($attr == 'password')
{
$user[$attr] = trim($user[$attr]);
if (empty($user[$attr]))
{
$object->$attr = null;
continue;
}
if (md5($user[$attr]) != $object->$attr)
{
$object->$attr = "<div class='old_value'>{$value}</div> <br/> {$user[$attr]}";
}
else
{
$object->$attr = $user[$attr];
}
}
else if ($attr == 'city_id')
{
if ($object->city)
{
if ($user[$attr] && $user[$attr] != $object->city->name)
{
$object->$attr = "<div class='old_value'>{$object->city->name}</div> <br/> {$user[$attr]}";
}
else
{
$object->$attr = $object->city->name;
}
}
}
else
{
$object->$attr = "<div class='old_value'>{$value}</div><br/> {$user[$attr]}";
}
}
}
}
else
{
$object = new User;
$object->attributes = $user;
$object->password = $user["password"];
}
$checked = 'checked';
?>
<h3 style="color: <?php echo $object->isNewRecord ? 'green' : 'orange' ?>">
<input type="checkbox" name='users[<?php echo $i; ?>][checked]'<?php echo $object->isNewRecord ? $checked : ''; ?>> &nbsp;
<?php echo $object->isNewRecord ? 'Будет добавлено' : 'Будет отредактировано'; ?>
</h3>
<?php
$this->widget('application.components.DetailView', array(
'data' => $object,
'attributes' => array(
'last_name:raw',
'first_name:raw',
'patronymic:raw',
'email:raw',
'login:raw',
'password:raw',
'phone:raw',
'phone_ext:raw',
'fax:raw',
array('name' => 'city_id', 'type' => 'raw', 'value' => isset($model->city) ? $model->city->name : null),
'company:raw',
'post:raw',
'address:raw',
),
));
?>
<?php foreach ($user as $label => $value): ?>
<input type='hidden' name='users[<?php echo $i; ?>][<?php echo $label; ?>]' value='<?php echo $value; ?>' />
<?php endforeach ?>
<br/>
<?php endforeach ?>
<input type="submit" value="Обновить" class="submit mid" />
</form>
<?php endif ?>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment