/** * Creates a new User model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new User(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('create', ['model' => $model]); } }
/** * Signs user up. * * @return User|null the saved model or null if saving fails */ public function signup() { if ($this->validate()) { $user = new User(); $user->attributes = $this->attributes; $user->status = User::STATUS_NEW; $user->setPassword($this->password); $user->generateAuthKey(); if ($user->save()) { $auth = Yii::$app->authManager; $role = $auth->getRole('user'); $auth->assign($role, $user->getId()); return $user; } } return null; }
public function successCallback($client) { $attributes = $client->userAttributes; $this->action->successUrl = Yii::$app->session->get('returnUrl'); $key = UserOauthKey::findOne(['provider_id' => $attributes['provider_id'], 'provider_user_id' => $attributes['provider_user_id']]); if ($key) { if (Yii::$app->user->isGuest) { return Yii::$app->user->login($key->user, 3600 * 24 * 30); } else { if ($key->user_id != Yii::$app->user->id) { Yii::$app->session->setFlash('error', 'Данный ключ уже закреплен за другим пользователем сайта.'); return true; } } } else { if (Yii::$app->user->isGuest) { $user = false; if ($attributes['User']['email'] != null) { $user = User::findByEmailOrUserName($attributes['User']['email']); } if (!$user) { $user = new User(); $user->scenario = 'oauth'; $user->load($attributes); $user->username = $this->findFreeUsername($user->username); $user->validate(); return $user->save() && $this->createKey($attributes, $user->id) && Yii::$app->user->login($user, 3600 * 24 * 30); } else { return $this->createKey($attributes, $user->id) && Yii::$app->user->login($user, 3600 * 24 * 30); } } else { $this->createKey($attributes, Yii::$app->user->id); Yii::$app->session->setFlash('success', 'Ключ успешно добавлен.'); return true; } } }