diff --git a/lib/User/Bootstrap.php b/lib/User/Bootstrap.php index ac75791..efe5a85 100644 --- a/lib/User/Bootstrap.php +++ b/lib/User/Bootstrap.php @@ -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); } /** diff --git a/lib/User/Form/RegistrationForm.php b/lib/User/Form/RegistrationForm.php index 27a0bad..08c4428 100644 --- a/lib/User/Form/RegistrationForm.php +++ b/lib/User/Form/RegistrationForm.php @@ -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], ]; } diff --git a/lib/User/Model/Profile.php b/lib/User/Model/Profile.php index 43c6202..2509b50 100644 --- a/lib/User/Model/Profile.php +++ b/lib/User/Model/Profile.php @@ -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']); } /** diff --git a/lib/User/Model/SocialNetworkAccount.php b/lib/User/Model/SocialNetworkAccount.php index 37efba1..5738956 100644 --- a/lib/User/Model/SocialNetworkAccount.php +++ b/lib/User/Model/SocialNetworkAccount.php @@ -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']); } /** diff --git a/lib/User/Model/Token.php b/lib/User/Model/Token.php index feec772..99d9fbe 100644 --- a/lib/User/Model/Token.php +++ b/lib/User/Model/Token.php @@ -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']); } /** diff --git a/lib/User/Model/User.php b/lib/User/Model/User.php index ae8d1bf..5253f01 100644 --- a/lib/User/Model/User.php +++ b/lib/User/Model/User.php @@ -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']); } /**