mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2024-12-28 09:51:21 -06:00
Some changes in login routes for 5.3
This commit is contained in:
parent
7d63f124c4
commit
bd53410c71
@ -97,7 +97,7 @@ class Handler extends ExceptionHandler
|
|||||||
|
|
||||||
// create job that will mail.
|
// create job that will mail.
|
||||||
$ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
|
$ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
|
||||||
$job = new MailError($userData, env('SITE_OWNER'), $ip, $data);
|
$job = new MailError($userData, env('SITE_OWNER', ''), $ip, $data);
|
||||||
dispatch($job);
|
dispatch($job);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,84 +56,7 @@ class AuthController extends Controller
|
|||||||
parent::__construct();
|
parent::__construct();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle a registration request for the application.
|
|
||||||
*
|
|
||||||
* @param \Illuminate\Http\Request $request
|
|
||||||
*
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
* @throws FireflyException
|
|
||||||
* @throws \Illuminate\Foundation\Validation\ValidationException
|
|
||||||
*/
|
|
||||||
public function register(Request $request)
|
|
||||||
{
|
|
||||||
// is allowed to?
|
|
||||||
$singleUserMode = FireflyConfig::get('single_user_mode', Config::get('firefly.configuration.single_user_mode'))->data;
|
|
||||||
$userCount = User::count();
|
|
||||||
if ($singleUserMode === true && $userCount > 0) {
|
|
||||||
$message = 'Registration is currently not available.';
|
|
||||||
|
|
||||||
return view('error', compact('message'));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$validator = $this->validator($request->all());
|
|
||||||
|
|
||||||
if ($validator->fails()) {
|
|
||||||
$this->throwValidationException(
|
|
||||||
$request, $validator
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = $request->all();
|
|
||||||
$data['password'] = bcrypt($data['password']);
|
|
||||||
|
|
||||||
// is user email domain blocked?
|
|
||||||
if ($this->isBlockedDomain($data['email'])) {
|
|
||||||
$validator->getMessageBag()->add('email', (string)trans('validation.invalid_domain'));
|
|
||||||
|
|
||||||
$this->reportBlockedDomainRegistrationAttempt($data['email'], $request->ip());
|
|
||||||
|
|
||||||
$this->throwValidationException(
|
|
||||||
$request, $validator
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$user = $this->create($request->all());
|
|
||||||
|
|
||||||
// trigger user registration event:
|
|
||||||
event(new UserRegistration($user, $request->ip()));
|
|
||||||
|
|
||||||
Auth::login($user);
|
|
||||||
|
|
||||||
Session::flash('success', strval(trans('firefly.registered')));
|
|
||||||
Session::flash('gaEventCategory', 'user');
|
|
||||||
Session::flash('gaEventAction', 'new-registration');
|
|
||||||
|
|
||||||
return redirect($this->redirectPath());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show the application registration form.
|
|
||||||
*
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function showRegistrationForm()
|
|
||||||
{
|
|
||||||
$showDemoWarning = env('SHOW_DEMO_WARNING', false);
|
|
||||||
|
|
||||||
// is allowed to?
|
|
||||||
$singleUserMode = FireflyConfig::get('single_user_mode', Config::get('firefly.configuration.single_user_mode'))->data;
|
|
||||||
$userCount = User::count();
|
|
||||||
if ($singleUserMode === true && $userCount > 0) {
|
|
||||||
$message = 'Registration is currently not available.';
|
|
||||||
|
|
||||||
return view('error', compact('message'));
|
|
||||||
}
|
|
||||||
|
|
||||||
return view('auth.register', compact('showDemoWarning'));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new user instance after a valid registration.
|
* Create a new user instance after a valid registration.
|
||||||
@ -152,30 +75,9 @@ class AuthController extends Controller
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function getBlockedDomains()
|
|
||||||
{
|
|
||||||
return FireflyConfig::get('blocked-domains', [])->data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string $email
|
|
||||||
*
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
protected function isBlockedDomain(string $email)
|
|
||||||
{
|
|
||||||
$parts = explode('@', $email);
|
|
||||||
$blocked = $this->getBlockedDomains();
|
|
||||||
|
|
||||||
if (isset($parts[1]) && in_array($parts[1], $blocked)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -196,31 +98,5 @@ class AuthController extends Controller
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Send a message home about a blocked domain and the address attempted to register.
|
|
||||||
*
|
|
||||||
* @param string $registrationMail
|
|
||||||
* @param string $ipAddress
|
|
||||||
*/
|
|
||||||
private function reportBlockedDomainRegistrationAttempt(string $registrationMail, string $ipAddress)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
$email = env('SITE_OWNER', false);
|
|
||||||
$parts = explode('@', $registrationMail);
|
|
||||||
$domain = $parts[1];
|
|
||||||
$fields = [
|
|
||||||
'email_address' => $registrationMail,
|
|
||||||
'blocked_domain' => $domain,
|
|
||||||
'ip' => $ipAddress,
|
|
||||||
];
|
|
||||||
|
|
||||||
Mail::send(
|
|
||||||
['emails.blocked-registration-html', 'emails.blocked-registration'], $fields, function (Message $message) use ($email, $domain) {
|
|
||||||
$message->to($email, $email)->subject('Blocked a registration attempt with domain ' . $domain . '.');
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} catch (Swift_TransportException $e) {
|
|
||||||
Log::error($e->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,26 @@
|
|||||||
|
|
||||||
namespace FireflyIII\Http\Controllers\Auth;
|
namespace FireflyIII\Http\Controllers\Auth;
|
||||||
|
|
||||||
use FireflyIII\User;
|
use Auth;
|
||||||
use Validator;
|
use Config;
|
||||||
|
use FireflyIII\Events\UserRegistration;
|
||||||
use FireflyIII\Http\Controllers\Controller;
|
use FireflyIII\Http\Controllers\Controller;
|
||||||
|
use FireflyIII\Support\Facades\FireflyConfig;
|
||||||
|
use FireflyIII\User;
|
||||||
use Illuminate\Foundation\Auth\RegistersUsers;
|
use Illuminate\Foundation\Auth\RegistersUsers;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Mail\Message;
|
||||||
|
use Log;
|
||||||
|
use Mail;
|
||||||
|
use Session;
|
||||||
|
use Swift_TransportException;
|
||||||
|
use Validator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class RegisterController
|
||||||
|
*
|
||||||
|
* @package FireflyIII\Http\Controllers\Auth
|
||||||
|
*/
|
||||||
class RegisterController extends Controller
|
class RegisterController extends Controller
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -31,41 +46,170 @@ class RegisterController extends Controller
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new controller instance.
|
* Create a new controller instance.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
|
parent::__construct();
|
||||||
$this->middleware('guest');
|
$this->middleware('guest');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a validator for an incoming registration request.
|
* @param Request $request
|
||||||
*
|
*
|
||||||
* @param array $data
|
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View
|
||||||
* @return \Illuminate\Contracts\Validation\Validator
|
|
||||||
*/
|
*/
|
||||||
protected function validator(array $data)
|
public function register(Request $request)
|
||||||
{
|
{
|
||||||
return Validator::make($data, [
|
// is allowed to?
|
||||||
'name' => 'required|max:255',
|
$singleUserMode = FireflyConfig::get('single_user_mode', Config::get('firefly.configuration.single_user_mode'))->data;
|
||||||
'email' => 'required|email|max:255|unique:users',
|
$userCount = User::count();
|
||||||
'password' => 'required|min:6|confirmed',
|
if ($singleUserMode === true && $userCount > 0) {
|
||||||
]);
|
$message = 'Registration is currently not available.';
|
||||||
|
|
||||||
|
return view('error', compact('message'));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$validator = $this->validator($request->all());
|
||||||
|
|
||||||
|
if ($validator->fails()) {
|
||||||
|
$this->throwValidationException($request, $validator);
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = $request->all();
|
||||||
|
$data['password'] = bcrypt($data['password']);
|
||||||
|
|
||||||
|
// is user email domain blocked?
|
||||||
|
if ($this->isBlockedDomain($data['email'])) {
|
||||||
|
$validator->getMessageBag()->add('email', (string)trans('validation.invalid_domain'));
|
||||||
|
|
||||||
|
$this->reportBlockedDomainRegistrationAttempt($data['email'], $request->ip());
|
||||||
|
|
||||||
|
$this->throwValidationException($request, $validator);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$user = $this->create($request->all());
|
||||||
|
|
||||||
|
// trigger user registration event:
|
||||||
|
event(new UserRegistration($user, $request->ip()));
|
||||||
|
|
||||||
|
Auth::login($user);
|
||||||
|
|
||||||
|
Session::flash('success', strval(trans('firefly.registered')));
|
||||||
|
Session::flash('gaEventCategory', 'user');
|
||||||
|
Session::flash('gaEventAction', 'new-registration');
|
||||||
|
|
||||||
|
return redirect($this->redirectPath());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* OLD
|
||||||
|
* Show the application registration form.
|
||||||
|
*
|
||||||
|
* @return \Illuminate\Http\Response
|
||||||
|
*/
|
||||||
|
public function showRegistrationForm()
|
||||||
|
{
|
||||||
|
// TODO move to FireflyConfig
|
||||||
|
$showDemoWarning = env('SHOW_DEMO_WARNING', false);
|
||||||
|
|
||||||
|
// is allowed to?
|
||||||
|
$singleUserMode = FireflyConfig::get('single_user_mode', Config::get('firefly.configuration.single_user_mode'))->data;
|
||||||
|
$userCount = User::count();
|
||||||
|
if ($singleUserMode === true && $userCount > 0) {
|
||||||
|
$message = 'Registration is currently not available.';
|
||||||
|
|
||||||
|
return view('error', compact('message'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return view('auth.register', compact('showDemoWarning'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new user instance after a valid registration.
|
* Create a new user instance after a valid registration.
|
||||||
*
|
*
|
||||||
* @param array $data
|
* @param array $data
|
||||||
|
*
|
||||||
* @return User
|
* @return User
|
||||||
*/
|
*/
|
||||||
protected function create(array $data)
|
protected function create(array $data)
|
||||||
{
|
{
|
||||||
return User::create([
|
return User::create(
|
||||||
'name' => $data['name'],
|
[
|
||||||
'email' => $data['email'],
|
'email' => $data['email'],
|
||||||
'password' => bcrypt($data['password']),
|
'password' => bcrypt($data['password']),
|
||||||
]);
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a validator for an incoming registration request.
|
||||||
|
*
|
||||||
|
* @param array $data
|
||||||
|
*
|
||||||
|
* @return \Illuminate\Contracts\Validation\Validator
|
||||||
|
*/
|
||||||
|
protected function validator(array $data)
|
||||||
|
{
|
||||||
|
return Validator::make(
|
||||||
|
$data, [
|
||||||
|
'email' => 'required|email|max:255|unique:users',
|
||||||
|
'password' => 'required|min:6|confirmed',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
private function getBlockedDomains()
|
||||||
|
{
|
||||||
|
return FireflyConfig::get('blocked-domains', [])->data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $email
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
private function isBlockedDomain(string $email)
|
||||||
|
{
|
||||||
|
$parts = explode('@', $email);
|
||||||
|
$blocked = $this->getBlockedDomains();
|
||||||
|
|
||||||
|
if (isset($parts[1]) && in_array($parts[1], $blocked)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a message home about a blocked domain and the address attempted to register.
|
||||||
|
*
|
||||||
|
* @param string $registrationMail
|
||||||
|
* @param string $ipAddress
|
||||||
|
*/
|
||||||
|
private function reportBlockedDomainRegistrationAttempt(string $registrationMail, string $ipAddress)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$email = env('SITE_OWNER', false);
|
||||||
|
$parts = explode('@', $registrationMail);
|
||||||
|
$domain = $parts[1];
|
||||||
|
$fields = [
|
||||||
|
'email_address' => $registrationMail,
|
||||||
|
'blocked_domain' => $domain,
|
||||||
|
'ip' => $ipAddress,
|
||||||
|
];
|
||||||
|
|
||||||
|
Mail::send(
|
||||||
|
['emails.blocked-registration-html', 'emails.blocked-registration'], $fields, function (Message $message) use ($email, $domain) {
|
||||||
|
$message->to($email, $email)->subject('Blocked a registration attempt with domain ' . $domain . '.');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
} catch (Swift_TransportException $e) {
|
||||||
|
Log::error($e->getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,8 +21,8 @@ Route::group(
|
|||||||
Route::post('login', 'Auth\LoginController@login'); #
|
Route::post('login', 'Auth\LoginController@login'); #
|
||||||
|
|
||||||
// Registration Routes...
|
// Registration Routes...
|
||||||
Route::get('/register', ['uses' => 'Auth\RegisterController@showRegistrationForm', 'as' => 'register']);
|
Route::get('/register', ['uses' => 'Auth\RegisterController@showRegistrationForm', 'as' => 'register']); #
|
||||||
Route::post('/register', 'Auth\RegisterController@register');
|
Route::post('/register', 'Auth\RegisterController@register'); #
|
||||||
|
|
||||||
Route::get('/password/reset', 'Auth\PasswordController@getReset');
|
Route::get('/password/reset', 'Auth\PasswordController@getReset');
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user