public function signIn() { $attributes = $this->getUserAttributes(); $password = Yii::$app->security->generateRandomString(6); $user = new User(['password' => $password]); if ($attributes['emails']) { $email = current($attributes['emails']); $user->email = $email['value']; } if ($attributes['name']) { $user->first_name = isset($attributes['name']['givenName']) ? $attributes['name']['givenName'] : ''; $user->last_name = isset($attributes['name']['familyName']) ? $attributes['name']['familyName'] : ''; } $user->generateAuthKey(); $user->generatePasswordResetToken(); $transaction = $user->getDb()->beginTransaction(); if ($user->save()) { // create empty profile $profile = new UserProfile(['user_id' => $user->getId()]); $profile->save(); if (isset($attributes['image'])) { if ($attributes['image']['url']) { // upload facebook images $prepareUrl = substr($attributes['image']['url'], 0, strpos($attributes['image']['url'], '?')); $fname = basename($prepareUrl); $ch = curl_init($attributes['image']['url']); $fp = fopen(Yii::getAlias('@uploads/users/' . $fname), 'wb'); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); $user->avatar = $fname; } } $user->update(false); // assign role default ROLE_USER $authManager = Yii::$app->authManager; $authManager->assign($authManager->getRole(User::ROLE_USER), $user->getId()); $auth = new UserAuth(['user_id' => $user->id, 'source' => $this->getId(), 'source_id' => (string) $attributes['id']]); if ($auth->save()) { $transaction->commit(); // auto login Yii::$app->user->login($user); return true; } else { Yii::$app->getSession()->setFlash('error', 'Auth client "' . $this->getTitle() . '" not connected'); } } else { Yii::$app->getSession()->setFlash('error', 'User "' . $attributes['login'] . '" not register'); } return false; }
/** * Signs user up. * * @return User|null the saved model or null if saving fails */ public function signup() { if ($this->validate()) { $user = new User(); $user->username = $this->username; $user->email = $this->email; $user->setPassword($this->password); $user->generateAuthKey(); // start transaction $transaction = $user->getDb()->beginTransaction(); if ($user->save()) { // create empty profile $profile = new UserProfile(['user_id' => $user->getId()]); $profile->save(); // assign disable user role ROLE_DISABLE $authManager = Yii::$app->authManager; $authManager->assign($authManager->getRole(User::ROLE_DISABLE), $user->getId()); // end transaction $transaction->commit(); return $user; } } return null; }
public static function createSuperAdmin() { if (!self::findByUsername(Yii::$app->params['admin.Username'])) { $user = new User(); $user->password_reset_token = ''; $user->username = Yii::$app->params['admin.Username']; $user->email = Yii::$app->params['admin.Email']; $user->setPassword(Yii::$app->params['admin.Password']); $user->generateAuthKey(); if ($user->save()) { // Assign role admin to root user $auth = Yii::$app->authManager; $auth->assign($auth->getRole(User::ROLE_ADMIN), $user->getId()); } } }