public function actionCreate_user() { $user = Users::model()->findByPk(Yii::app()->user->id); $new_user = new Users(); $password = substr(preg_replace('/[oO0Il1]/i', '', md5(rand() . rand() . rand() . time())), 0, 8); $new_user->attributes = $_POST['Users']; $new_user->company_id = $user->company_id; $new_user->password = md5($password); $new_user->status = 'none'; $new_user->reg_date = new CDbExpression('NOW()'); if ($_POST['Users']['role'] == 'director') { $new_user->parent_id = $user->id; } elseif ($_POST['Users']['role'] == 'manager') { $new_user->parent_id = $_POST['Users']['parent_id']; } if (isset($_POST['ajax']) && $_POST['ajax'] == 'create-user') { echo CActiveForm::validate($new_user); Yii::app()->end(); } if ($new_user->validate() && $new_user->save()) { $role = new UsersRoles(); $role->user_id = $new_user->id; $role->itemname = $_POST['Users']['role']; $role->save(); $activated = new Activations(); $activated->setAttributes(array('type' => 'manager_registration', 'add_data' => '', 'user_id' => $new_user->id, 'key' => substr(preg_replace('/[oO0Il1]/i', '', md5(rand() . rand() . rand() . time())), 0, 24), 'date' => new CDbExpression('NOW()'))); if ($activated->save()) { $link = 'http://' . $_SERVER['HTTP_HOST'] . '/page/activation/key/' . $activated->key; $email = Yii::app()->email; $email->ClearAllRecipients(); $email->AddAddress($new_user->email); $email->Subject = 'Подтверждение регистрации'; $email->Body = ' Приветствуем, ' . $new_user->first_name . '! На сайте inclient.ru для вас была зарегистрирована учетная запись. Пожалуйста, подтвердите регистрацию учетной записи перейдя по ' . CHtml::link('ссылке', $link) . ' После подтверждения аккаунта вам придет письмо с паролем. Если в течении 1 дня Вы не подтвердите регистрацию, то Ваш аккаунт будет удален. <br/> С уважением, Администрация INCLIENT.RU<br/> <br/> Если у вас возникнут вопросы напишите в поддержку <br/> support@inclient.ru '; $email->send(); $this->redirect(array('user_info')); } } }
function assignUserToRole($aData) { /*find the system uid for this role */ require_once 'classes/model/Users.php'; $c = new Criteria(); $c->add(RolesPeer::ROL_UID, $aData['ROL_UID']); $result = RolesPeer::doSelectRS($c); $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); $result->next(); $row = $result->getRow(); $sSystemId = $row['ROL_SYSTEM']; //updating the role into users table $oCriteria1 = new Criteria('workflow'); $oCriteria1->add(UsersPeer::USR_UID, $aData['USR_UID'], Criteria::EQUAL); $oCriteria2 = new Criteria('workflow'); $oCriteria2->add(UsersPeer::USR_ROLE, $row['ROL_CODE']); BasePeer::doUpdate($oCriteria1, $oCriteria2, Propel::getConnection('workflow')); //delete roles for the same System $c = new Criteria(); $c->addSelectColumn(UsersRolesPeer::USR_UID); $c->addSelectColumn(RolesPeer::ROL_UID); $c->addSelectColumn(RolesPeer::ROL_CODE); $c->addSelectColumn(RolesPeer::ROL_SYSTEM); $c->add(UsersRolesPeer::USR_UID, $aData['USR_UID']); $c->add(RolesPeer::ROL_SYSTEM, $sSystemId); $c->addJoin(RolesPeer::ROL_UID, UsersRolesPeer::ROL_UID); $result = RolesPeer::doSelectRS($c); $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); $result->next(); while ($row = $result->getRow()) { $crit = new Criteria(); $crit->add(UsersRolesPeer::USR_UID, $row['USR_UID']); $crit->add(UsersRolesPeer::ROL_UID, $row['ROL_UID']); UsersRolesPeer::doDelete($crit); $result->next(); } //save the unique role for this system $oUsersRoles = new UsersRoles(); $oUsersRoles->setUsrUid($aData['USR_UID']); $oUsersRoles->setRolUid($aData['ROL_UID']); $oUsersRoles->save(); $rol = $this->load($aData['ROL_UID']); $oUsersRbac = new RbacUsers(); $user = $oUsersRbac->load($aData['USR_UID']); G::auditLog("AssignUserToRole", "Assign user " . $user['USR_USERNAME'] . " (" . $aData['USR_UID'] . ") to Role " . $rol['ROL_NAME'] . " (" . $aData['ROL_UID'] . ") "); }
function create($sUserUID = '', $sRolUID = '') { $oRole = new UsersRoles(); $oRole->setUsrUid($sUserUID); $oRole->setRolUid($sRolUID); $oRole->save(); }