first commit
This commit is contained in:
101
app/Http/Controllers/Auth/Forgot.php
Normal file
101
app/Http/Controllers/Auth/Forgot.php
Normal file
@ -0,0 +1,101 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
|
||||
class Forgot extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password reset emails and
|
||||
| includes a trait which assists in sending these notifications from
|
||||
| your application to your users. Feel free to explore this trait.
|
||||
|
|
||||
*/
|
||||
|
||||
use SendsPasswordResetEmails;
|
||||
|
||||
/**
|
||||
* Where to redirect users after reset.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = 'auth/forgot';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the form to request a password reset link.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
return view('auth.forgot.create');
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a reset link to the given user.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$this->validateEmail($request);
|
||||
|
||||
// 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($response)
|
||||
: $this->sendResetLinkFailedResponse($request, $response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the response for a successful password reset link.
|
||||
*
|
||||
* @param string $response
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
protected function sendResetLinkResponse($response)
|
||||
{
|
||||
flash(trans($response))->success();
|
||||
|
||||
return redirect($this->redirectTo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the response for a failed password reset link.
|
||||
*
|
||||
* @param \Illuminate\Http\Request
|
||||
* @param string $response
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
protected function sendResetLinkFailedResponse(Request $request, $response)
|
||||
{
|
||||
return redirect($this->redirectTo)->withErrors(
|
||||
['email' => trans($response)]
|
||||
);
|
||||
}
|
||||
}
|
71
app/Http/Controllers/Auth/Login.php
Normal file
71
app/Http/Controllers/Auth/Login.php
Normal file
@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
||||
|
||||
class Login extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Login Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller handles authenticating users for the application and
|
||||
| redirecting them to your home screen. The controller uses a trait
|
||||
| to conveniently provide its functionality to your applications.
|
||||
|
|
||||
*/
|
||||
|
||||
use AuthenticatesUsers;
|
||||
|
||||
/**
|
||||
* Where to redirect users after login.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
/*public function __construct()
|
||||
{
|
||||
$this->middleware('guest')->except('logout');
|
||||
}*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest', ['except' => 'destroy']);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
return view('auth.login.create');
|
||||
}
|
||||
|
||||
public function store()
|
||||
{
|
||||
if (!auth()->attempt(request(['email', 'password']))) {
|
||||
flash('Please check your credentials and try again.')->error();
|
||||
|
||||
return back();
|
||||
}
|
||||
|
||||
if (auth()->user()->customer) {
|
||||
return redirect('/customers');
|
||||
}
|
||||
|
||||
return redirect('/');
|
||||
}
|
||||
|
||||
public function destroy()
|
||||
{
|
||||
auth()->logout();
|
||||
|
||||
return redirect('auth/login');
|
||||
}
|
||||
}
|
102
app/Http/Controllers/Auth/Permissions.php
Normal file
102
app/Http/Controllers/Auth/Permissions.php
Normal file
@ -0,0 +1,102 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Auth\Permission as Request;
|
||||
use App\Models\Auth\Permission;
|
||||
|
||||
class Permissions extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$permissions = Permission::collect();
|
||||
|
||||
return view('auth.permissions.index', compact('permissions'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
return view('auth.permissions.create');
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
// Create permission
|
||||
$permission = Permission::create($request->all());
|
||||
|
||||
$message = trans('messages.success.added', ['type' => trans_choice('general.permissions', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('auth/permissions');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param Permission $permission
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function edit(Permission $permission)
|
||||
{
|
||||
return view('auth.permissions.edit', compact('permission'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param Permission $permission
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function update(Permission $permission, Request $request)
|
||||
{
|
||||
// Update permission
|
||||
$permission->update($request->all());
|
||||
|
||||
$message = trans('messages.success.updated', ['type' => trans_choice('general.permissions', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('auth/permissions');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param Permission $permission
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function destroy(Permission $permission)
|
||||
{
|
||||
$permission->delete();
|
||||
|
||||
$message = trans('messages.success.deleted', ['type' => trans_choice('general.permissions', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('auth/permissions');
|
||||
}
|
||||
}
|
97
app/Http/Controllers/Auth/Reset.php
Normal file
97
app/Http/Controllers/Auth/Reset.php
Normal file
@ -0,0 +1,97 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
|
||||
class Reset extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password reset requests
|
||||
| and uses a simple trait to include this behavior. You're free to
|
||||
| explore this trait and override any methods you wish to tweak.
|
||||
|
|
||||
*/
|
||||
|
||||
use ResetsPasswords;
|
||||
|
||||
/**
|
||||
* Where to redirect users after resetting their password.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $redirectTo = '/';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
|
||||
public function create(Request $request, $token = null)
|
||||
{
|
||||
return view('auth.reset.create')->with(
|
||||
['token' => $token, 'email' => $request->email]
|
||||
);
|
||||
}
|
||||
|
||||
public function store(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($response)
|
||||
: $this->sendResetFailedResponse($request, $response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the response for a successful password reset.
|
||||
*
|
||||
* @param string $response
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
protected function sendResetResponse($response)
|
||||
{
|
||||
flash(trans($response))->success();
|
||||
|
||||
return redirect($this->redirectTo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the response for a failed password reset.
|
||||
*
|
||||
* @param \Illuminate\Http\Request
|
||||
* @param string $response
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
protected function sendResetFailedResponse(Request $request, $response)
|
||||
{
|
||||
return redirect()->back()
|
||||
->withInput($request->only('email'))
|
||||
->withErrors(['email' => trans($response)]);
|
||||
}
|
||||
}
|
116
app/Http/Controllers/Auth/Roles.php
Normal file
116
app/Http/Controllers/Auth/Roles.php
Normal file
@ -0,0 +1,116 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Auth\Role as Request;
|
||||
use App\Models\Auth\Permission;
|
||||
use App\Models\Auth\Role;
|
||||
|
||||
class Roles extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$roles = Role::collect();
|
||||
|
||||
return view('auth.roles.index', compact('roles'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$permissions = Permission::all();
|
||||
|
||||
return view('auth.roles.create', compact('permissions'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
// Create role
|
||||
$role = Role::create($request->all());
|
||||
|
||||
// Attach permissions
|
||||
$role->permissions()->attach($request['permissions']);
|
||||
|
||||
$message = trans('messages.success.added', ['type' => trans_choice('general.roles', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('auth/roles');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param Role $role
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function edit(Role $role)
|
||||
{
|
||||
//$permissions = Permission::all()->sortBy('display_name');
|
||||
$permissions = Permission::all();
|
||||
|
||||
$rolePermissions = $role->permissions->pluck('id', 'id')->toArray();
|
||||
|
||||
return view('auth.roles.edit', compact('role', 'permissions', 'rolePermissions'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param Role $role
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function update(Role $role, Request $request)
|
||||
{
|
||||
// Update role
|
||||
$role->update($request->all());
|
||||
|
||||
// Sync permissions
|
||||
$role->permissions()->sync($request['permissions']);
|
||||
|
||||
$message = trans('messages.success.updated', ['type' => trans_choice('general.roles', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('auth/roles');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param Role $role
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function destroy(Role $role)
|
||||
{
|
||||
$role->delete();
|
||||
|
||||
$message = trans('messages.success.deleted', ['type' => trans_choice('general.roles', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('auth/roles');
|
||||
}
|
||||
}
|
206
app/Http/Controllers/Auth/Users.php
Normal file
206
app/Http/Controllers/Auth/Users.php
Normal file
@ -0,0 +1,206 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Auth\User as Request;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Auth\Role;
|
||||
|
||||
use Auth;
|
||||
|
||||
class Users extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$users = User::with('roles')->collect();
|
||||
|
||||
$roles = collect(Role::all()->pluck('display_name', 'id'))
|
||||
->prepend(trans('roles.all'), '');
|
||||
|
||||
return view('auth.users.index', compact('users', 'roles'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$roles = Role::all();
|
||||
|
||||
$companies = Auth::user()->companies()->get()->sortBy('name');
|
||||
foreach ($companies as $company) {
|
||||
$company->setSettings();
|
||||
}
|
||||
|
||||
return view('auth.users.create', compact('roles', 'companies'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
// Upload picture
|
||||
$picture = $request->file('picture');
|
||||
if ($picture && $picture->isValid()) {
|
||||
$request['picture'] = $picture->store('uploads/users');
|
||||
}
|
||||
|
||||
// Create user
|
||||
$user = User::create($request->input());
|
||||
|
||||
// Attach roles
|
||||
$user->roles()->attach($request['roles']);
|
||||
|
||||
// Attach companies
|
||||
$user->companies()->attach($request['companies']);
|
||||
|
||||
$message = trans('messages.success.added', ['type' => trans_choice('general.users', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('auth/users');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param User $user
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function edit(User $user)
|
||||
{
|
||||
$roles = Role::all();
|
||||
|
||||
$companies = Auth::user()->companies()->get()->sortBy('name');
|
||||
foreach ($companies as $company) {
|
||||
$company->setSettings();
|
||||
}
|
||||
|
||||
return view('auth.users.edit', compact('user', 'companies', 'roles'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param User $user
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function update(User $user, Request $request)
|
||||
{
|
||||
// Upload picture
|
||||
$picture = $request->file('picture');
|
||||
if ($picture && $picture->isValid()) {
|
||||
$request['picture'] = $picture->store('uploads/users');
|
||||
}
|
||||
|
||||
// Do not reset password if not entered/changed
|
||||
if (empty($request['password'])) {
|
||||
unset($request['password']);
|
||||
unset($request['password_confirmation']);
|
||||
}
|
||||
|
||||
// Update user
|
||||
$user->update($request->input());
|
||||
|
||||
// Attach roles
|
||||
$user->roles()->sync($request['roles']);
|
||||
|
||||
// Sync companies
|
||||
$user->companies()->sync($request['companies']);
|
||||
|
||||
$message = trans('messages.success.updated', ['type' => trans_choice('general.users', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('auth/users');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param User $user
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function destroy(User $user)
|
||||
{
|
||||
// Can't delete yourself
|
||||
if ($user->id == \Auth::user()->id) {
|
||||
$message = trans('auth.error.self_delete');
|
||||
|
||||
flash($message)->error();
|
||||
|
||||
return redirect('auth/users');
|
||||
}
|
||||
|
||||
$user->delete();
|
||||
|
||||
$message = trans('messages.success.deleted', ['type' => trans_choice('general.users', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('auth/users');
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark upcoming bills notifications are read and redirect to bills page.
|
||||
*
|
||||
* @param User $user
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function readUpcomingBills(User $user)
|
||||
{
|
||||
// Mark bill notifications as read
|
||||
foreach ($user->unreadNotifications as $notification) {
|
||||
// Not a bill notification
|
||||
if ($notification->getAttribute('type') != 'App\Notifications\Expense\Bill') {
|
||||
continue;
|
||||
}
|
||||
|
||||
$notification->markAsRead();
|
||||
}
|
||||
|
||||
// Redirect to bills
|
||||
return redirect('expenses/bills');
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark overdue invoices notifications are read and redirect to invoices page.
|
||||
*
|
||||
* @param User $user
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function readOverdueInvoices(User $user)
|
||||
{
|
||||
// Mark invoice notifications as read
|
||||
foreach ($user->unreadNotifications as $notification) {
|
||||
// Not an invoice notification
|
||||
if ($notification->getAttribute('type') != 'App\Notifications\Income\Invoice') {
|
||||
continue;
|
||||
}
|
||||
|
||||
$notification->markAsRead();
|
||||
}
|
||||
|
||||
// Redirect to invoices
|
||||
return redirect('incomes/invoices');
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user