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); } } } }
/** * 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; } }
<?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]);
/** * 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; }
public function getModifiedby() { return $this->hasOne(User::className(), ['id' => 'modified_by'])->from(User::tableName() . ' AS modifiedby'); }
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.');
$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']); }
/** * @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]); }
/** * @return \yii\db\ActiveQuery */ public function getUsers() { return $this->hasMany(User::className(), ['category_id' => 'category_id']); }
public function getKursTeacherCategory() { return $this->hasOne(User::className(), ['user_id' => 'category_id']); }
/** * @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));
/** * 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']); }
/** * @return \yii\db\ActiveQuery */ public function getUser() { return $this->hasOne(User::className(), ['id' => 'user_id']); }
<?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/*']]];
/** * @return \yii\db\ActiveQuery */ public function getUpdatedBy() { return $this->hasOne(User::className(), ['id' => 'updated_by']); }
/** * 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]); }