mirror of
https://github.com/openclassify/openclassify.git
synced 2026-01-11 18:01:10 -06:00
#4322 ocify.co fixes
This commit is contained in:
parent
a4b2840c78
commit
98b406dbac
@ -0,0 +1,39 @@
|
||||
<?php namespace Visiosoft\ProfileModule\Profile\BasicRegister;
|
||||
|
||||
use Anomaly\Streams\Platform\Ui\Form\FormBuilder;
|
||||
use Anomaly\UsersModule\User\UserModel;
|
||||
|
||||
class BasicRegisterFormBuilder extends FormBuilder
|
||||
{
|
||||
protected $roles = [
|
||||
'user',
|
||||
];
|
||||
|
||||
protected $model = UserModel::class;
|
||||
|
||||
protected $actions = [
|
||||
'blue' => [
|
||||
'text' => 'anomaly.module.users::button.register',
|
||||
],
|
||||
];
|
||||
|
||||
protected $options = [
|
||||
'redirect' => '/',
|
||||
'success_message' => 'anomaly.module.users::success.user_registered',
|
||||
'pending_message' => 'anomaly.module.users::message.pending_admin_activation',
|
||||
'confirm_message' => 'anomaly.module.users::message.pending_email_activation',
|
||||
'activated_message' => 'anomaly.module.users::message.account_activated',
|
||||
];
|
||||
|
||||
public function getRoles()
|
||||
{
|
||||
return $this->roles;
|
||||
}
|
||||
|
||||
public function setRoles($roles)
|
||||
{
|
||||
$this->roles = $roles;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,83 @@
|
||||
<?php namespace Visiosoft\ProfileModule\Profile\BasicRegister;
|
||||
|
||||
use Visiosoft\ProfileModule\Profile\Validation\ValidateRegister;
|
||||
use Visiosoft\ProfileModule\Rules\ReCaptchaRule;
|
||||
|
||||
class BasicRegisterFormFields
|
||||
{
|
||||
public function handle(BasicRegisterFormBuilder $builder)
|
||||
{
|
||||
$captchaSiteKey = setting_value('visiosoft.module.profile::google_captcha_site_key');
|
||||
$captchaSecretKey = setting_value('visiosoft.module.profile::google_captcha_secret_key');
|
||||
|
||||
$register = [];
|
||||
if ($captchaSiteKey && $captchaSecretKey) {
|
||||
$register = [
|
||||
'recaptcha_token' => [
|
||||
'required' => true,
|
||||
'type' => 'anomaly.field_type.text',
|
||||
'config' => [
|
||||
"max" => 0,
|
||||
],
|
||||
'rules' => [
|
||||
'valid_recaptcha'
|
||||
],
|
||||
'validators' => [
|
||||
'valid_recaptcha' => [
|
||||
'message' => false,
|
||||
'handler' => ReCaptchaRule::class
|
||||
]
|
||||
]
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
if (setting_value('visiosoft.module.profile::show_checkbox_terms_on_register')) {
|
||||
$register = array_merge($register, [
|
||||
"accept_protection_law" => [
|
||||
'required' => true,
|
||||
"type" => "anomaly.field_type.boolean",
|
||||
"config" => [
|
||||
"default_value" => false,
|
||||
"mode" => "checkbox",
|
||||
"label" => 'visiosoft.module.profile::field.accept_protection_law_label',
|
||||
]
|
||||
],
|
||||
"accept_privacy_terms" => [
|
||||
'required' => true,
|
||||
"type" => "anomaly.field_type.boolean",
|
||||
"config" => [
|
||||
"default_value" => false,
|
||||
"mode" => "checkbox",
|
||||
"label" => 'visiosoft.module.profile::field.accept_privacy_terms_label',
|
||||
]
|
||||
],
|
||||
"receive_sms_emails" => [
|
||||
"type" => "anomaly.field_type.boolean",
|
||||
"config" => [
|
||||
"default_value" => false,
|
||||
"mode" => "checkbox",
|
||||
"label" => 'visiosoft.module.profile::field.receive_sms_emails_label',
|
||||
]
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
$builder->setFields(
|
||||
array_merge(
|
||||
$register,
|
||||
[
|
||||
'username' => [
|
||||
'required' => true,
|
||||
],
|
||||
'email' => [
|
||||
'instructions' => false,
|
||||
],
|
||||
'password' => [
|
||||
'instructions' => false,
|
||||
],
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,87 @@
|
||||
<?php namespace Visiosoft\ProfileModule\Profile\BasicRegister;
|
||||
|
||||
use Anomaly\UsersModule\Role\Command\GetRole;
|
||||
use Anomaly\UsersModule\User\Contract\UserInterface;
|
||||
use Anomaly\UsersModule\User\Contract\UserRepositoryInterface;
|
||||
use Anomaly\UsersModule\User\Event\UserHasRegistered;
|
||||
use Anomaly\UsersModule\User\UserActivator;
|
||||
use Illuminate\Contracts\Events\Dispatcher;
|
||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||
use Visiosoft\ProfileModule\Profile\BasicRegister\Command\HandleAutomaticRegistration;
|
||||
use Visiosoft\ProfileModule\Profile\BasicRegister\Command\HandleEmailRegistration;
|
||||
use Visiosoft\ProfileModule\Profile\BasicRegister\Command\HandleManualRegistration;
|
||||
|
||||
class BasicRegisterFormHandler
|
||||
{
|
||||
use DispatchesJobs;
|
||||
|
||||
public function handle(
|
||||
Dispatcher $events,
|
||||
UserRepositoryInterface $users,
|
||||
BasicRegisterFormBuilder $builder,
|
||||
UserActivator $activator
|
||||
)
|
||||
{
|
||||
if (!$builder->canSave()) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* Create Profile in Register */
|
||||
$domain = setting_value('streams::domain');
|
||||
$domain = str_replace('https://', '', $domain);
|
||||
$domain = str_replace('http://', '', $domain);
|
||||
$domain = str_replace('/', '', $domain);
|
||||
$domain = str_replace('www', '', $domain);
|
||||
|
||||
if (!setting_value('visiosoft.module.advs::register_email_field')) {
|
||||
$builder->setFormValue('email', $builder->getPostValue('username') . "@" . $domain);
|
||||
}
|
||||
|
||||
$fields = $builder->getPostData();
|
||||
$fields['display_name'] = $fields['username'];
|
||||
$fields['gsm_phone'] = $builder->getPostValue('phone');
|
||||
unset(
|
||||
$fields['phone'],
|
||||
$fields['accept_protection_law'],
|
||||
$fields['accept_privacy_terms'],
|
||||
$fields['receive_sms_emails'],
|
||||
$fields['recaptcha_token']
|
||||
);
|
||||
|
||||
$register = $users->create($fields);
|
||||
$register->setAttribute('password', $fields['password']);
|
||||
$users->save($register);
|
||||
|
||||
/* @var UserInterface $user */
|
||||
$user = $register;
|
||||
$builder->setFormEntry($register);
|
||||
|
||||
$activator->start($user);
|
||||
|
||||
$mode = config('anomaly.module.users::config.activation_mode', 'automatic');
|
||||
|
||||
switch ($mode) {
|
||||
case 'automatic':
|
||||
dispatch_now(new HandleAutomaticRegistration($builder));
|
||||
break;
|
||||
|
||||
case 'manual':
|
||||
dispatch_now(new HandleManualRegistration($builder));
|
||||
break;
|
||||
|
||||
case 'email':
|
||||
dispatch_now(new HandleEmailRegistration($builder));
|
||||
break;
|
||||
}
|
||||
|
||||
$user = $builder->getFormEntry();
|
||||
|
||||
foreach ($builder->getRoles() as $role) {
|
||||
if ($role = $this->dispatch(new GetRole($role))) {
|
||||
$user->attachRole($role);
|
||||
}
|
||||
}
|
||||
|
||||
$events->dispatch(new UserHasRegistered($user));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,37 @@
|
||||
<?php namespace Visiosoft\ProfileModule\Profile\BasicRegister\Command;
|
||||
|
||||
use Anomaly\UsersModule\User\Contract\UserRepositoryInterface;
|
||||
use Anomaly\UsersModule\User\UserActivator;
|
||||
use Anomaly\UsersModule\User\UserAuthenticator;
|
||||
use Illuminate\Contracts\Encryption\Encrypter;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class HandleActivateRequest
|
||||
{
|
||||
public function handle(
|
||||
UserRepositoryInterface $users,
|
||||
UserAuthenticator $authenticator,
|
||||
UserActivator $activator,
|
||||
Encrypter $encrypter,
|
||||
Request $request
|
||||
)
|
||||
{
|
||||
if (!$code = $request->get('code')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$email = $request->get('email')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$user = $users->findByEmail($encrypter->decrypt($email))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($activated = $activator->activate($user, $encrypter->decrypt($code))) {
|
||||
$authenticator->login($user);
|
||||
}
|
||||
|
||||
return $activated;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
<?php namespace Visiosoft\ProfileModule\Profile\BasicRegister\Command;
|
||||
|
||||
use Anomaly\Streams\Platform\Message\MessageBag;
|
||||
use Anomaly\UsersModule\User\Contract\UserInterface;
|
||||
use Visiosoft\ProfileModule\Profile\BasicRegister\BasicRegisterFormBuilder;
|
||||
use Anomaly\UsersModule\User\UserActivator;
|
||||
use Anomaly\UsersModule\User\UserAuthenticator;
|
||||
|
||||
class HandleAutomaticRegistration
|
||||
{
|
||||
protected $builder;
|
||||
|
||||
public function __construct(BasicRegisterFormBuilder $builder)
|
||||
{
|
||||
$this->builder = $builder;
|
||||
}
|
||||
|
||||
public function handle(UserAuthenticator $authenticator, UserActivator $activator, MessageBag $messages)
|
||||
{
|
||||
/* @var UserInterface $user */
|
||||
$user = $this->builder->getFormEntry();
|
||||
|
||||
$activator->force($user);
|
||||
$authenticator->login($user);
|
||||
|
||||
if (!is_null($message = $this->builder->getFormOption('activated_message'))) {
|
||||
$messages->info($message);
|
||||
}
|
||||
|
||||
$messages->success('anomaly.module.users::message.logged_in');
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
<?php namespace Visiosoft\ProfileModule\Profile\BasicRegister\Command;
|
||||
|
||||
use Anomaly\UsersModule\User\UserActivator;
|
||||
use Anomaly\Streams\Platform\Message\MessageBag;
|
||||
use Anomaly\UsersModule\User\Contract\UserInterface;
|
||||
use Visiosoft\ProfileModule\Profile\BasicRegister\BasicRegisterFormBuilder;
|
||||
|
||||
class HandleEmailRegistration
|
||||
{
|
||||
protected $builder;
|
||||
|
||||
public function __construct(BasicRegisterFormBuilder $builder)
|
||||
{
|
||||
$this->builder = $builder;
|
||||
}
|
||||
|
||||
public function handle(UserActivator $activator, MessageBag $messages)
|
||||
{
|
||||
/* @var UserInterface $user */
|
||||
$user = $this->builder->getFormEntry();
|
||||
|
||||
$activator->send($user, $this->builder->getFormOption('activate_redirect', '/'));
|
||||
|
||||
if (!is_null($message = $this->builder->getFormOption('confirm_message'))) {
|
||||
$messages->info($message);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
<?php namespace Visiosoft\ProfileModule\Profile\BasicRegister\Command;
|
||||
|
||||
use Anomaly\Streams\Platform\Message\MessageBag;
|
||||
use Anomaly\UsersModule\User\Contract\UserInterface;
|
||||
use Anomaly\UsersModule\User\Notification\UserPendingActivation;
|
||||
use Visiosoft\ProfileModule\Profile\BasicRegister\BasicRegisterFormBuilder;
|
||||
use Illuminate\Contracts\Config\Repository;
|
||||
use Illuminate\Notifications\AnonymousNotifiable;
|
||||
|
||||
class HandleManualRegistration
|
||||
{
|
||||
protected $builder;
|
||||
|
||||
public function __construct(BasicRegisterFormBuilder $builder)
|
||||
{
|
||||
$this->builder = $builder;
|
||||
}
|
||||
|
||||
public function handle(MessageBag $messages, Repository $config)
|
||||
{
|
||||
if (!is_null($message = $this->builder->getFormOption('pending_message'))) {
|
||||
$messages->info($message);
|
||||
}
|
||||
|
||||
/* @var UserInterface $user */
|
||||
$user = $this->builder->getFormEntry();
|
||||
|
||||
$recipients = $config->get('anomaly.module.users::notifications.pending_user', []);
|
||||
|
||||
foreach ($recipients as $email) {
|
||||
(new AnonymousNotifiable)
|
||||
->route('mail', $email)
|
||||
->notify(
|
||||
new UserPendingActivation($user)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -16,6 +16,7 @@ use Visiosoft\ProfileModule\Education\EducationModel;
|
||||
use Visiosoft\ProfileModule\Education\EducationRepository;
|
||||
use Visiosoft\ProfileModule\Http\Middleware\authCheck;
|
||||
use Visiosoft\ProfileModule\Http\Middleware\OGImage;
|
||||
use Visiosoft\ProfileModule\Profile\BasicRegister\BasicRegisterFormBuilder;
|
||||
use Visiosoft\ProfileModule\Profile\Password\ForgotPassFormBuilder;
|
||||
use Visiosoft\ProfileModule\Profile\Password\PasswordFormBuilder;
|
||||
use Visiosoft\ProfileModule\Profile\Profile\ProfileFormBuilder;
|
||||
@ -144,6 +145,7 @@ class ProfileModuleServiceProvider extends AddonServiceProvider
|
||||
AdressRepositoryInterface::class => AdressRepository::class,
|
||||
EducationRepositoryInterface::class => EducationRepository::class,
|
||||
'register2' => Register2FormBuilder::class,
|
||||
'basic_register' => BasicRegisterFormBuilder::class,
|
||||
'forgot_pass' => ForgotPassFormBuilder::class,
|
||||
];
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user