Помогите пожалуйста новичку c Yii2-user
-
- Сообщения: 101
- Зарегистрирован: 2012.06.05, 14:32
- Откуда: Петрозаводск
- Контактная информация:
Re: Помогите пожалуйста новичку c Yii2-user
Не очень понял, что значит назначать по-умолчанию. Если вы имеете ввиду - назначать роли как описано в документации к yii2, то да, надо делать по документации.
P.S. В течение месяца постараюсь добавить в модуль управление ролями и их привязкой к пользователям
P.S. В течение месяца постараюсь добавить в модуль управление ролями и их привязкой к пользователям
Re: Помогите пожалуйста новичку c Yii2-user
Спасибо, буду следить
Re: Помогите пожалуйста новичку c Yii2-user
Все отлично получается есть только один нюанс
Когда переопределяю action он не хочет воспринимать из переопределяющего и берет из переопределяяемого.
И выдает ошибку не существование confirmable.
Так все хорошо, но очень не хочется делать это изменение в виджете
Код: Выделить всё
public function beforeAction($action)
{
if (parent::beforeAction($action)) {
//if (!$this->module->confirmable && in_array($action->id, ['confirm', 'resend'])) {
if (!\Yii::$app->getModule('user')->confirmable && in_array($action->id, ['confirm', 'resend'])) { //надо как-то избежать этого изменения
throw new NotFoundHttpException('Disabled by administrator');
}
return true;
} else {
return false;
}
}
И выдает ошибку не существование confirmable.
Так все хорошо, но очень не хочется делать это изменение в виджете
-
- Сообщения: 101
- Зарегистрирован: 2012.06.05, 14:32
- Откуда: Петрозаводск
- Контактная информация:
Re: Помогите пожалуйста новичку c Yii2-user
Не очень понимаю, в чем заключается ваша проблема. Приведите полностью код контроллера и опишите, что вы пытаетесь сделать.
Re: Помогите пожалуйста новичку c Yii2-user
это контроллер виджета
я его переопределяю
пытаюсь перебить action
но он его не принимает и берет из основного. Тогда приходится делать изменения в контроллере виджета
ошибка на то что такого свойства не существует (confirmable).
Код: Выделить всё
<?php
/*
* This file is part of the Dektrium project.
*
* (c) Dektrium project <http://github.com/dektrium/>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace dektrium\user\controllers;
use yii\web\Controller;
use yii\filters\AccessControl;
use yii\web\NotFoundHttpException;
/**
* Controller that manages user registration process.
*
* @property \dektrium\user\Module $module
*
* @author Dmitry Erofeev <dmeroff@gmail.com>
*/
class RegistrationController extends Controller
{
/**
* @inheritdoc
*/
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'actions' => ['register', 'connect'],
'roles' => ['?']
],
[
'allow' => true,
'actions' => ['confirm', 'resend'],
'roles' => ['?', '@']
],
]
],
];
}
/**
* @inheritdoc
*/
public function beforeAction($action)
{
if (parent::beforeAction($action)) {
if (!$this->module->confirmable && in_array($action->id, ['confirm', 'resend'])) {
throw new NotFoundHttpException('Disabled by administrator');
}
return true;
} else {
return false;
}
}
/**
* Displays the registration page.
*
* @return string
*/
public function actionRegister()
{
$model = $this->module->manager->createUser(['scenario' => 'register']);
if ($model->load(\Yii::$app->getRequest()->post()) && $model->register()) {
return $this->render('success', [
'model' => $model
]);
}
return $this->render('register', [
'model' => $model
]);
}
public function actionConnect($account_id)
{
$account = $this->module->manager->findAccountById($account_id);
if ($account === null || $account->getIsConnected()) {
throw new NotFoundHttpException('Something went wrong');
}
$this->module->confirmable = false;
$model = $this->module->manager->createUser(['scenario' => 'connect']);
if ($model->load($_POST) && $model->create()) {
$account->user_id = $model->id;
$account->save(false);
\Yii::$app->user->login($model, $this->module->rememberFor);
$this->goBack();
}
return $this->render('connect', [
'model' => $model,
'account' => $account
]);
}
/**
* Confirms user's account.
*
* @param $id
* @param $token
* @return string
* @throws \yii\web\HttpException
*/
public function actionConfirm($id, $token)
{
$user = $this->module->manager->findUserByIdAndConfirmationToken($id, $token);
if ($user === null || !$user->confirm()) {
return $this->render('invalidToken');
}
return $this->render('finish');
}
/**
* Displays page where user can request new confirmation token.
*
* @return string
*/
public function actionResend()
{
$model = $this->module->manager->createResendForm();
if ($model->load(\Yii::$app->getRequest()->post()) && $model->validate()) {
$model->getUser()->resend();
return $this->render('success', [
'model' => $model
]);
}
return $this->render('resend', [
'model' => $model
]);
}
}
Код: Выделить всё
<?php
namespace app\controllers;
use app\models\authorization\Signup;
use Yii;
use dektrium\user\controllers\RegistrationController as BaseRegistrationController;
use app\models\table\Country;
use app\models\table\TopUser;
use app\models\table\Destinations;
/**
* Controller that manages user registration process.
*
*/
class RegistrationController extends BaseRegistrationController
{
public function actions()
{
$this->layout = 'login';
return [
'captcha' => [
'class' => 'yii\captcha\CaptchaAction',
],
];
}
/**
* @inheritdoc
*/
public function beforeAction($action)
{
if (parent::beforeAction($action)) {
if (!\Yii::$app->getModule('user')->confirmable && in_array($action->id, ['confirm', 'resend'])) {
throw new NotFoundHttpException('Disabled by administrator');
}
return true;
} else {
return false;
}
}
/**
* Displays the registration page.
*
* @return string
*/
public function actionRegister()
{
$model = \Yii::$app->getModule('user')->manager->createUser(['scenario' => 'register']);
if ($model->load(\Yii::$app->getRequest()->post())) && $model->register()) {
return $this->render('success', [
'model' => $model
]);
}
return $this->render('register', [
'model' => $model,
'country' => $arrayCountry,
'user' => $arrayUser,
'destinations' => $destinations
]);
}
/**
* Displays page where user can request new confirmation token.
*
* @return string
*/
public function actionResend()
{
$model = \Yii::$app->getModule('user')->manager->createResendForm();
if ($model->load(\Yii::$app->getRequest()->post()) && $model->validate()) {
$model->getUser()->resend();
return $this->render('success', [
'model' => $model
]);
}
return $this->render('resend', [
'model' => $model
]);
}
/**
* Confirms user's account.
*
* @param $id
* @param $token
* @return string
* @throws \yii\web\HttpException
*/
public function actionConfirm($id, $token)
{
$user = \Yii::$app->getModule('user')->manager->findUserByIdAndConfirmationToken($id, $token);
if ($user === null || !$user->confirm()) {
return $this->render('invalidToken');
}
return $this->render('finish');
}
}
Код: Выделить всё
/**
* @inheritdoc
*/
public function beforeAction($action)
{
if (parent::beforeAction($action)) {
//if (!$this->module->confirmable && in_array($action->id, ['confirm', 'resend'])) {
if (!\Yii::$app->getModule('user')->confirmable && in_array($action->id, ['confirm', 'resend'])) {
throw new NotFoundHttpException('Disabled by administrator');
}
return true;
} else {
return false;
}
}
Код: Выделить всё
/**
* @inheritdoc
*/
public function beforeAction($action)
{
if (parent::beforeAction($action)) {
//if (!$this->module->confirmable && in_array($action->id, ['confirm', 'resend'])) {
if (!\Yii::$app->getModule('user')->confirmable && in_array($action->id, ['confirm', 'resend'])) { //надо как-то избежать этого изменения
throw new NotFoundHttpException('Disabled by administrator');
}
return true;
} else {
return false;
}
}
Re: Помогите пожалуйста новичку c Yii2-user
яж написал в чем проблема он контроллер в конфиге прописывает у апп, а надо у модуля, вообще в контроллере надо проверку делать на этот счет
https://github.com/dektrium/yii2-user/pull/101
https://github.com/dektrium/yii2-user/pull/101
-
- Сообщения: 101
- Зарегистрирован: 2012.06.05, 14:32
- Откуда: Петрозаводск
- Контактная информация:
Re: Помогите пожалуйста новичку c Yii2-user
@lynicidn Да, похоже вы правы. Если бы контроллеры были сконфигурированы правильно, то module в контроллерах устанавливался бы в dektrium\user\Module.
@hrupin покажите еще раз конфиг. При правильном конфигурировании ваших ошибок быть не должно.
@hrupin покажите еще раз конфиг. При правильном конфигурировании ваших ошибок быть не должно.
-
- Сообщения: 101
- Зарегистрирован: 2012.06.05, 14:32
- Откуда: Петрозаводск
- Контактная информация:
Re: Помогите пожалуйста новичку c Yii2-user
Все, я понял в чем ваша проблема. Вы обращаетесь к переопределенным контроллерам так: mysite/index.php?r=security/login, а нужно mysite/index.php?r=user/security/login.
То есть вы теряете имя модуля при обращении к ним.
Лучше даже, наверное, вынести эти контроллеры из неймпспейса app\controllers в, например, app\user, чтобы невозможно было обращаться к ним через index.php?r=security/login.
То есть вы теряете имя модуля при обращении к ним.
Лучше даже, наверное, вынести эти контроллеры из неймпспейса app\controllers в, например, app\user, чтобы невозможно было обращаться к ним через index.php?r=security/login.
Re: Помогите пожалуйста новичку c Yii2-user
мой config
А как мне сделать так что бы обращаясь по адресу ?r=user/security/login получить ?r=security/login. Просто я там сделал необходимые изменения.
Или надо вносить изменения в yii2-user?
Код: Выделить всё
<?php
$params = require(__DIR__ . '/params.php');
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'components' => [
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => '3LhzBk4mWrBMg5K9rUZsgtFPKhu7a9kJ',
],
'cache' => [
'class' => 'yii\caching\FileCache',
],
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
],
'errorHandler' => [
'errorAction' => 'site/error',
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'db' => require(__DIR__ . '/db.php'),
],
'modules' => [
'user' => [
'class' => 'dektrium\user\Module',
'allowUnconfirmedLogin' => true,
'confirmWithin' => 21600,
'cost' => 12,
'admins' => ['admin','Sashasj'],
'components' => [
'manager' => [
'userClass' => 'app\models\User',
'loginFormClass' => 'app\models\authorization\LoginForm',
'recoveryFormClass' => 'app\models\authorization\RecoveryForm',
'recoveryRequestFormClass' => 'app\models\authorization\RecoveryRequestForm',
'resendFormClass' => 'app\models\authorization\ResendForm',
],
],
'controllerMap' => [
'registration' => 'app\controllers\RegistrationController'
],
],
],
'params' => $params,
];
if (YII_ENV_DEV) {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = 'yii\debug\Module';
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = 'yii\gii\Module';
}
return $config;
Или надо вносить изменения в yii2-user?
-
- Сообщения: 101
- Зарегистрирован: 2012.06.05, 14:32
- Откуда: Петрозаводск
- Контактная информация:
Re: Помогите пожалуйста новичку c Yii2-user
Не надо вносить никаких изменений кроме controllerMap. Когда вы добавляете в controllerMap строку 'registration' => 'app\controllers\RegistrationController', модуль начинает использовать ваш контроллер, поэтому вы должны обращаться к нему используя ?r=user/security/login
Re: Помогите пожалуйста новичку c Yii2-user
я так понимаю надо еще настроить views, а как настроить config/web.php? Помогите пожалуйста
-
- Сообщения: 101
- Зарегистрирован: 2012.06.05, 14:32
- Откуда: Петрозаводск
- Контактная информация:
Re: Помогите пожалуйста новичку c Yii2-user
У вас в конфиге все правильно настроено, просто обращайтесь к index.php?r=user/registration/register. Как переопределять представления написано в документации.
Re: Помогите пожалуйста новичку c Yii2-user
Он требует какой-то класс
а какой класс надо указывать?
Код: Выделить всё
The configuration for the "view" component must contain a "class" element.
Re: Помогите пожалуйста новичку c Yii2-user
Получилось, спасибо большое. Сам бы навряд ли разобрался бы.
Re: Помогите пожалуйста новичку c Yii2-user
Опять завис(((. Почему то не хочет брать layout
настройки config/web.php
Код: Выделить всё
The view file does not exist: /home/sandro/www/cabinet.cluboninc.com/vendor/dektrium/yii2-user/views/layouts/login.php
Код: Выделить всё
<?php
$params = require(__DIR__ . '/params.php');
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'components' => [
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => '3LhzBk4mWrBMg5K9rUZsgtFPKhu7a9kJ',
],
'cache' => [
'class' => 'yii\caching\FileCache',
],
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
],
'errorHandler' => [
'errorAction' => 'site/error',
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'db' => require(__DIR__ . '/db.php'),
],
'modules' => [
'user' => [
'class' => 'dektrium\user\Module',
'allowUnconfirmedLogin' => true,
'confirmWithin' => 21600,
'cost' => 12,
'admins' => ['admin'],
'components' => [
'view' => [
'class' => 'yii\web\View',
'theme' => [
'pathMap' => [
'@dektrium/user/views' => '@app/views'
],
],
],
'manager' => [
'userClass' => 'app\models\User',
'loginFormClass' => 'app\models\authorization\LoginForm',
'recoveryFormClass' => 'app\models\authorization\RecoveryForm',
'recoveryRequestFormClass' => 'app\models\authorization\RecoveryRequestForm',
'resendFormClass' => 'app\models\authorization\ResendForm',
],
],
'controllerMap' => [
'registration' => 'app\user\RegistrationController',
'security' => 'app\user\SecurityController'
],
],
],
'params' => $params,
];
if (YII_ENV_DEV) {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = 'yii\debug\Module';
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = 'yii\gii\Module';
}
return $config;
Re: Помогите пожалуйста новичку c Yii2-user
Все разобрался. Получается вид надо прописывать не модулю, а в основном components.
Re: Помогите пожалуйста новичку c Yii2-user
YII2 Самый лучший фреймворк)))
- mogilka
- Сообщения: 21
- Зарегистрирован: 2013.01.19, 12:43
- Откуда: Казахстан, Алматы
- Контактная информация:
Re: Помогите пожалуйста новичку c Yii2-user
Мне тоже помогите плиз разобраться, расширение установлено, миграция выполнена, но после регистрации не могу залогиниться
Автологин настроен
Модуль тоже
Пользователь зарегистрировался, в базе сохранился, но после действия sign in значение Yii::$app->user->identity пусто
Автологин настроен
Код: Выделить всё
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true
],
Код: Выделить всё
'user' => [
'class' => 'dektrium\user\Module',
'admins' => ['admin'],
"enableConfirmation"=>false,
"enableUnconfirmedLogin"=>true
]
- mogilka
- Сообщения: 21
- Зарегистрирован: 2013.01.19, 12:43
- Откуда: Казахстан, Алматы
- Контактная информация:
Re: Помогите пожалуйста новичку c Yii2-user
Такая же беда с регистрацией по умолчанию, когда конфиг выглядит так:
Письмо приходит, регистрация успешно подтверждается, при этом в меню даже написано Sign out (user), но при переходе на другую страницу в меню опять Sign In. И при попытке войти в этот акаунт опять открывается форма входа. Пробовала с разными юзерами, даже переустановила yii вместе с расширением. Не работает вход пользователя
Код: Выделить всё
'user' => [
'class' => 'dektrium\user\Module',
]