public function actionConnect($account_id)
 {
     //var_dump("connect");die;
     $account = $this->finder->findAccountById($account_id);
     if ($account === null || $account->getIsConnected()) {
         throw new NotFoundHttpException();
     }
     /** @var User $user */
     $user = \Yii::createObject(['class' => User::className(), 'scenario' => 'connect']);
     if (\Yii::$app->request->get("provider") == 'kd') {
         $data = array();
         $data['User'] = array();
         $data['User']['username'] = \Yii::$app->request->get("username");
         $data['User']['email'] = \Yii::$app->request->get("email");
     } else {
         $data = \Yii::$app->request->post();
     }
     if ($user->load($data) && $user->create()) {
         $account->user_id = $user->id;
         $account->save(false);
         \Yii::$app->user->login($user, $this->module->rememberFor);
         return $this->goBack();
     }
     return $this->render('connect', ['model' => $user, 'account' => $account]);
 }
 /**
  * Creates a new User model.
  * If creation is successful, the browser will be redirected to the 'index' page.
  *
  * @return mixed
  */
 public function actionCreate()
 {
     /** @var User $user */
     $user = Yii::createObject(['class' => User::className(), 'scenario' => 'create']);
     $this->performAjaxValidation($user);
     if ($user->load(Yii::$app->request->post()) && $user->create()) {
         Yii::$app->getSession()->setFlash('success', Yii::t('user', 'User has been created'));
         return $this->redirect(['update', 'id' => $user->id]);
     }
     return $this->render('create', ['user' => $user]);
 }
 /**
  * Tests login method.
  */
 public function testLogin()
 {
     $user = \Yii::createObject(User::className());
     test::double(Finder::className(), ['findUserByUsernameOrEmail' => $user]);
     $form = Yii::createObject(LoginForm::className());
     $form->beforeValidate();
     test::double($form, ['validate' => false]);
     verify($form->login())->false();
     test::double($form, ['validate' => true]);
     test::double(\yii\web\User::className(), ['login' => false]);
     verify($form->login())->false();
     test::double(\yii\web\User::className(), ['login' => true]);
     verify($form->login())->true();
 }
 /**
  * This command creates new user account. If password is not set, this command will generate new 8-char password.
  * After saving user to database, this command uses mailer component to send credentials (username and password) to
  * user via email.
  *
  * @param string      $email    Email address
  * @param string      $username Username
  * @param null|string $password Password (if null it will be generated automatically)
  */
 public function actionIndex($email, $username, $password = null)
 {
     $user = Yii::createObject(['class' => User::className(), 'scenario' => 'create', 'email' => $email, 'username' => $username, 'password' => $password]);
     if ($user->create()) {
         $this->stdout(Yii::t('user', 'User has been created') . "!\n", Console::FG_GREEN);
     } else {
         $this->stdout(Yii::t('user', 'Please fix following errors:') . "\n", Console::FG_RED);
         foreach ($user->errors as $errors) {
             foreach ($errors as $error) {
                 $this->stdout(' - ' . $error . "\n", Console::FG_RED);
             }
         }
     }
 }
Exemple #5
0
 /**
  * the register customer will be added  'customer' role
  */
 public static function frontendRegister()
 {
     Event::on(User::className(), User::USER_REGISTER_DONE, function ($event) {
         /** @var \yii\base\ModelEvent $event */
         $user = $event->sender;
         $auth = new DbManager();
         $auth->init();
         $role = $auth->getRole('Customer');
         if (!$role) {
             $role = $auth->createRole('Customer');
             $auth->add($role);
         }
         $auth->assign($role, $user->id);
     });
 }
 /**
  * Registers a new user account. If registration was successful it will set flash message.
  *
  * @return bool
  */
 public function register()
 {
     if (!$this->validate()) {
         return false;
     }
     /** @var User $user */
     $user = Yii::createObject(User::className());
     $user->setScenario('register');
     $this->loadAttributes($user);
     if (!$user->register()) {
         return false;
     }
     Yii::$app->session->setFlash('info', Yii::t('user', 'Your account has been created and a message with further instructions has been sent to your email'));
     return true;
 }
 /**
  * Displays page where user can create new account that will be connected to social account.
  * @param  integer $account_id
  * @return string
  * @throws NotFoundHttpException
  */
 public function actionConnect($account_id)
 {
     $account = $this->finder->findAccountById($account_id);
     if ($account === null || $account->getIsConnected()) {
         throw new NotFoundHttpException();
     }
     /** @var User $user */
     $user = \Yii::createObject(['class' => User::className(), 'scenario' => 'connect']);
     if ($user->load(\Yii::$app->request->post()) && $user->create()) {
         $account->link('user', $user);
         \Yii::$app->user->login($user, $this->module->rememberFor);
         return $this->goBack();
     }
     return $this->render('connect', ['model' => $user, 'account' => $account]);
 }
 /**
  * Displays page where user can create new account that will be connected to social account.
  *
  * @param string $code
  *
  * @return string
  * @throws NotFoundHttpException
  */
 public function actionConnect($code)
 {
     $account = $this->finder->findAccount()->byCode($code)->one();
     if ($account === null || $account->getIsConnected()) {
         throw new NotFoundHttpException();
     }
     /** @var User $user */
     $user = Yii::createObject(['class' => User::className(), 'scenario' => 'connect', 'username' => $account->username, 'email' => $account->email]);
     if ($user->load(Yii::$app->request->post()) && $user->create()) {
         $account->connect($user);
         Yii::$app->user->login($user, $this->module->rememberFor);
         return $this->goBack();
     }
     return $this->render('connect', ['model' => $user, 'account' => $account]);
 }
 public function up()
 {
     if (isset($_SERVER['TRAVIS']) || isset($_SERVER['PWD']) && strpos($_SERVER['PWD'], '/tests/')) {
         return null;
     }
     $userName = '******';
     $tableName = \dektrium\user\models\User::tableName();
     $query = 'SELECT COUNT(*) FROM ' . $tableName . ' WHERE `username`=:username';
     $count = \Yii::$app->db->createCommand($query, [':username' => $userName])->queryScalar();
     if ($count > 0) {
         return null;
     }
     $user = \Yii::createObject(['class' => \dektrium\user\models\User::className(), 'scenario' => 'create', 'username' => $userName, 'password' => $userName, 'email' => $userName . '@yii2enterprise.dev']);
     return $user->create();
 }
 public function up()
 {
     $user = Yii::createObject(['class' => User::className(), 'scenario' => 'create', 'email' => '*****@*****.**', 'username' => 'admin', 'password' => '123456']);
     if ($user->create()) {
         echo Yii::t('user', 'User has been created') . "\n";
         echo 'Login: admin' . "\n";
         echo 'Password: 123456' . "\n";
     } else {
         echo Yii::t('user', 'Please fix following errors:') . "\n";
         foreach ($user->errors as $errors) {
             foreach ($errors as $error) {
                 echo ' - ' . $error . "\n";
             }
         }
     }
     if (!empty($user->errors)) {
         return false;
     }
 }
Exemple #11
0
<?php

/**
 * @author Eugene Terentev <*****@*****.**>
 */
\yii\base\Event::on(\yii\web\User::className(), \yii\web\User::EVENT_AFTER_LOGIN, function ($event) {
    //同步登陆ucenter
    \common\util\UcenterUtil::syncLogin($event);
    //记录前台登陆日志
    $user = $event->identity;
    $model = new \common\models\UserLoginLog();
    $model->user_id = $user->id;
    $model->username = $user->username;
    $model->login_ip = \Yii::$app->request->getUserIP();
    $model->login_time = time();
    $model->os = \Yii::$app->request->getUserAgent();
    $model->category = __METHOD__;
    $model->save(false);
});
//同步退出ucenter
\yii\base\Event::on(\yii\web\User::className(), \yii\web\User::EVENT_AFTER_LOGOUT, function ($event) {
    \common\util\UcenterUtil::logout();
});
//同步删除ucenter的用户
\yii\base\Event::on(\dektrium\user\models\User::className(), \dektrium\user\models\User::EVENT_AFTER_DELETE, function ($event) {
    $ucUser = \common\util\UcenterUtil::getUser($event->sender->username);
    \common\util\UcenterUtil::ucUserDelete($ucUser[0]);
    //删除discuz中common_member中用户信息
    $dzHelper = new \common\util\DzHelper();
    $dzHelper->deleteDzUserByUsername($ucUser[1]);
});
$page->updateEmail('wrong', '*****@*****.**');
$I->see('Current password is not valid');
$page->updateEmail('qwerty', '*****@*****.**');
$I->see('Before your email will be changed we need you to confirm your new email address');
$I->seeRecord(User::className(), ['id' => $user->id, 'email' => '*****@*****.**', 'unconfirmed_email' => '*****@*****.**']);
$user = $I->grabRecord(User::className(), ['id' => $user->id]);
$token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRMATION]);
$I->seeInEmail(Html::encode($token->getUrl()));
$I->seeInEmailRecipients($user->unconfirmed_email);
Yii::$app->getUser()->logout();
$I->amGoingTo('login with new email');
$loginPage = LoginPage::openBy($I);
$loginPage->login('*****@*****.**', 'qwerty');
$I->see('Invalid login or password');
$user->attemptConfirmation($token->code);
$loginPage = LoginPage::openBy($I);
$loginPage->login('*****@*****.**', 'qwerty');
$I->see('Invalid login or password');
$loginPage->login('*****@*****.**', 'qwerty');
$I->see('Logout');
$user = $I->grabRecord(User::className(), ['id' => $user->id]);
$I->seeRecord(User::className(), ['id' => 1, 'email' => '*****@*****.**', 'unconfirmed_email' => null]);
// try to reset email change
$page = EmailSettingsPage::openBy($I);
$page->updateEmail('qwerty', '*****@*****.**');
$I->see('Before your email will be changed we need you to confirm your new email address');
$I->seeRecord(User::className(), ['id' => 1, 'email' => '*****@*****.**', 'unconfirmed_email' => '*****@*****.**']);
$page->updateEmail('qwerty', '*****@*****.**');
$I->see('Email change has been cancelled');
$I->seeRecord(User::className(), ['id' => 1, 'email' => '*****@*****.**', 'unconfirmed_email' => null]);
Exemple #13
0
 /**
  * Tries to find user or create a new one.
  *
  * @param ClientInterface $client
  *
  * @return User|bool False when can't create user.
  */
 protected static function fetchUser(ClientInterface $client)
 {
     $user = static::getFinder()->findUserByEmail($client->getEmail());
     if (null !== $user) {
         return $user;
     }
     $user = Yii::createObject(['class' => User::className(), 'scenario' => 'connect', 'username' => $client->getUsername(), 'email' => $client->getEmail()]);
     if (!$user->validate(['email'])) {
         return false;
     }
     if (!$user->validate(['username'])) {
         $user->username = null;
     }
     return $user->create() ? $user : false;
 }
Exemple #14
0
 public function getModifiedby()
 {
     return $this->hasOne(User::className(), ['id' => 'modified_by'])->from(User::tableName() . ' AS modifiedby');
 }
Exemple #15
0
use yii\helpers\Html;
use yii\helpers\Url;
use dektrium\user\models\User;
use dektrium\user\models\Token;
$I = new FunctionalTester($scenario);
$I->wantTo('ensure that password recovery works');
$page = RecoveryPage::openBy($I);
$I->amGoingTo('try to request recovery token for unconfirmed account');
$user = $I->getFixture('user')->getModel('unconfirmed');
$page->recover($user->email);
$I->see('You need to confirm your email address');
$I->amGoingTo('try to request recovery token');
$user = $I->getFixture('user')->getModel('user');
$page->recover($user->email);
$I->see('You will receive an email with instructions on how to reset your password in a few minutes.');
$user = $I->grabRecord(User::className(), ['email' => $user->email]);
$token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_RECOVERY]);
$I->seeInEmail(Html::encode($token->getUrl()));
$I->seeInEmailRecipients($user->email);
$I->amGoingTo('reset password with invalid token');
$user = $I->getFixture('user')->getModel('user_with_expired_recovery_token');
$token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_RECOVERY]);
$I->amOnPage(Url::toRoute(['/user/recovery/reset', 'id' => $user->id, 'code' => $token->code]));
$I->see('Recovery link is invalid or out-of-date. Please try requesting a new one.');
$I->amGoingTo('reset password');
$user = $I->getFixture('user')->getModel('user_with_recovery_token');
$token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_RECOVERY]);
$I->amOnPage(Url::toRoute(['/user/recovery/reset', 'id' => $user->id, 'code' => $token->code]));
$I->fillField('#recovery-form-password', 'newpass');
$I->click('Finish');
$I->see('Your password has been changed successfully.');
Exemple #16
0
$user = $I->grabRecord(User::className(), ['id' => $user->id]);
$token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRM_NEW_EMAIL]);
$I->seeInEmail(Html::encode($token->getUrl()));
$I->seeInEmailRecipients($user->unconfirmed_email);
Yii::$app->user->logout();
$I->amGoingTo('log in using new email address before clicking the confirmation link');
$page = LoginPage::openBy($I);
$page->login('*****@*****.**', 'qwerty');
$I->see('Invalid login or password');
$I->amGoingTo('log in using new email address after clicking the confirmation link');
$user->attemptEmailChange($token->code);
$page->login('*****@*****.**', 'qwerty');
$I->see('Logout');
$I->seeRecord(User::className(), ['id' => 1, 'email' => '*****@*****.**', 'unconfirmed_email' => null]);
$I->amGoingTo('reset email changing process');
$page = SettingsPage::openBy($I);
$page->update('*****@*****.**', $user->username, 'qwerty');
$I->see('Confirmation message has been sent to your new email address');
$I->seeRecord(User::className(), ['id' => 1, 'email' => '*****@*****.**', 'unconfirmed_email' => '*****@*****.**']);
$page->update('*****@*****.**', $user->username, 'qwerty');
$I->see('You have successfully cancelled email changing process');
$I->seeRecord(User::className(), ['id' => 1, 'email' => '*****@*****.**', 'unconfirmed_email' => null]);
$I->amGoingTo('change username and password');
$page->update('*****@*****.**', 'nickname', 'qwerty', '123654');
$I->see('Account settings have been successfully saved');
$I->seeRecord(User::className(), ['username' => 'nickname', 'email' => '*****@*****.**']);
Yii::$app->user->logout();
$I->amGoingTo('login with new credentials');
$page = LoginPage::openBy($I);
$page->login('nickname', '123654');
$I->see('Logout');
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getUser()
 {
     return $this->hasOne(\dektrium\user\models\User::className(), ['id' => 'user_id']);
 }
Exemple #18
0
 /**
  * @inheritdoc
  */
 public function rules()
 {
     return [[['position', 'category_id', 'vendor_id', 'country_id', 'owner', 'status', 'owner', 'views'], 'integer'], [['sale', 'popular'], 'boolean'], [['price'], 'double'], [['articulus'], 'string'], [['creation_time', 'update_time'], 'safe'], [['category_id'], 'exist', 'skipOnError' => true, 'targetClass' => Category::className(), 'targetAttribute' => ['category_id' => 'id']], [['country_id'], 'exist', 'skipOnError' => true, 'targetClass' => ProductCountry::className(), 'targetAttribute' => ['country_id' => 'id']], [['vendor_id'], 'exist', 'skipOnError' => true, 'targetClass' => Vendor::className(), 'targetAttribute' => ['vendor_id' => 'id']], [['availability'], 'exist', 'skipOnError' => true, 'targetClass' => ProductAvailability::className(), 'targetAttribute' => ['availability' => 'id']], [['owner'], 'exist', 'skipOnError' => true, 'targetClass' => User::className(), 'targetAttribute' => ['owner' => 'id']]];
 }
 /**
  * Displays page where user can create new account that will be connected to social account.
  *
  * @param string $code
  *
  * @return string
  * @throws NotFoundHttpException
  */
 public function actionConnect($code)
 {
     $account = $this->finder->findAccount()->byCode($code)->one();
     if ($account === null || $account->getIsConnected()) {
         throw new NotFoundHttpException();
     }
     /**
      * xiaoma update;
      */
     $accountData = json_decode($account->data);
     switch ($account->provider) {
         case 'qq':
             $avatar = $accountData->figureurl;
             $nickname = $accountData->nickname;
             break;
         case 'sina':
             $avatar = $accountData->profile_image_url;
             $nickname = $accountData->name;
             break;
         case 'github':
             $avatar = $accountData->avatar_url;
             $nickname = $accountData->login;
             break;
         default:
             $avatar = $nickname = '';
     }
     /** @var User $user */
     $user = Yii::createObject(['class' => User::className(), 'scenario' => 'connect', 'username' => $account->username, 'email' => $account->email]);
     if ($user->load(Yii::$app->request->post()) && $user->create()) {
         $account->connect($user);
         Yii::$app->user->login($user, $this->module->rememberFor);
         return $this->goBack();
     }
     return $this->render('connect', ['model' => $user, 'account' => $account, 'avatar' => $avatar, 'nickname' => $nickname, 'provider' => $account->provider]);
 }
Exemple #20
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getUsers()
 {
     return $this->hasMany(User::className(), ['category_id' => 'category_id']);
 }
Exemple #21
0
 public function getKursTeacherCategory()
 {
     return $this->hasOne(User::className(), ['user_id' => 'category_id']);
 }
Exemple #22
0
 /**
  * @inheritdoc
  */
 public function rules()
 {
     return [[['user_id', 'pbc_tnam', 'pbc_cnam'], 'required'], [['user_id', 'user_power'], 'integer'], [['pbc_tnam', 'pbc_cnam'], 'string', 'max' => 30], [['user_power'], 'in', 'range' => [self::USER_POWER_DENY, self::USER_POWER_VIEW]], [['user_id'], 'exist', 'skipOnEmpty' => false, 'targetClass' => User::className(), 'targetAttribute' => ['user_id' => 'id']]];
 }
 /** @inheritdoc */
 public function init()
 {
     $this->user = \Yii::createObject(['class' => User::className(), 'scenario' => 'register']);
     $this->module = \Yii::$app->getModule('user');
 }
<?php

use dektrium\user\models\Token;
use dektrium\user\models\User;
use tests\codeception\_pages\RegistrationPage;
use yii\helpers\Html;
$I = new FunctionalTester($scenario);
$I->wantTo('ensure that registration works');
$page = RegistrationPage::openBy($I);
$I->amGoingTo('try to register with empty credentials');
$page->register('', '', '');
$I->see('Username cannot be blank');
$I->see('Email cannot be blank');
$I->see('Password cannot be blank');
$I->amGoingTo('try to register with already used email and username');
$user = $I->getFixture('user')->getModel('user');
$page->register($user->username, $user->email, 'qwerty');
$I->see(Html::encode('This username has already been taken'));
$I->see(Html::encode('This email address has already been taken'));
$I->amGoingTo('try to register');
$page->register('tester', '*****@*****.**', 'tester');
$I->see('We need to confirm your email address');
$user = $I->grabRecord(User::className(), ['email' => '*****@*****.**']);
$token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRMATION]);
$I->seeInEmail(Html::encode($token->url));
Exemple #25
0
 /**
  * Tries to find user or create a new one.
  *
  * @param Account $account
  *
  * @return User|bool False when can't create user.
  */
 protected static function fetchUser(Account $account)
 {
     $user = static::getFinder()->findUserByEmail($account->email);
     if (null !== $user) {
         return $user;
     }
     $user = Yii::createObject(['class' => User::className(), 'scenario' => 'connect', 'username' => $account->username, 'email' => $account->email]);
     if (!$user->validate(['email'])) {
         $account->email = null;
     }
     if (!$user->validate(['username'])) {
         $account->username = null;
     }
     return $user->create() ? $user : false;
 }
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getCliente()
 {
     return $this->hasOne(User::className(), ['id' => 'idcliente']);
 }
Exemple #27
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getUser()
 {
     return $this->hasOne(User::className(), ['id' => 'user_id']);
 }
Exemple #28
0
<?php

$params = array_merge(require __DIR__ . '/../../common/config/params.php', require __DIR__ . '/../../common/config/params-local.php', require __DIR__ . '/params.php', require __DIR__ . '/params-local.php');
return ['basePath' => dirname(__DIR__), 'controllerNamespace' => 'backend\\controllers', 'bootstrap' => ['log', 'admin'], 'modules' => ['filemanager' => ['class' => 'pendalf89\\filemanager\\Module', 'routes' => ['baseUrl' => '', 'basePath' => '@backend/web', 'uploadPath' => 'uploads'], 'thumbs' => ['small' => ['name' => '小图', 'size' => [100, 100]], 'medium' => ['name' => '中图', 'size' => [300, 200]], 'large' => ['name' => '大图', 'size' => [500, 400]]]], 'admin' => ['class' => 'mdm\\admin\\Module', 'mainLayout' => '@app/views/layouts/main.php', 'controllerMap' => ['assignment' => ['class' => 'mdm\\admin\\controllers\\AssignmentController', 'userClassName' => \dektrium\user\models\User::className(), 'idField' => 'id', 'usernameField' => 'username', 'extraColumns' => [['attribute' => 'email', 'label' => '联系邮箱', 'value' => function ($model, $key, $index, $column) {
    return $model->email;
}]]]], 'menus' => ['assignment' => ['label' => '用户权限']]], 'user' => ['as backend' => ['class' => \dektrium\user\filters\BackendFilter::className(), 'controllers' => ['profile', 'recovery', 'registration']]], 'rbac' => ['class' => 'dektrium\\rbac\\Module'], 'settings' => ['class' => 'pheme\\settings\\Module', 'sourceLanguage' => 'en'], 'audit' => ['class' => 'bedezign\\yii2\\audit\\Audit', 'layout' => '@backend/views/layouts/main', 'db' => 'db', 'trackActions' => ['*'], 'ignoreActions' => ['audit/*', 'debug/*', 'site/qrcode'], 'maxAge' => '9999', 'accessRoles' => ['超级管理员']], 'database' => ['class' => \backend\modules\database\Module::className()], 'populac' => ['class' => 'common\\populac\\Populac']], 'components' => ['user' => ['identityCookie' => ['name' => '_backendIdentity', 'path' => '/admin', 'httpOnly' => true]], 'session' => ['name' => 'BACKENDSESSID', 'cookieParams' => ['httpOnly' => true, 'path' => '/admin']], 'log' => ['traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [['class' => 'yii\\log\\FileTarget', 'levels' => ['error', 'warning']]]], 'errorHandler' => ['errorAction' => 'site/error', 'class' => '\\bedezign\\yii2\\audit\\components\\web\\ErrorHandler'], 'view' => ['theme' => ['pathMap' => ['@mdm/admin/views' => '@backend/views/admin']]], 'request' => ['parsers' => ['application/json' => 'yii\\web\\JsonParser']]], 'params' => $params, 'as access' => ['class' => \mdm\admin\components\AccessControl::className(), 'allowActions' => ['site/qrcode', 'debug/*', 'gii/*']]];
Exemple #29
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getUpdatedBy()
 {
     return $this->hasOne(User::className(), ['id' => 'updated_by']);
 }
Exemple #30
0
 /**
  * Creates a new User model.
  * If creation is successful, the browser will be redirected to the 'index' page.
  *
  * @return mixed
  */
 public function actionCreate()
 {
     /** @var User $user */
     $user = \Yii::createObject(['class' => User::className(), 'scenario' => 'create']);
     $event = $this->getUserEvent($user);
     $this->performAjaxValidation($user);
     $this->trigger(self::EVENT_BEFORE_CREATE, $event);
     if ($user->load(\Yii::$app->request->post()) && $user->create()) {
         \Yii::$app->getSession()->setFlash('success', \Yii::t('user', 'User has been created'));
         $this->trigger(self::EVENT_AFTER_CREATE, $event);
         return $this->redirect(['update', 'id' => $user->id]);
     }
     return $this->render('create', ['user' => $user]);
 }