register email field optional

This commit is contained in:
vedatakd 2020-01-31 12:30:12 +03:00
parent df8df0c44b
commit aaba6b08a9
10 changed files with 77 additions and 59 deletions

View File

@ -1,11 +1,15 @@
<?php <?php
use Anomaly\Streams\Platform\Model\Location\LocationCitiesEntryModel;
use Anomaly\Streams\Platform\Model\Location\LocationDistrictsEntryModel;
use Visiosoft\LocationModule\Country\CountryModel;
return [ return [
'register_email_field' => [
'type' => 'anomaly.field_type.boolean',
'config' => [
'default_value' => true,
],
],
'latest-limit' => [ 'latest-limit' => [
'type' => 'anomaly.field_type.integer', 'type' => 'anomaly.field_type.integer',
'config' => [ 'config' => [
@ -13,8 +17,6 @@ return [
'default_value' => 5, 'default_value' => 5,
], ],
], ],
"favicon" => [ "favicon" => [
"type" => "anomaly.field_type.file", "type" => "anomaly.field_type.file",
"config" => [ "config" => [

View File

@ -107,5 +107,7 @@ return [
'google_statistic_code' => [ 'google_statistic_code' => [
'name' => 'Google Statistic Code', 'name' => 'Google Statistic Code',
], ],
'register_email_field' => [
'name' => 'Member Registration Email Requirement',
],
]; ];

View File

@ -21,8 +21,8 @@ return [
], ],
'contact_mail' => [ 'contact_mail' => [
'name' => 'Mail ile iletişime geçin', 'name' => 'Mail ile iletişime geçin',
'warning' => 'Otomatik eklenen sitename <strong>info</strong> @sitename', 'warning' => 'Otomatik eklenen sitename <strong>info</strong> @sitename',
],'map_coordinates_long' => [ ], 'map_coordinates_long' => [
'name' => 'Harita Uzun Koordinat', 'name' => 'Harita Uzun Koordinat',
], ],
'map_coordinates_lat' => [ 'map_coordinates_lat' => [
@ -36,7 +36,7 @@ return [
], ],
'ogImage' => [ 'ogImage' => [
'name' => 'Sosyal Paylaşma Logosu', 'name' => 'Sosyal Paylaşma Logosu',
'warning' => '1200 x 630 çözünürlükte olmalıdır.', 'warning' => '1200 x 630 çözünürlükte olmalıdır.',
], ],
'currencies' => [ 'currencies' => [
@ -47,7 +47,7 @@ return [
], ],
'site_address' => [ 'site_address' => [
'name' => 'Site adresi', 'name' => 'Site adresi',
'warning' => 'Otomatik eklendi www. www. <strong>sitename.com</strong>', 'warning' => 'Otomatik eklendi www. www. <strong>sitename.com</strong>',
], ],
'google_map_key' => [ 'google_map_key' => [
'name' => 'Google Harita Api Anahtarı', 'name' => 'Google Harita Api Anahtarı',
@ -110,5 +110,7 @@ return [
'google_statistic_code' => [ 'google_statistic_code' => [
'name' => 'Google İstatistik Kodu', 'name' => 'Google İstatistik Kodu',
], ],
'register_email_field' => [
'name' => 'Üye Kayıt E-posta Zorunluluğu',
],
]; ];

View File

@ -20,5 +20,6 @@ return [
'not_a_member_yet' => 'Not a Member Yet', 'not_a_member_yet' => 'Not a Member Yet',
'not_a_member_yet_message' => 'Sign up for our members to benefit from our special service', 'not_a_member_yet_message' => 'Sign up for our members to benefit from our special service',
'forgot_password' => 'I Forgot My Password', 'forgot_password' => 'I Forgot My Password',
'email_or_phone_number' => 'Email Address or Phone Number' 'email_or_phone_number' => 'Email Address or Phone Number',
'phone_number' => 'Phone Number',
]; ];

View File

@ -20,5 +20,6 @@ return [
'not_a_member_yet' => 'Henüz Üye Değil Misiniz', 'not_a_member_yet' => 'Henüz Üye Değil Misiniz',
'not_a_member_yet_message' => 'Üyelerimize özel hizmetlerimizden faydalanabilmek için üye olun', 'not_a_member_yet_message' => 'Üyelerimize özel hizmetlerimizden faydalanabilmek için üye olun',
'forgot_password' => 'Şifremi Unuttum', 'forgot_password' => 'Şifremi Unuttum',
'email_or_phone_number' => 'E-Posta Adresiniz veya Telefon Numaranız' 'email_or_phone_number' => 'E-Posta Adresiniz veya Telefon Numaranız',
'phone_number' => 'Telefon Numarası',
]; ];

View File

@ -37,19 +37,36 @@
</div> </div>
</div> </div>
</div> </div>
<div class="col-12"> <div class="col-12">
<div class="form-group email-field email-field_type"> <div class="form-group email-field email-field_type">
<label class="control-label"> <label class="control-label">
{{ trans('visiosoft.theme.base::field.email_or_phone_number') }} {{ trans('visiosoft.theme.base::field.phone_number') }}
<span class="required">*</span> <span class="required">*</span>
</label> </label>
<div class="input-wrapper"> <div class="input-wrapper">
{{ form.fields.email.input|raw }} {{ form.fields.phone.input|raw }}
</div> </div>
</div> </div>
</div> </div>
{% if setting_value('visiosoft.module.advs::register_email_field') %}
<div class="col-12">
<div class="form-group email-field email-field_type">
<label class="control-label">
{{ trans('visiosoft.theme.base::field.email') }}
<span class="required">*</span>
</label>
<div class="input-wrapper">
{{ form.fields.email.input|raw }}
</div>
</div>
</div>
{% else %}
{{ form.fields.email.setValue(random()~"@example.com").setAttributes({
'class' :'hidden',
}).input|raw }}
{% endif %}
<div class="col-12"> <div class="col-12">
<div class="form-group password-field password-field_type"> <div class="form-group password-field password-field_type">
<label class="control-label"> <label class="control-label">

View File

@ -23,5 +23,6 @@ return [
'password_do_not_match' => 'Passwords do not match', 'password_do_not_match' => 'Passwords do not match',
'your_password_changed' => 'Your password was successfully updated', 'your_password_changed' => 'Your password was successfully updated',
'error_valid_email_or_phone' => 'Phone number or E-mail address format is not correct.', 'error_valid_email_or_phone' => 'Phone number or E-mail address format is not correct.',
'error_valid_phone' => 'Phone number format is not correct.',
'registered_phone' => 'This phone number has already been registered.', 'registered_phone' => 'This phone number has already been registered.',
]; ];

View File

@ -38,7 +38,9 @@ class Register2FormBuilder extends FormBuilder
* @var array * @var array
*/ */
protected $fields = [ protected $fields = [
'username', 'username' => [
'required' => true,
],
'first_name' => [ 'first_name' => [
'instructions' => false, 'instructions' => false,
'required' => true, 'required' => true,
@ -47,9 +49,9 @@ class Register2FormBuilder extends FormBuilder
'instructions' => false, 'instructions' => false,
'required' => true, 'required' => true,
], ],
'email' => [ 'phone' => [
'type' => 'anomaly.field_type.text', 'type' => 'anomaly.field_type.text',
'instructions' => false, 'required' => true,
'rules' => [ 'rules' => [
'valid_register', 'valid_register',
], ],
@ -60,6 +62,9 @@ class Register2FormBuilder extends FormBuilder
], ],
], ],
], ],
'email' => [
'instructions' => false,
],
'password' => [ 'password' => [
'instructions' => false, 'instructions' => false,
], ],

View File

@ -1,11 +1,9 @@
<?php namespace Visiosoft\ProfileModule\Profile\Register2; <?php namespace Visiosoft\ProfileModule\Profile\Register2;
use Anomaly\UsersModule\User\Contract\UserInterface; use Anomaly\UsersModule\User\Contract\UserInterface;
use Anomaly\UsersModule\User\Contract\UserRepositoryInterface;
use Anomaly\UsersModule\User\Event\UserHasRegistered; use Anomaly\UsersModule\User\Event\UserHasRegistered;
use Visiosoft\ProfileModule\Profile\ProfileModel; use Visiosoft\ProfileModule\Profile\ProfileModel;
use Visiosoft\ProfileModule\Profile\Register2\Command\HandleAutomaticRegistration;
use Visiosoft\ProfileModule\Profile\Register2\Command\HandleEmailRegistration;
use Visiosoft\ProfileModule\Profile\Register2\Command\HandleManualRegistration;
use Anomaly\UsersModule\User\UserActivator; use Anomaly\UsersModule\User\UserActivator;
use Illuminate\Contracts\Config\Repository; use Illuminate\Contracts\Config\Repository;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
@ -34,6 +32,7 @@ class Register2FormHandler
public function handle( public function handle(
Repository $config, Repository $config,
Dispatcher $events, Dispatcher $events,
UserRepositoryInterface $users,
Register2FormBuilder $builder, Register2FormBuilder $builder,
UserActivator $activator UserActivator $activator
) )
@ -45,43 +44,33 @@ class Register2FormHandler
$profile_parameters = array(); $profile_parameters = array();
/* Create Profile in Register */ /* Create Profile in Register */
if (!filter_var($builder->getPostValue('email'), FILTER_VALIDATE_EMAIL)) { $domain = setting_value('streams::domain');
$domain = str_replace('https://', '', $domain);
$domain = str_replace('http://', '', $domain);
$domain = str_replace('/', '', $domain);
$domain = str_replace('www', '', $domain);
$domain = setting_value('streams::domain'); $profile_parameters['gsm_phone'] = $builder->getPostValue('phone');
if (!setting_value('visiosoft.module.advs::register_email_field')) {
$domain = str_replace('https://', '', $domain); $builder->setFormValue('email', $builder->getPostValue('username') . "@" . $domain);
$domain = str_replace('http://', '', $domain);
$domain = str_replace('/', '', $domain);
$domain = str_replace('www', '', $domain);
$profile_parameters['gsm_phone'] = $builder->getPostValue('email');
$builder->setFormValue('email', $builder->getPostValue('email') . "@" . $domain);
} }
$builder->saveForm(); // Save the new user. $fields = $builder->getPostData();
unset($fields['phone']);
$register = $users->create($fields);
$register->setAttribute('password', $fields['password']);
$users->save($register);
/* @var UserInterface $user */ /* @var UserInterface $user */
$user = $builder->getFormEntry(); $user = $register;
$profile_parameters['user_id'] = $user->getId(); $profile_parameters['user_id'] = $user->getId();
ProfileModel::query()->create($profile_parameters); ProfileModel::query()->create($profile_parameters);
$activator->start($user); $activator->start($user);
$activator->force($user);
$mode = $config->get('anomaly.module.users::config.activation_mode', 'automatic');
switch ($mode) {
case 'automatic':
$this->dispatch(new HandleAutomaticRegistration($builder));
break;
case 'manual':
$this->dispatch(new HandleManualRegistration($builder));
break;
case 'email':
$this->dispatch(new HandleEmailRegistration($builder));
break;
}
$events->dispatch(new UserHasRegistered($user)); $events->dispatch(new UserHasRegistered($user));
} }
} }

View File

@ -7,14 +7,12 @@ class ValidateRegister
{ {
public function handle(FormBuilder $builder, ProfileRepositoryInterface $profileRepository, $attribute, $value) public function handle(FormBuilder $builder, ProfileRepositoryInterface $profileRepository, $attribute, $value)
{ {
if (!filter_var($builder->getPostValue('email'), FILTER_VALIDATE_EMAIL)) { if (!is_numeric($builder->getPostValue('phone'))) {
if (!is_numeric($builder->getPostValue('email'))) { $builder->addFormError('phone', trans('visiosoft.module.profile::message.error_valid_phone'));
$builder->addFormError('email', trans('visiosoft.module.profile::message.error_valid_email_or_phone')); return false;
return false; } elseif (!is_null($profileRepository->findPhoneNumber($builder->getPostValue('phone')))) {
} elseif (!is_null($profileRepository->findPhoneNumber($builder->getPostValue('email')))) { $builder->addFormError('phone', trans('visiosoft.module.profile::message.registered_phone'));
$builder->addFormError('email', trans('visiosoft.module.profile::message.registered_phone')); return false;
return false;
}
} }
return true; return true;
} }