Exemplo n.º 1
0
 public function saveData()
 {
     if ($this->model->load(Yii::$app->request->post())) {
         if (Yii::$app->request->isAjax) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             // perform AJAX validation
             echo ActiveForm::validate($this->model);
             Yii::$app->end();
             return '';
         }
         /** @var User|bool $registeredUser */
         $registeredUser = $this->model->register();
         if ($registeredUser !== false) {
             $module = UsersModule::module();
             // login registered user if there's no need in confirmation
             $shouldLogin = $module->allowLoginInactiveAccounts || $module->emailConfirmationNeeded === false;
             if ($module->emailConfirmationNeeded === true && $registeredUser->is_active) {
                 $shouldLogin = true;
             }
             if ($shouldLogin && $registeredUser->login(UsersModule::module()->loginDuration)) {
                 $returnUrl = Yii::$app->request->get('returnUrl');
                 if ($returnUrl !== null) {
                     return $this->controller->redirect($returnUrl);
                 }
             }
             return $this->controller->goBack();
         }
     }
     return '';
 }
Exemplo n.º 2
0
 /**
  * Validates form and logs the user in.
  *
  * @return bool whether the user is logged in successfully
  */
 public function login()
 {
     $module = UsersModule::module();
     if ($this->validate()) {
         return $this->user->login($this->rememberMe ? $module->loginDuration : 0);
     } else {
         return false;
     }
 }
 public function socialRegistrationScenario(RegistrationForm &$registrationForm, BaseClient &$client)
 {
     if (empty($registrationForm->username)) {
         $registrationForm->generateUsername($client->getUserAttributes());
         $registrationForm->username_is_temporary = true;
     }
     if (empty($registrationForm->password)) {
         $registrationForm->password = PasswordHelper::generate(UsersModule::module()->generatedPasswordLength);
     }
 }
 /**
  * Adds validation rule to not accept inactive users if such feature is toggled on in module configuration.
  *
  * @param \DevGroup\Users\models\LoginForm $loginForm
  *
  * @return array
  */
 protected function inactiveUsers(LoginForm &$loginForm)
 {
     if (UsersModule::module()->allowLoginInactiveAccounts === false) {
         return [];
     }
     return ['username', function ($attribute) use(&$loginForm) {
         if ($loginForm->user !== null && $loginForm->user->is_active === false) {
             $loginForm->addError($attribute, Yii::t('users', 'You need to confirm your email address'));
         }
     }];
 }
 public function socialRegister(BaseClient &$client)
 {
     UsersModule::module()->authorizationScenario()->socialRegistrationScenario($this, $client);
     if (!$this->validate()) {
         return false;
     }
     /** @var User $user */
     $user = Yii::createObject(ModelMapHelper::User());
     $user->setAttributes($this->attributes);
     $user->is_active = true;
     return $user->register();
 }
Exemplo n.º 6
0
 public function authenticate(ClientInterface $client)
 {
     // find existing user by service
     if ($this->userService !== null) {
         /** @var User $user */
         $user = Yii::createObject(ModelMapHelper::User());
         $user = $user->loadModel($this->userService->user_id);
         $user->login(UsersModule::module()->loginDuration);
     } else {
         // no user for this pair
         // this is the most hard part
         // create user
         /** @var SocialServiceInterface|BaseClient $client */
         $client->retrieveAdditionalData();
         /** @var RegistrationForm $registrationForm */
         $registrationForm = Yii::createObject(ModelMapHelper::RegistrationForm());
         $this->mapServiceAttributes($client, $registrationForm);
         $user = $registrationForm->socialRegister($client);
         if ($user === false) {
             throw new ErrorException("Unable to register user");
         }
         $userService = $this->createService();
         if ($user->save() === false) {
             throw new ErrorException("Unable to save user:" . var_export($user->errors, true));
         }
         $user->link('services', $userService);
         // check if we need to run post-registration
         $user->login(UsersModule::module()->loginDuration);
         // check if there's some required or recommended fields missing
         foreach (UsersModule::module()->requiredUserAttributes as $attribute) {
             if (empty($user->{$attribute})) {
                 Yii::$app->session->setFlash('info', Yii::t('users', 'Please fill required profile fields.'));
                 $this->redirectToProfileUpdate();
                 return;
             }
         }
         foreach (UsersModule::module()->recommendedUserAttributes as $attribute) {
             if (empty($user->{$attribute})) {
                 //! @todo Add limitation on UsersModule::recommendedFieldsMaxPrompts
                 Yii::$app->session->setFlash('info', Yii::t('users', 'Please fill recommended profile fields.'));
                 $this->redirectToProfileUpdate();
                 return;
             }
         }
     }
 }
Exemplo n.º 7
0
              <?php 
echo Html::a(Yii::t('users', 'Register'), ['@registration'], ['class' => 'btn-brd-blue g--btn-full registration-form__register-button']);
?>
            </div>
            <div class="m-form__col">
                <?php 
echo Html::a(Yii::t('users', 'Reset Password'), ['@request-reset-password']);
?>
            </div>
        </div>


    </div>

<?php 
if (\DevGroup\Users\UsersModule::module()->enableSocialNetworks === true) {
    ?>
    <div class="login-form__social-networks">
        <div class="m-form__line">
            <div class="m-form__col">
                <div class="title-soc-login"><?php 
    echo Yii::t('users', 'Login using social network');
    ?>
:</div>
            </div>
        </div>
        <div class="m-form__line">
            <div class="m-form__col">
                <?php 
    echo \DevGroup\Users\widgets\SocialNetworksWidget::widget(['baseAuthUrl' => ['@social', 'returnUrl' => RedirectHelper::getReturnUrl()]]);
    ?>
 public function rules()
 {
     return [[['oldPassword', 'newPassword', 'confirmPassword'], 'required'], [['newPassword', 'confirmPassword'], 'string', 'min' => UsersModule::module()->authorizationScenario()->minPasswordLength], [['confirmPassword'], 'compare', 'compareAttribute' => 'newPassword']];
 }
<?php

/** @var \yii\web\View $this */
use DevGroup\Users\UsersModule;
/** @var \DevGroup\Users\models\RegistrationForm $model */
/** @var \yii\bootstrap\ActiveForm $form */
?>

<?php 
foreach (UsersModule::module()->requiredUserAttributes as $attribute) {
    ?>
    <div class="m-form__line">
        <?php 
    echo $form->field($model, $attribute);
    ?>
    </div>
<?php 
}
?>
<div class="m-form__line">
    <?php 
echo $form->field($model, 'password')->passwordInput();
?>
</div>
<div class="m-form__line">
    <?php 
echo $form->field($model, 'confirmPassword')->passwordInput();
?>
</div>
?>
<div class="user-profile-form">
<?php 
$form = ActiveForm::begin($formOptions);
$returnUrl = \DevGroup\Frontend\RedirectHelper::getReturnUrl();
echo Html::hiddenInput('returnUrl', $returnUrl);
$usernameOptions = ['class' => 'user-profile-form__username'];
if ($user->username_is_temporary) {
    $usernameOptions['class'] .= ' input-edit';
    echo $form->field($user, 'username', ['options' => $usernameOptions]);
} else {
    $usernameOptions['class'] .= ' input-stat';
    echo Html::tag('label', $user->getAttributeLabel('username'));
    echo Html::tag('div', $user->username, $usernameOptions);
}
$module = \DevGroup\Users\UsersModule::module();
$attributes = ['email' => true, 'phone' => false];
foreach ($attributes as $attribute => $changeOnlyOnce) {
    if (in_array($attributes, $module->disabledUserAttributes) === false) {
        echo '<div class="m-form__line"><div class="m-form__col">';
        $options = ['class' => "user-profile-form__{$attribute}"];
        if (empty($user->{$attribute}) || $changeOnlyOnce === false) {
            $options['class'] .= ' input-edit';
            echo $form->field($user, $attribute, ['options' => $options]);
        } else {
            $options['class'] .= ' input-stat';
            echo Html::tag('label', $user->getAttributeLabel($attribute));
            echo Html::tag('div', $user->{$attribute}, $options);
        }
        echo "</div></div>";
    }
Exemplo n.º 11
0
 /**
  * Finds out if password reset token is valid
  *
  * @param string $token password reset token
  * @return boolean
  */
 public static function isPasswordResetTokenValid($token)
 {
     if (empty($token)) {
         return false;
     }
     $timestamp = (int) substr($token, strrpos($token, '_') + 1);
     $expire = UsersModule::module()->passwordResetTokenExpire;
     return $timestamp + $expire >= time();
 }
Exemplo n.º 12
0
 /**
  * @return array Returns initiated model map
  */
 public static function modelMap()
 {
     return UsersModule::module()->modelMap;
 }
 public function rules()
 {
     return [[['newPassword'], 'required'], [['newPassword'], 'string', 'min' => UsersModule::module()->authorizationScenario()->minPasswordLength]];
 }