first commit

This commit is contained in:
denisdulici
2017-09-14 22:21:00 +03:00
commit 515bdaf5cd
598 changed files with 48030 additions and 0 deletions

View 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)]
);
}
}

View 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');
}
}

View 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');
}
}

View 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)]);
}
}

View 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');
}
}

View 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');
}
}