diff --git a/Changelog b/Changelog index 612ac4abe..0554888cb 100755 --- a/Changelog +++ b/Changelog @@ -1,3 +1,5 @@ +2018-08-24 DariusIII + * Chg: Add checks for blacklisted users 2018-08-22 DariusIII * Chg: Update ReleaseExtra class, remove usage of substr() function * Chg: Update phpuint/phpunit, league/flysystem and Movies class diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 6cb0cbbfd..ac4b30141 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -149,7 +149,13 @@ class UserController extends BasePageController User::updateUserRoleChangeDate($request->input('id'), $request->input('rolechangedate')); } if ($request->input('role') !== null) { - Role::query()->where('id', $request->input('role'))->value('name'); + $roleName = Role::query()->where('id', $request->input('role'))->value('name'); + if ($roleName === 'Disabled') { + $blockedUser = User::find($request->input('id')); + if (\Firewall::isBlacklisted($blockedUser->host) === false) { + \Firewall::blacklist($blockedUser->host); + } + } $email = $request->input('email') ?? $request->input('email'); Mail::to($email)->send(new AccountChange($request->input('id'))); } diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index c1078ac12..5c8d2bdad 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -52,33 +52,49 @@ class LoginController extends Controller 'password' => 'required', ]); - if (env('NOCAPTCHA_ENABLED') === true && (! empty(env('NOCAPTCHA_SECRET')) && ! empty(env('NOCAPTCHA_SITEKEY')))) { - $this->validate($request, [ - 'g-recaptcha-response' => 'required|captcha', + $user = User::getByUsername($request->input('username')); + + if ($user !== null && \Firewall::isBlacklisted($user->host) === false) { + + if (env('NOCAPTCHA_ENABLED') === true && (! empty(env('NOCAPTCHA_SECRET')) && ! empty(env('NOCAPTCHA_SITEKEY')))) { + $this->validate($request, [ + 'g-recaptcha-response' => 'required|captcha', + ]); + } + + $rememberMe = $request->has('rememberme') && $request->input('rememberme') === 'on'; + + $login_type = filter_var($request->input('username'), FILTER_VALIDATE_EMAIL) ? 'email' : 'username'; + + $request->merge([ + $login_type => $request->input('username'), ]); + + if (Auth::attempt($request->only($login_type, 'password'), $rememberMe)) { + User::updateSiteAccessed(Auth::id(), (int) Settings::settingValue('..storeuserips') === 1 ? $request->getClientIp() : ''); + + return redirect()->intended($this->redirectPath()); + } } - $rememberMe = $request->has('rememberme') && $request->input('rememberme') === 'on'; + $theme = Settings::settingValue('site.main.style'); - $login_type = filter_var($request->input('username'), FILTER_VALIDATE_EMAIL) - ? 'email' - : 'username'; + $meta_title = 'Login'; + $meta_keywords = 'Login'; + $meta_description = 'Login'; + $content = app('smarty.view')->fetch($theme.'/login.tpl'); - $request->merge([ - $login_type => $request->input('username'), - ]); + app('smarty.view')->assign('error', 'These credentials do not match our records.'); - if (Auth::attempt($request->only($login_type, 'password'), $rememberMe)) { - User::updateSiteAccessed(Auth::id(), (int) Settings::settingValue('..storeuserips') === 1 ? $request->getClientIp() : ''); - - return redirect()->intended($this->redirectPath()); - } - - return redirect()->back() - ->withInput() - ->withErrors([ - 'login' => 'These credentials do not match our records.', - ]); + app('smarty.view')->assign( + [ + 'content' => $content, + 'meta_title' => $meta_title, + 'meta_keywords' => $meta_keywords, + 'meta_description' => $meta_description, + ] + ); + app('smarty.view')->display($theme.'/basepage.tpl'); } /** @@ -95,7 +111,6 @@ class LoginController extends Controller $content = app('smarty.view')->fetch($theme.'/login.tpl'); app('smarty.view')->assign( [ - 'error' => 'These credentials do not match our records.', 'content' => $content, 'meta_title' => $meta_title, 'meta_keywords' => $meta_keywords, @@ -105,7 +120,7 @@ class LoginController extends Controller app('smarty.view')->display($theme.'/basepage.tpl'); } - public function logout(Request $request) + public function logout() { Auth::logout(); diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 238483953..e195c908c 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -79,7 +79,7 @@ class RegisterController extends Controller /** * @param \Illuminate\Http\Request $request * - * @throws \Exception + * @throws \Jrean\UserVerification\Exceptions\ModelNotCompliantException */ public function register(Request $request) { diff --git a/app/Models/User.php b/app/Models/User.php index c7f70cbfa..7264be34b 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -788,12 +788,12 @@ class User extends Authenticatable } $res = self::getByUsername($userName); - if ($res) { + if ($res !== null) { return self::ERR_SIGNUP_UNAMEINUSE; } $res = self::getByEmail($email); - if ($res) { + if ($res !== null) { return self::ERR_SIGNUP_EMAILINUSE; }