Various changes to support the removed old code.

This commit is contained in:
James Cole 2014-11-11 21:09:56 +01:00
parent f08fcc36fb
commit 5cb9907bf8
10 changed files with 266 additions and 40 deletions

View File

@ -19,14 +19,6 @@ class HomeController extends BaseController
$this->_preferences = $preferences; $this->_preferences = $preferences;
} }
public function jobDev()
{
$fullName = storage_path() . DIRECTORY_SEPARATOR . 'firefly-export-2014-07-23.json';
\Log::notice('Pushed start job.');
Queue::push('Firefly\Queue\Import@start', ['file' => $fullName, 'user' => 1]);
}
/* /*
* *
*/ */

View File

@ -1,8 +1,5 @@
<?php <?php
use Firefly\Helper\Email\EmailHelperInterface as EHI;
use Firefly\Storage\User\UserRepositoryInterface as URI;
/** /**
* Class UserController * Class UserController
*/ */
@ -11,15 +8,9 @@ class UserController extends BaseController
/** /**
* Constructor. * Constructor.
*
* @param URI $user
* @param EHI $email
*/ */
public function __construct(URI $user, EHI $email) public function __construct()
{ {
$this->user = $user;
$this->email = $email;
} }
/** /**
@ -84,14 +75,25 @@ class UserController extends BaseController
if (Config::get('auth.allow_register') !== true) { if (Config::get('auth.allow_register') !== true) {
return View::make('error')->with('message', 'Not possible'); return View::make('error')->with('message', 'Not possible');
} }
$user = $this->user->register(Input::all());
/** @var \FireflyIII\Database\User $repository */
$repository = App::make('FireflyIII\Database\User');
/** @var \FireflyIII\Shared\Mail\RegistrationInterface $email */
$email = App::make('FireflyIII\Shared\Mail\RegistrationInterface');
$user = $repository->register(Input::all());
//$user = $this->user->register(Input::all());
if ($user) { if ($user) {
if (Config::get('auth.verify_mail') === true) { if (Config::get('auth.verify_mail') === true) {
$this->email->sendVerificationMail($user); $email->sendVerificationMail($user);
return View::make('user.verification-pending'); return View::make('user.verification-pending');
} }
$this->email->sendPasswordMail($user); $email->sendPasswordMail($user);
return View::make('user.registered'); return View::make('user.registered');
} }
@ -130,18 +132,26 @@ class UserController extends BaseController
*/ */
public function postRemindme() public function postRemindme()
{ {
$user = $this->user->findByEmail(Input::get('email'));
/** @var \FireflyIII\Database\User $repository */
$repository = App::make('FireflyIII\Database\User');
/** @var \FireflyIII\Shared\Mail\RegistrationInterface $email */
$email = App::make('FireflyIII\Shared\Mail\RegistrationInterface');
$user = $repository->findByEmail(Input::get('email'));
if (!$user) { if (!$user) {
Session::flash('error', 'No good!'); Session::flash('error', 'No good!');
return View::make('user.remindme'); return View::make('user.remindme');
} }
if (Config::get('auth.verify_reset') === true) { if (Config::get('auth.verify_reset') === true) {
$this->email->sendResetVerification($user); $email->sendResetVerification($user);
return View::make('user.verification-pending'); return View::make('user.verification-pending');
} }
$this->email->sendPasswordMail($user); $email->sendPasswordMail($user);
return View::make('user.registered'); return View::make('user.registered');
@ -156,9 +166,16 @@ class UserController extends BaseController
*/ */
public function reset($reset) public function reset($reset)
{ {
$user = $this->user->findByReset($reset);
/** @var \FireflyIII\Database\User $repository */
$repository = App::make('FireflyIII\Database\User');
/** @var \FireflyIII\Shared\Mail\RegistrationInterface $email */
$email = App::make('FireflyIII\Shared\Mail\RegistrationInterface');
$user = $repository->findByReset($reset);
if ($user) { if ($user) {
$this->email->sendPasswordMail($user); $email->sendPasswordMail($user);
return View::make('user.registered'); return View::make('user.registered');
} }

View File

@ -0,0 +1,57 @@
<?php
namespace FireflyIII\Database;
/**
* Class User
* @package FireflyIII\Database
*/
class User
{
/**
* @param array $data
* @return bool|\User
*/
public function register(array $data)
{
$user = new \User;
$user->email = isset($data['email']) ? $data['email'] : null;
$user->migrated = 0;
$user->reset = \Str::random(32);
$user->password = \Hash::make(\Str::random(12));
if (!$user->save()) {
\Log::error('Invalid user with data: ' . isset($data['email']) ? $data['email'] : '(no email!)');
\Session::flash('error', 'Input invalid, please try again: ' . $user->errors()->first());
return false;
}
$user->save();
return $user;
}
/**
* @param $mail
*
* @return null|User
*/
public function findByEmail($mail)
{
return \User::where('email', $mail)->first();
}
/**
* @param $reset
*
* @return null|User
*/
public function findByReset($reset)
{
return \User::where('reset', $reset)->first();
}
}

View File

@ -1,6 +1,7 @@
<?php <?php
namespace FireflyIII; namespace FireflyIII;
use FireflyIII\Shared\Validation\FireflyValidator;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
/** /**
@ -11,6 +12,14 @@ use Illuminate\Support\ServiceProvider;
class FF3ServiceProvider extends ServiceProvider class FF3ServiceProvider extends ServiceProvider
{ {
public function boot()
{
$this->app->validator->resolver(
function ($translator, $data, $rules, $messages) {
return new FireflyValidator($translator, $data, $rules, $messages);
}
);
}
/** /**
* Triggered automatically by Laravel * Triggered automatically by Laravel
@ -23,6 +32,9 @@ class FF3ServiceProvider extends ServiceProvider
// preferences: // preferences:
$this->app->bind('FireflyIII\Shared\Preferences\PreferencesInterface', 'FireflyIII\Shared\Preferences\Preferences'); $this->app->bind('FireflyIII\Shared\Preferences\PreferencesInterface', 'FireflyIII\Shared\Preferences\Preferences');
// registration and user mail:
$this->app->bind('FireflyIII\Shared\Mail\RegistrationInterface', 'FireflyIII\Shared\Mail\Registration');
} }
} }

View File

@ -0,0 +1,77 @@
<?php
namespace FireflyIII\Shared\Mail;
/**
* Class Registration
*
* @package FireflyIII\Shared\Mail
*/
class Registration implements RegistrationInterface
{
/**
* @param \User $user
*
* @return mixed|void
*/
public function sendVerificationMail(\User $user)
{
$reset = \Str::random(32);
$user->reset = $reset;
$user->forceSave();
$email = $user->email;
$data = ['reset' => $reset];
\Mail::send(
['emails.user.verify-html', 'emails.user.verify-text'], $data, function ($message) use ($email) {
$message->to($email, $email)->subject('Verify your e-mail address.');
}
);
}
/**
* @param \User $user
*
* @return mixed|void
*/
public function sendPasswordMail(\User $user)
{
$password = \Str::random(12);
$user->password = $password;
$user->reset = \Str::random(32); // new one.
$user->forceSave();
$email = $user->email;
$data = ['password' => $password];
\Mail::send(
['emails.user.register-html', 'emails.user.register-text'], $data, function ($message) use ($email) {
$message->to($email, $email)->subject('Welcome to Firefly!');
}
);
}
/**
* @param \User $user
*
* @return mixed|void
*/
public function sendResetVerification(\User $user)
{
$reset = \Str::random(32);
$user->reset = $reset;
$user->forceSave();
$email = $user->email;
$data = ['reset' => $reset];
\Mail::send(
['emails.user.remindme-html', 'emails.user.remindme-text'], $data, function ($message) use ($email) {
$message->to($email, $email)->subject('Forgot your password?');
}
);
}
}

View File

@ -0,0 +1,34 @@
<?php
namespace FireflyIII\Shared\Mail;
/**
* Interface RegistrationInterface
*
* @package FireflyIII\Shared\Mail
*/
interface RegistrationInterface
{
/**
* @param \User $user
*
* @return mixed
*/
public function sendVerificationMail(\User $user);
/**
* @param \User $user
*
* @return mixed
*/
public function sendPasswordMail(\User $user);
/**
* @param \User $user
*
* @return mixed
*/
public function sendResetVerification(\User $user);
}

View File

@ -29,8 +29,8 @@ class Filter
if (!is_null(\Session::get('range'))) { if (!is_null(\Session::get('range'))) {
$range = \Session::get('range'); $range = \Session::get('range');
} else { } else {
/** @noinspection PhpUndefinedClassInspection */ /** @var \FireflyIII\Shared\Preferences\PreferencesInterface $preferences */
$preferences = \App::make('Firefly\Helper\Preferences\PreferencesHelperInterface'); $preferences = \App::make('FireflyIII\Shared\Preferences\PreferencesInterface');
$viewRange = $preferences->get('viewRange', '1M'); $viewRange = $preferences->get('viewRange', '1M');
// default range: // default range:

View File

@ -0,0 +1,22 @@
<?php
namespace FireflyIII\Shared\Validation;
use Illuminate\Validation\Validator;
/**
* Class FireflyValidator
*
* @package FireflyIII\Shared\Validation
*/
class FireflyValidator extends Validator
{
public function validateAlphabasic($attribute, $value, $parameters)
{
$pattern = '/[^[:alnum:]_\-\.\& \(\)\'"]/iu';
if (preg_match($pattern, $value)) {
return false;
} else {
return true;
}
}
}

View File

@ -0,0 +1,26 @@
<?php
namespace FireflyIII\Shared\Validation;
use Illuminate\Support\ServiceProvider;
/**
* Class ValidationServiceProvider
* @package FireflyIII\Shared\Validation
*/
class ValidationServiceProvider extends ServiceProvider
{
public function boot()
{
$this->app->validator->resolver(
function ($translator, $data, $rules, $messages) {
return new FireflyValidator($translator, $data, $rules, $messages);
}
);
}
public function register()
{
}
}

View File

@ -7,24 +7,13 @@
<p class="lead">Welcome to Firefly III.</p> <p class="lead">Welcome to Firefly III.</p>
<p> <p>
To get get started, choose below: Create a new asset account to get started.
</p> </p>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-lg-6 col-md-6 col-sm-12">
<h2><a href="{{route('migrate.index')}}">Migrate from Firefly II</a></h2>
<p>
Use this option if you have a JSON file from your current Firefly II installation.
</p>
</div>
<div class="col-lg-6 col-md-6 col-sm-12"> <div class="col-lg-6 col-md-6 col-sm-12">
<h2><a href="{{route('accounts.create','asset')}}">Start from scratch</a></h2> <h2><a href="{{route('accounts.create','asset')}}">Start from scratch</a></h2>
<p>
Use this option if you are new to Firefly (III).
</p>
</div> </div>
@else @else