/** * Finds user by auth0 authenticated user * * @return User|null */ public function getUser() { $auth0Data = Yii::$app->getModule('auth0')->auth0->getUser(); if ($this->_user === false) { $this->_user = User::findByAuth0($auth0Data); } return $this->_user; }
/** * @param string $userId * @return mixed */ public function actionRemoveTenant($userId, $tenantId = null) { if (!isset($tenantId)) { $tenant = Yii::$app->tenant->identity; } else { $tenant = Tenant::findOne($tenantId); } $model = ApiUser::findOne($userId); if ($model) { $data = ['app_metadata' => $model['app_metadata']]; unset($data['app_metadata']['permissions'][Yii::$app->getModule('auth0')->serviceId][$tenant->name]); if ($this->update($userId, $data)) { $user = User::findByAuth0($model); $tenantUser = TenantUser::findByTenantUser($tenant, $user); $tenantUser->delete(); $msg = 'Successfully removed the selected user from the current tenant'; return $this->goBack(); } } throw new HttpException(404, 'The requested user cannot be found.'); }
/** * @return $mixed Return false on error */ public static function createFromAuth0($auth0Data) { // check is email taken $query = User::find()->andWhere(['email' => $auth0Data['email']]); if ($query->exists()) { $model = $query->one(); $auth = new Auth(['user_id' => $model->id, 'source' => 'auth0', 'source_id' => (string) $auth0Data['user_id']]); if ($auth->save()) { return $model; } print_r($auth->getErrors()); return false; } else { $model = new self(['username' => $auth0Data['nickname'], 'email' => $auth0Data['email'], 'password' => Yii::$app->security->generateRandomString(6)]); $model->generateAuthKey(); $model->generatePasswordResetToken(); $transaction = $model->getDb()->beginTransaction(); if ($model->save()) { $auth = new Auth(['user_id' => $model->id, 'source' => 'auth0', 'source_id' => (string) $auth0Data['user_id']]); if ($auth->save()) { $transaction->commit(); return $model; } print_r($auth->getErrors()); return false; } print_r($user->getErrors()); return false; } }
/** * @return \yii\db\ActiveQuery */ public function getUser() { return $this->hasOne(User::className(), ['id' => 'user_id']); }