add missing classes to container initialization

This commit is contained in:
Antonio Ramirez
2016-12-11 01:42:11 +01:00
parent 76e49ca1a7
commit d8e517a9d1
6 changed files with 52 additions and 40 deletions

View File

@ -45,31 +45,64 @@ class Bootstrap implements BootstrapInterface
{
$di = Yii::$container;
// events
$di->set(Event\FormEvent::class);
$di->set(Event\ProfileEvent::class);
$di->set(Event\ResetPasswordEvent::class);
$di->set(Event\SocialNetworkAuthEvent::class);
$di->set(Event\SocialNetworkConnectEvent::class);
$di->set(Event\UserEvent::class);
// forms
$di->set(Form\LoginForm::class);
$di->set(Form\RecoveryForm::class);
$di->set(Form\RegistrationForm::class);
$di->set(Form\ResendForm::class);
$di->set(Form\SettingsForm::class);
// helpers
$di->set(Helper\AuthHelper::class);
$di->set(Helper\GravatarHelper::class);
$di->set(Helper\SecurityHelper::class);
// search class
$di->set(Search\UserSearch::class, [$di->get(Query\UserQuery::class)]);
// services
$di->set(Service\AccountConfirmationService::class);
$di->set(Service\EmailChangeService::class);
$di->set(Service\PasswordRecoveryService::class);
$di->set(Service\ResendConfirmationService::class);
$di->set(Service\ResetPasswordService::class);
$di->set(Service\SocialNetworkAccountConnectService::class);
$di->set(Service\SocialNetworkAuthenticateService::class);
$di->set(Service\UserBlockService::class);
$di->set(Service\UserCreateService::class);
$di->set(Service\UserRegisterService::class);
$di->set(Service\UserConfirmationService::class);
// email change strategy
$di->set(Strategy\DefaultEmailChangeStrategy::class);
$di->set(Strategy\InsecureEmailChangeStrategy::class);
$di->set(Strategy\SecureEmailChangeStrategy::class);
// class map + query models
// validators
$di->set(Validator\AjaxRequestModelValidator::class);
$di->set(TimeZoneValidator::class);
// class map models + query classes
$modelClassMap = [];
foreach ($map as $class => $definition) {
$di->set($class, $definition);
$model = is_array($definition) ? $definition['class'] : $definition;
$name = (substr($class, strrpos($class, '\\') + 1));
$modelClassMap[$name] = $model;
if(in_array($name, ['User', 'Profile', 'Token', 'Account'])) {
$modelClassMap[$class] = $model;
if(in_array($name, ['User', 'Profile', 'Token', 'SocialNetworkAccount'])) {
$di->set("Da\\User\\Query\\{$name}Query", function() use ($model) {
return $model::find();
});
}
}
// search class
$di->set(Search\UserSearch::class, [$di->get(Query\UserQuery::class)]);
// helpers
$di->set(Helper\AuthHelper::class);
$di->set(Helper\GravatarHelper::class);
$di->setSingleton(ClassMapHelper::class, ClassMapHelper::class, [$modelClassMap]);
if (php_sapi_name() !== 'cli') {
@ -83,23 +116,6 @@ class Bootstrap implements BootstrapInterface
]
);
}
// services
$di->set(Service\UserCreateService::class);
$di->set(Service\UserRegisterService::class);
$di->set(Service\UserConfirmationService::class);
// events
$di->set(Event\FormEvent::class);
$di->set(Event\ProfileEvent::class);
$di->set(Event\ResetPasswordEvent::class);
$di->set(Event\SocialNetworkAuthEvent::class);
$di->set(Event\SocialNetworkConnectEvent::class);
$di->set(Event\UserEvent::class);
// validators
$di->set(Validator\AjaxRequestModelValidator::class);
$di->set(TimeZoneValidator::class);
}
/**

View File

@ -4,7 +4,7 @@ namespace Da\User\Form;
use Da\User\Model\User;
use Da\User\Traits\ContainerTrait;
use dektrium\user\traits\ModuleTrait;
use Da\User\Traits\ModuleTrait;
use Yii;
use yii\base\Model;
@ -33,13 +33,13 @@ class RegistrationForm extends Model
public function rules()
{
/** @var User $user */
$user = $this->getClassMap()->get(User::class);
$user = $this->getClassMap()->get('User');
return [
// username rules
'usernameLength' => ['username', 'string', 'min' => 3, 'max' => 255],
'usernameTrim' => ['username', 'filter', 'filter' => 'trim'],
'usernamePattern' => ['username', 'match', 'pattern' => $user->usernameRegex],
'usernamePattern' => ['username', 'match', 'pattern' => '/^[-a-zA-Z0-9_\.@]+$/'],
'usernameRequired' => ['username', 'required'],
'usernameUnique' => [
'username',
@ -58,7 +58,7 @@ class RegistrationForm extends Model
'message' => Yii::t('user', 'This email address has already been taken')
],
// password rules
'passwordRequired' => ['password', 'required', 'skipOnEmpty' => $this->module->enableGeneratingPassword],
'passwordRequired' => ['password', 'required', 'skipOnEmpty' => $this->module->generatePasswords],
'passwordLength' => ['password', 'string', 'min' => 6, 'max' => 72],
];
}

View File

@ -138,7 +138,7 @@ class Profile extends ActiveRecord
*/
public function getUser()
{
return $this->hasOne($this->getClassMap()->get(User::class), ['id' => 'user_id']);
return $this->hasOne($this->getClassMap()->get('User'), ['id' => 'user_id']);
}
/**

View File

@ -96,7 +96,7 @@ class SocialNetworkAccount extends ActiveRecord
*/
public function getUser()
{
return $this->hasOne($this->getClassMap()->get(User::class), ['id' => 'user_id']);
return $this->hasOne($this->getClassMap()->get('User'), ['id' => 'user_id']);
}
/**

View File

@ -74,7 +74,7 @@ class Token extends ActiveRecord
*/
public function getUser()
{
return $this->hasOne($this->getClassMap()->get(User::class), ['id' => 'user_id']);
return $this->hasOne($this->getClassMap()->get('User'), ['id' => 'user_id']);
}
/**

View File

@ -47,10 +47,6 @@ class User extends ActiveRecord implements IdentityInterface
const OLD_EMAIL_CONFIRMED = 0b1;
const NEW_EMAIL_CONFIRMED = 0b10;
/**
* @var string default user name regular expression.
*/
public $usernameRegex = '/^[-a-zA-Z0-9_\.@]+$/';
/**
* @var string Plain password. Used for model validation.
*/
@ -143,7 +139,7 @@ class User extends ActiveRecord implements IdentityInterface
return [
// username rules
'usernameRequired' => ['username', 'required', 'on' => ['register', 'create', 'connect', 'update']],
'usernameMatch' => ['username', 'match', 'pattern' => $this->usernameRegex],
'usernameMatch' => ['username', 'match', 'pattern' => '/^[-a-zA-Z0-9_\.@]+$/'],
'usernameLength' => ['username', 'string', 'min' => 3, 'max' => 255],
'usernameTrim' => ['username', 'trim'],
'usernameUnique' => [
@ -242,7 +238,7 @@ class User extends ActiveRecord implements IdentityInterface
*/
public function getProfile()
{
return $this->hasOne($this->getClassMap()->get(Profile::class), ['user_id' => 'id']);
return $this->hasOne($this->getClassMap()->get('Profile'), ['user_id' => 'id']);
}
/**