Esempio n. 1
0
 /**
  * метод создает пользователя и назначает его админом
  * @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);
     }
 }