More base setup and integration with AdminLTE

This commit is contained in:
Deon George
2016-10-21 01:40:52 +11:00
parent 84ae365676
commit 3f54233c39
1495 changed files with 841197 additions and 20908 deletions

View File

@@ -4,6 +4,9 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
class ForgotPasswordController extends Controller
{
@@ -20,6 +23,71 @@ class ForgotPasswordController extends Controller
use SendsPasswordResetEmails;
/**
* Send a reset link to the given user.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function sendResetLinkEmail(Request $request)
{
$this->validate($request, ['email' => 'required|email']);
// We will send the password reset link to this user. Once we have attempted
// to send the link, we will examine the response then see the message we
// need to show to the user. Finally, we'll send out a proper response.
$response = $this->broker()->sendResetLink(
$request->only('email')
);
return $response == Password::RESET_LINK_SENT
? $this->sendResetLinkResponse($request, $response)
: $this->sendResetLinkFailedResponse($request, $response);
}
/**
* Get the response for a successful password reset link.
*
* @param string $response
* @return mixed
*/
protected function sendResetLinkResponse(Request $request, $response)
{
if ($request->expectsJson()) {
return response()->json([
'status' => trans($response)
]);
}
return back()->with('status', trans($response));
}
/**
* Get the response for a failed password reset link.
*
* @param Request $request
* @param $response
* @return mixed
*/
protected function sendResetLinkFailedResponse(Request $request, $response)
{
if ($request->expectsJson()) {
return new JsonResponse(['email' => trans($response) ], 422);
}
return back()->withErrors(
['email' => trans($response)]
);
}
/**
* Display the form to request a password reset link.
*
* @return \Illuminate\Http\Response
*/
public function showLinkRequestForm()
{
return view('adminlte::auth.passwords.email');
}
/**
* Create a new controller instance.
*

View File

@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
class LoginController extends Controller
{
@@ -18,7 +19,9 @@ class LoginController extends Controller
|
*/
use AuthenticatesUsers;
use AuthenticatesUsers {
attemptLogin as attemptLoginAtAuthenticatesUsers;
}
/**
* Where to redirect users after login.
@@ -36,4 +39,44 @@ class LoginController extends Controller
{
$this->middleware('guest', ['except' => 'logout']);
}
/**
* Returns field name to use at login.
*
* @return string
*/
public function username()
{
return config('auth.providers.users.field','email');
}
/**
* Attempt to log the user into the application.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function attemptLogin(Request $request)
{
if ($this->username() === 'email')
return $this->attemptLoginAtAuthenticatesUsers($request);
if ( ! $this->attemptLoginAtAuthenticatesUsers($request)) {
return $this->attempLoginUsingUsernameAsAnEmail($request);
}
return false;
}
/**
* Attempt to log the user into application using username as an email.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function attempLoginUsingUsernameAsAnEmail(Request $request)
{
return $this->guard()->attempt(
['email' => $request->input('username'), 'password' => $request->input('password')],
$request->has('remember'));
}
}

View File

@@ -2,70 +2,101 @@
namespace App\Http\Controllers\Auth;
use App\User;
use App\Account;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\RegistersUsers;
use Clarkeash\Doorman\Facades\Doorman;
use clarkeash\Doorman\Exceptions\DoormanException;
/**
* Class RegisterController
* @package %%NAMESPACE%%\Http\Controllers\Auth
*/
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
use RegistersUsers;
/**
* Where to redirect users after login / registration.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Where to redirect users after login / registration.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* 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, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);
}
/**
* 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, [
'firstname' => 'required|max:255',
'lastname' => 'required|max:255',
'username' => 'sometimes|required|max:255|unique:users',
'email' => 'required|email|max:255|unique:account',
// 'token' => 'required|doorman:email',
'password' => 'required|min:6|confirmed',
'terms' => 'required',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return Account
*/
protected function create(array $data)
{
$fields = [
'firstname' => $data['firstname'],
'lastname' => $data['lastname'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'country_id' => 61, // @todo Need to add this to the registration form
];
if (config('auth.providers.users.field','email') === 'username' && isset($data['username'])) {
$fields['username'] = $data['username'];
}
if (config('auth.requiretoken'))
{
try {
Doorman::redeem($data['token'],$data['email']);
//@todo This is not working with AdminLTE - need to figure this out.
// Want to direct or display an appropriate error message (although the form validation does it anyway).
} catch (DoormanException $e) {
redirect('/error');
abort(403);
}
}
return Account::create($fields);
}
}

View File

@@ -4,6 +4,9 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
use Illuminate\Http\JsonResponse;
class ResetPasswordController extends Controller
{
@@ -20,6 +23,84 @@ class ResetPasswordController extends Controller
use ResetsPasswords;
/**
* Reset the given user's password.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function reset(Request $request)
{
$this->validate($request, $this->rules(), $this->validationErrorMessages());
// Here we will attempt to reset the user's password. If it is successful we
// will update the password on an actual user model and persist it to the
// database. Otherwise we will parse the error and return the response.
$response = $this->broker()->reset(
$this->credentials($request), function ($user, $password) {
$this->resetPassword($user, $password);
}
);
// If the password was successfully reset, we will redirect the user back to
// the application's home authenticated view. If there is an error we can
// redirect them back to where they came from with their error message.
return $response == Password::PASSWORD_RESET
? $this->sendResetResponse($request, $response)
: $this->sendResetFailedResponse($request, $response);
}
/**
* Get the response for a successful password reset.
*
* @param \Illuminate\Http\Request
* @param string $response
* @return \Illuminate\Http\RedirectResponse
*/
protected function sendResetResponse(Request $request,$response)
{
if ($request->expectsJson()) {
return response()->json([
'status' => trans($response)
]);
}
return redirect($this->redirectPath())
->with('status', trans($response));
}
/**
* Get the response for a failed password reset.
*
* @param \Illuminate\Http\Request
* @param string $response
* @return mixed
*/
protected function sendResetFailedResponse(Request $request, $response)
{
if ($request->expectsJson()) {
return new JsonResponse(['email' => trans($response) ], 422);
}
return redirect()->back()
->withInput($request->only('email'))
->withErrors(['email' => trans($response)]);
}
/**
* Display the password reset view for the given token.
*
* If no token is present, display the link request form.
*
* @param \Illuminate\Http\Request $request
* @param string|null $token
* @return \Illuminate\Http\Response
*/
public function showResetForm(Request $request, $token = null)
{
return view('adminlte::auth.passwords.reset')->with(
['token' => $token, 'email' => $request->email]
);
}
/**
* Create a new controller instance.
*