/** * метод создает пользователя и назначает его админом * @param string $email * @param string $name * @param string $pass * @return int */ public function actionAdd($email = '', $name = '', $pass = '') { if (empty($email)) { $email = $this->prompt('Enter user email:', ['required' => true]); } if (empty($name)) { $name = $this->prompt('Enter user name:', ['required' => true]); } if (empty($pass)) { $pass = $this->prompt('Enter user password:'******'required' => true]); } $User = new \resources\User(['name' => $name, 'email' => $email, 'password' => $pass, 'activated' => \resources\User::ACTIVATED, 'deleted' => \resources\User::NOT_DELETED]); $User->save(); if (!$User->hasErrors()) { AuthManager()->assign(RF::Role(\frontend\Permissions::ROLE_USER), $User->id); AuthManager()->assign(RF::Role(\frontend\Permissions::ROLE_ADMIN), $User->id); $this->stdout("User have been successfully added\n", \yii\helpers\Console::FG_GREEN); } else { $this->stdout("ERROR creating user\n", \yii\helpers\Console::FG_RED); $error = array_shift($User->getFirstErrors()); if (!empty($error)) { $this->stdout("\t> {$error}\n", \yii\helpers\Console::FG_RED); } return static::EXIT_CODE_ERROR; } return static::EXIT_CODE_NORMAL; }
/** * @param \yii\authclient\ClientInterface $Client * @throws \yii\base\NotSupportedException */ public function authSuccessCallback(\yii\authclient\ClientInterface $Client) { $AuthResponse = new \resources\User\Auth\Response(); $AuthResponse->client = $Client->getId(); $attributes = $Client->getUserAttributes(); $AuthResponse->response = Json::encode($attributes); $UserQuery = \resources\User::find(); switch ($Client->getId()) { case 'facebook': $UserQuery->byFacebookId($attributes['id']); break; case 'github': $UserQuery->byGithubId($attributes['id']); break; case 'google': $UserQuery->byGoogleId($attributes['id']); break; case 'linkedin': $UserQuery->byLinkedinId($attributes['id']); break; case 'live': $UserQuery->byLiveId($attributes['id']); break; case 'twitter': $UserQuery->byTwitterId($attributes['id']); break; case 'vkontakte': $UserQuery->byVkontakteId($attributes['id']); break; case 'yandex': $UserQuery->byYandexId($attributes['id']); break; } /** @var \resources\User $User */ $User = $UserQuery->one(); if ($User instanceof \resources\User) { $AuthResponse->result = Json::encode($User->id); } else { $User = new \resources\User(); $User->appendClientAttributes($Client); if ($User->save()) { $User->createSocialLink($Client); $AuthResponse->result = Json::encode($User->id); AuthManager()->assign(RbacFactory::Role(\frontend\Permissions::ROLE_USER), $User->id); } else { $AuthResponse->result = Json::encode($User->getErrors()); } } $AuthResponse->save(); if ($User instanceof \resources\User && !$User->isNewRecord) { $User->save(); User()->login($User, 86400); } }