Compare commits

...

No commits in common. "b767265200db4146b68f79f4f4784f320f91eee1" and "21646ac2fd762b8640b918421d64b5a7356c85f0" have entirely different histories.

60 changed files with 26769 additions and 6070 deletions

8
.gitignore vendored
View File

@ -5,14 +5,8 @@
/vendor /vendor
/.idea /.idea
/.vscode /.vscode
/.vagrant
Homestead.json
Homestead.yaml
npm-debug.log npm-debug.log
yarn-error.log yarn-error.log
.env .env
.phpunit.result.cache .phpunit.result.cache
mergeAndDeploy.sh tags
start_vagrant.sh
stop_vagrant.sh
ssh_homestead.sh

View File

@ -3,13 +3,10 @@
namespace App\Events; namespace App\Events;
use \App\Item; use \App\Item;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class ReturnItem class ReturnItem
{ {
@ -20,7 +17,7 @@ class ReturnItem
* Create a new event instance. * Create a new event instance.
* *
* @param Item $item The returned item. * @param Item $item The returned item.
* *
* @return void * @return void
*/ */
public function __construct(Item $item) public function __construct(Item $item)

View File

@ -4,6 +4,7 @@ namespace App\Exceptions;
use Exception; use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;
class Handler extends ExceptionHandler class Handler extends ExceptionHandler
{ {
@ -32,7 +33,7 @@ class Handler extends ExceptionHandler
* @param \Exception $exception * @param \Exception $exception
* @return void * @return void
*/ */
public function report(Exception $exception) public function report(Throwable $exception)
{ {
parent::report($exception); parent::report($exception);
} }
@ -44,7 +45,7 @@ class Handler extends ExceptionHandler
* @param \Exception $exception * @param \Exception $exception
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function render($request, Exception $exception) public function render($request, Throwable $exception)
{ {
return parent::render($request, $exception); return parent::render($request, $exception);
} }

View File

@ -2,12 +2,12 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Auth; use \App\Mail\UserWaiting;
use Mail;
use \App\User; use \App\User;
use App\FlashMessage; use App\FlashMessage;
use \App\Mail\UserWaiting; use Auth;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Mail;
class AlertController extends Controller class AlertController extends Controller
{ {
@ -17,7 +17,7 @@ class AlertController extends Controller
* the item is free * the item is free
* *
* @param Request $request Form data * @param Request $request Form data
* *
* @return redirect to home * @return redirect to home
*/ */
public function store(Request $request) public function store(Request $request)
@ -25,7 +25,7 @@ class AlertController extends Controller
$item = User::loggedIn()->items()->find(request('item')); $item = User::loggedIn()->items()->find(request('item'));
if (!$item->used_by) { if (!$item->used_by) {
session()->flash( session()->flash(
FlashMessage::PRIMARY, FlashMessage::PRIMARY,
__('Oh! This item has just being returned. Take it before anyone else!') __('Oh! This item has just being returned. Take it before anyone else!')
); );
return redirect('home'); return redirect('home');

View File

@ -2,13 +2,13 @@
namespace App\Http\Controllers\Auth; namespace App\Http\Controllers\Auth;
use App\User; use App\FlashMessage;
use App\Mail\Welcome;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Mail\Welcome;
use App\User;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use App\FlashMessage;
use Mail; use Mail;
class RegisterController extends Controller class RegisterController extends Controller

View File

@ -2,10 +2,10 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController class Controller extends BaseController
{ {

View File

@ -42,14 +42,14 @@ class HomeController extends Controller
->groupBy('product.name'); ->groupBy('product.name');
return view( return view(
'home', 'home',
['products' => $products, 'users' => $this->activeUsers, 'usedItems' => $numberOfUsedItems] ['products' => $products, 'users' => $this->activeUsers, 'usedItems' => $numberOfUsedItems]
); );
} }
/** /**
* Get the username from an specified user id. * Get the username from an specified user id.
* *
* @param object $itemUsers Array with IDs and usernames * @param object $itemUsers Array with IDs and usernames
* @param int $id The user id to search for * @param int $id The user id to search for
* *

View File

@ -4,8 +4,8 @@ namespace App\Http\Controllers;
use \App\Item; use \App\Item;
use \App\User; use \App\User;
use Illuminate\Http\Request;
use App\FlashMessage as flash; use App\FlashMessage as flash;
use Illuminate\Http\Request;
class ItemController extends Controller class ItemController extends Controller
{ {
@ -13,7 +13,8 @@ class ItemController extends Controller
{ {
$item = Item::find($id); $item = Item::find($id);
if (!$item || $item->product->user_id != \Auth::id()) { if (!$item || $item->product->user_id != \Auth::id()) {
session()->flash(flash::DANGER, session()->flash(
flash::DANGER,
\Lang::getFromJson( \Lang::getFromJson(
"The item doesn't exist." "The item doesn't exist."
) )

View File

@ -3,7 +3,6 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App; use App;
use Lang;
use App\User; use App\User;
use Illuminate\Http\Request; use Illuminate\Http\Request;

View File

@ -3,10 +3,10 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use \App\Item; use \App\Item;
use \App\User;
use \App\Product; use \App\Product;
use Illuminate\Http\Request; use \App\User;
use App\FlashMessage as flash; use App\FlashMessage as flash;
use Illuminate\Http\Request;
class ProductController extends Controller class ProductController extends Controller
{ {
@ -72,7 +72,7 @@ class ProductController extends Controller
if (!$product) { if (!$product) {
session()->flash( session()->flash(
flash::DANGER, flash::DANGER,
\Lang::getFromJson( \Lang::getFromJson(
"The product doesn't exist or doesn't belongs to you." "The product doesn't exist or doesn't belongs to you."
) )

View File

@ -2,13 +2,11 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Auth; use App\Events\ReturnItem;
use Lang;
use App\Item; use App\Item;
use App\User; use App\User;
use App\Events\ReturnItem;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use PhpParser\Node\Stmt\TryCatch; use Lang;
/** /**
* Responsible to Take and Return an Item. * Responsible to Take and Return an Item.
@ -19,7 +17,7 @@ class TakeController extends Controller
* The user take an item * The user take an item
* *
* @param Request $request The form data * @param Request $request The form data
* *
* @return home view * @return home view
*/ */
public function store(Request $request) public function store(Request $request)
@ -42,7 +40,7 @@ class TakeController extends Controller
* Trigger an event: ReturnItem * Trigger an event: ReturnItem
* *
* @param Request $request Form data * @param Request $request Form data
* *
* @return View home * @return View home
*/ */
public function delete(Request $request) public function delete(Request $request)
@ -51,7 +49,6 @@ class TakeController extends Controller
try { try {
$item->returnItem(); $item->returnItem();
} catch (\Exception $e) { } catch (\Exception $e) {
return back()->withErrors( return back()->withErrors(
Lang::getFromJson("You cannot return an item that is not with you") Lang::getFromJson("You cannot return an item that is not with you")

View File

@ -2,10 +2,9 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use \Lang;
use \App\User;
use \App\Item; use \App\Item;
use \App\Product; use \App\User;
use \Lang;
use Illuminate\Http\Request; use Illuminate\Http\Request;
class UserController extends Controller class UserController extends Controller

View File

@ -2,8 +2,8 @@
namespace App\Http\Middleware; namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware; use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware class TrustProxies extends Middleware
{ {

View File

@ -3,9 +3,8 @@
namespace App; namespace App;
use Auth; use Auth;
use Lang;
use Illuminate\Database\Eloquent\Model;
use Exception; use Exception;
use Illuminate\Database\Eloquent\Model;
class Item extends Model class Item extends Model
{ {
@ -34,7 +33,7 @@ class Item extends Model
/** /**
* Return the items from logged in user * Return the items from logged in user
* *
* @return \App\Item * @return \App\Item
*/ */
public static function fromAuthUser() public static function fromAuthUser()
@ -44,7 +43,7 @@ class Item extends Model
/** /**
* Take a specified item * Take a specified item
* *
* @return void * @return void
*/ */
public function takeItem() public function takeItem()
@ -60,7 +59,7 @@ class Item extends Model
/** /**
* Return a specified item * Return a specified item
* *
* @return void * @return void
*/ */
public function returnItem() public function returnItem()
@ -75,7 +74,7 @@ class Item extends Model
/** /**
* Store a waiting user to the item * Store a waiting user to the item
* *
* @return void * @return void
*/ */
public function storeAlert() public function storeAlert()
@ -87,7 +86,7 @@ class Item extends Model
/** /**
* Remove a waiting user to the item * Remove a waiting user to the item
* *
* @return void * @return void
*/ */
public function removeAlert() public function removeAlert()

View File

@ -2,12 +2,10 @@
namespace App\Listeners; namespace App\Listeners;
use Mail;
use App\User;
use App\Events\ReturnItem; use App\Events\ReturnItem;
use App\Mail\ItemAvailable; use App\Mail\ItemAvailable;
use Illuminate\Queue\InteractsWithQueue; use App\User;
use Illuminate\Contracts\Queue\ShouldQueue; use Mail;
class AlertReturnedItem class AlertReturnedItem
{ {
@ -26,7 +24,7 @@ class AlertReturnedItem
* is waiting for the item * is waiting for the item
* *
* @param ReturnItem $event The return event that contains an item * @param ReturnItem $event The return event that contains an item
* *
* @return void * @return void
*/ */
public function handle(ReturnItem $event) public function handle(ReturnItem $event)

View File

@ -3,10 +3,8 @@
namespace App\Listeners; namespace App\Listeners;
use App\User; use App\User;
use IlluminateAuthEventsLogin;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Auth\Events\Login; use Illuminate\Auth\Events\Login;
use IlluminateAuthEventsLogin;
class SetLanguage class SetLanguage
{ {

View File

@ -6,7 +6,6 @@ use \App\Item;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class ItemAvailable extends Mailable class ItemAvailable extends Mailable
{ {
@ -34,7 +33,7 @@ class ItemAvailable extends Mailable
{ {
return $this->subject( return $this->subject(
\Lang::getFromJson( \Lang::getFromJson(
':itemname is available!', ':itemname is available!',
['itemname' => $this->item->name] ['itemname' => $this->item->name]
) )
)->markdown('emails.itemAvailable'); )->markdown('emails.itemAvailable');

View File

@ -2,18 +2,17 @@
namespace App\Mail; namespace App\Mail;
use Lang;
use \App\Item; use \App\Item;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue; use Lang;
class UserWaiting extends Mailable class UserWaiting extends Mailable
{ {
public $item; public $item;
public $waitingUser; public $waitingUser;
public $userWithItem; public $userWithItem;
use Queueable, SerializesModels; use Queueable, SerializesModels;
/** /**
@ -36,10 +35,10 @@ class UserWaiting extends Mailable
public function build() public function build()
{ {
return $this->subject( return $this->subject(
Lang::getFromJson( Lang::get(
':waitinguser wants to use :itemname', ':waitinguser wants to use :itemname',
[ [
'waitinguser' => $this->waitingUser, 'waitinguser' => $this->waitingUser,
'itemname' => $this->item->name 'itemname' => $this->item->name
] ]
) )

View File

@ -2,12 +2,11 @@
namespace App\Mail; namespace App\Mail;
use \Lang;
use \App\User; use \App\User;
use \Lang;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class Welcome extends Mailable class Welcome extends Mailable
{ {
@ -31,6 +30,6 @@ class Welcome extends Mailable
*/ */
public function build() public function build()
{ {
return $this->subject(Lang::getFromJson('Welcome'))->markdown('emails.welcome'); return $this->subject(Lang::get('Welcome'))->markdown('emails.welcome');
} }
} }

View File

@ -20,7 +20,7 @@ class Product extends Model
/** /**
* Return the products from logged in user * Return the products from logged in user
* *
* @return \App\Product * @return \App\Product
*/ */
public static function fromAuthUser() public static function fromAuthUser()

View File

@ -2,8 +2,8 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider class AppServiceProvider extends ServiceProvider
{ {
@ -14,7 +14,7 @@ class AppServiceProvider extends ServiceProvider
*/ */
public function boot() public function boot()
{ {
Schema::defaultStringLength(191); //Solved by increasing StringLength Schema::defaultStringLength(191); //Solved by increasing StringLength
// //
} }

View File

@ -2,7 +2,6 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider class AuthServiceProvider extends ServiceProvider

View File

@ -2,8 +2,8 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Broadcast; use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;
class BroadcastServiceProvider extends ServiceProvider class BroadcastServiceProvider extends ServiceProvider
{ {

View File

@ -3,12 +3,12 @@
namespace App\Providers; namespace App\Providers;
use App\Events\ReturnItem; use App\Events\ReturnItem;
use App\Listeners\SetLanguage;
use App\Listeners\AlertReturnedItem; use App\Listeners\AlertReturnedItem;
use Illuminate\Support\Facades\Event; use App\Listeners\SetLanguage;
use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification; use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;
class EventServiceProvider extends ServiceProvider class EventServiceProvider extends ServiceProvider
{ {

View File

@ -2,8 +2,8 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider class RouteServiceProvider extends ServiceProvider
{ {

View File

@ -3,10 +3,9 @@
namespace App; namespace App;
use Auth; use Auth;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Support\Facades\Request; use Illuminate\Notifications\Notifiable;
class User extends Authenticatable implements MustVerifyEmail class User extends Authenticatable implements MustVerifyEmail
{ {
@ -42,7 +41,7 @@ class User extends Authenticatable implements MustVerifyEmail
/** /**
* Return the logged in user * Return the logged in user
* *
* @return \App\User * @return \App\User
*/ */
public static function loggedIn() public static function loggedIn()
@ -53,7 +52,7 @@ class User extends Authenticatable implements MustVerifyEmail
/** /**
* Set the default website language * Set the default website language
* for the acual user * for the acual user
* *
* @param string $language The language code * @param string $language The language code
* *
* @return void * @return void

2
check.sh Normal file
View File

@ -0,0 +1,2 @@
./vendor/bin/phpstan analyse --memory-limit=2G
php artisan insights

View File

@ -5,18 +5,23 @@
"license": "MIT", "license": "MIT",
"type": "project", "type": "project",
"require": { "require": {
"php": "^7.1.3", "php": "^7.3.0",
"fideloper/proxy": "^4.0", "fideloper/proxy": "^4.0",
"laravel/framework": "5.7.*", "laravel/framework": "^8.0",
"laravel/tinker": "^1.0" "laravel/helpers": "^1.4",
"laravel/tinker": "^2.0",
"laravel/ui": "^3.0"
}, },
"require-dev": { "require-dev": {
"beyondcode/laravel-dump-server": "^1.0", "beyondcode/laravel-dump-server": "^1.0",
"filp/whoops": "^2.0", "filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4", "fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0", "mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0", "nunomaduro/collision": "^5.0",
"phpunit/phpunit": "^7.0" "nunomaduro/larastan": "^0.7.4",
"nunomaduro/phpinsights": "^1.14",
"phpstan/phpstan": "^0.12.85",
"phpunit/phpunit": "^9.0"
}, },
"autoload": { "autoload": {
"classmap": [ "classmap": [

6910
composer.lock generated

File diff suppressed because it is too large Load Diff

113
config/insights.php Normal file
View File

@ -0,0 +1,113 @@
<?php
declare(strict_types=1);
use NunoMaduro\PhpInsights\Domain\Insights\ForbiddenDefineFunctions;
use NunoMaduro\PhpInsights\Domain\Insights\ForbiddenFinalClasses;
use NunoMaduro\PhpInsights\Domain\Insights\ForbiddenNormalClasses;
use NunoMaduro\PhpInsights\Domain\Insights\ForbiddenPrivateMethods;
use NunoMaduro\PhpInsights\Domain\Insights\ForbiddenTraits;
use NunoMaduro\PhpInsights\Domain\Metrics\Architecture\Classes;
use SlevomatCodingStandard\Sniffs\Commenting\UselessFunctionDocCommentSniff;
use SlevomatCodingStandard\Sniffs\Namespaces\AlphabeticallySortedUsesSniff;
use SlevomatCodingStandard\Sniffs\TypeHints\DeclareStrictTypesSniff;
use SlevomatCodingStandard\Sniffs\TypeHints\DisallowMixedTypeHintSniff;
use SlevomatCodingStandard\Sniffs\TypeHints\ParameterTypeHintSniff;
use SlevomatCodingStandard\Sniffs\TypeHints\PropertyTypeHintSniff;
use SlevomatCodingStandard\Sniffs\TypeHints\ReturnTypeHintSniff;
return [
/*
|--------------------------------------------------------------------------
| Default Preset
|--------------------------------------------------------------------------
|
| This option controls the default preset that will be used by PHP Insights
| to make your code reliable, simple, and clean. However, you can always
| adjust the `Metrics` and `Insights` below in this configuration file.
|
| Supported: "default", "laravel", "symfony", "magento2", "drupal"
|
*/
'preset' => 'laravel',
/*
|--------------------------------------------------------------------------
| IDE
|--------------------------------------------------------------------------
|
| This options allow to add hyperlinks in your terminal to quickly open
| files in your favorite IDE while browsing your PhpInsights report.
|
| Supported: "textmate", "macvim", "emacs", "sublime", "phpstorm",
| "atom", "vscode".
|
| If you have another IDE that is not in this list but which provide an
| url-handler, you could fill this config with a pattern like this:
|
| myide://open?url=file://%f&line=%l
|
*/
'ide' => null,
/*
|--------------------------------------------------------------------------
| Configuration
|--------------------------------------------------------------------------
|
| Here you may adjust all the various `Insights` that will be used by PHP
| Insights. You can either add, remove or configure `Insights`. Keep in
| mind that all added `Insights` must belong to a specific `Metric`.
|
*/
'exclude' => [
// 'path/to/directory-or-file'
],
'add' => [
Classes::class => [
ForbiddenFinalClasses::class,
],
],
'remove' => [
AlphabeticallySortedUsesSniff::class,
DeclareStrictTypesSniff::class,
DisallowMixedTypeHintSniff::class,
ForbiddenDefineFunctions::class,
ForbiddenNormalClasses::class,
ForbiddenTraits::class,
ParameterTypeHintSniff::class,
PropertyTypeHintSniff::class,
ReturnTypeHintSniff::class,
UselessFunctionDocCommentSniff::class,
],
'config' => [
ForbiddenPrivateMethods::class => [
'title' => 'The usage of private methods is not idiomatic in Laravel.',
],
],
/*
|--------------------------------------------------------------------------
| Requirements
|--------------------------------------------------------------------------
|
| Here you may define a level you want to reach per `Insights` category.
| When a score is lower than the minimum level defined, then an error
| code will be returned. This is optional and individually defined.
|
*/
'requirements' => [
// 'min-quality' => 0,
// 'min-complexity' => 0,
// 'min-architecture' => 0,
// 'min-style' => 0,
// 'disable-security-check' => false,
],
];

View File

@ -164,7 +164,7 @@ return [
| |
*/ */
'secure' => env('SESSION_SECURE_COOKIE', false), 'secure' => env('SESSION_SECURE_COOKIE', null),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

View File

@ -30,4 +30,4 @@ $factory->define(App\Product::class, function (Faker $faker) {
return factory(App\User::class)->create()->id; return factory(App\User::class)->create()->id;
}, },
]; ];
}); });

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration class CreateUsersTable extends Migration
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePasswordResetsTable extends Migration class CreatePasswordResetsTable extends Migration
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration class CreateProductsTable extends Migration
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateItemsTable extends Migration class CreateItemsTable extends Migration
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddLocationToUsers extends Migration class AddLocationToUsers extends Migration
{ {

View File

@ -1,5 +1,7 @@
<?php <?php
namespace Database\Seeders;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder class DatabaseSeeder extends Seeder

2
deploy.sh Normal file
View File

@ -0,0 +1,2 @@
#!/bin/sh
git checkout production && git merge master && git checkout - && git push origin production && ssh -A contabo -t "cd /var/www/shareit.brunofontes.net; git fetch --all; git checkout --force production; git pull origin production --force; ~/composer.phar install -n --optimize-autoloader --no-dev; npm install"

25525
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -10,15 +10,15 @@
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
}, },
"devDependencies": { "devDependencies": {
"axios": "^0.18", "axios": "^0.21",
"bootstrap": "^4.5.2", "bootstrap": "^4.6.0",
"cross-env": "^5.2.1", "cross-env": "^5.2.1",
"jquery": "^3.5.1", "jquery": "^3.5.1",
"laravel-mix": "^5.0.5", "laravel-mix": "^6.0.18",
"lodash": "^4.17.20", "lodash": "^4.17.21",
"popper.js": "^1.16.1", "popper.js": "^1.16.1",
"resolve-url-loader": "^3.1.0", "resolve-url-loader": "^3.1.3",
"sass": "^1.26.10", "sass": "^1.32.12",
"sass-loader": "^8.0.2", "sass-loader": "^8.0.2",
"vue": "^2.6.12", "vue": "^2.6.12",
"vue-template-compiler": "^2.6.12" "vue-template-compiler": "^2.6.12"

17
phpstan.neon Normal file
View File

@ -0,0 +1,17 @@
includes:
- ./vendor/nunomaduro/larastan/extension.neon
parameters:
paths:
- app
# The level 8 is the highest level
level: 5
ignoreErrors:
- '#Unsafe usage of new static#'
excludePaths:
- ./*/*/FileToBeExcluded.php
checkMissingIterableValueType: false

View File

@ -70,4 +70,4 @@ return [
To be able to do that you just need to select the item.</p> To be able to do that you just need to select the item.</p>
<p class="mb-4">When adding a Product, you can specify a webpage (this is optional).</p>', <p class="mb-4">When adding a Product, you can specify a webpage (this is optional).</p>',
]; ];

View File

@ -9,4 +9,4 @@ return [
'cancel_alert' => 'Cancel Alert', 'cancel_alert' => 'Cancel Alert',
'alert_me' => 'Alert me', 'alert_me' => 'Alert me',
'take' => 'Take It' 'take' => 'Take It'
]; ];

View File

@ -37,4 +37,4 @@ return [
*/ */
'back' => 'BACK', 'back' => 'BACK',
]; ];

View File

@ -2,7 +2,7 @@
/** /**
* Strings from the product pages * Strings from the product pages
* They are separeted by the file that calls them. * They are separeted by the file that calls them.
* Sometimes, a string is used on another file, * Sometimes, a string is used on another file,
* so it will stay at the common segment. * so it will stay at the common segment.
*/ */
@ -22,7 +22,7 @@ return [
'100yearsSolitude' => 'One Hundred Years of Solitude', '100yearsSolitude' => 'One Hundred Years of Solitude',
/** /**
* addProductForm.blade.php * addProductForm.blade.php
*/ */
'name' => 'Name:', 'name' => 'Name:',
'book' => 'Book', 'book' => 'Book',
@ -60,4 +60,4 @@ return [
'noItemsYet' => 'There are no items yet. Include one with the form above.', 'noItemsYet' => 'There are no items yet. Include one with the form above.',
'addItem' => 'Add item', 'addItem' => 'Add item',
'back' => 'BACK', 'back' => 'BACK',
]; ];

View File

@ -7,4 +7,4 @@ return [
'Help' => 'Help', 'Help' => 'Help',
'copyright' => '© 2018 Bruno Fontes All Rights Reserved', 'copyright' => '© 2018 Bruno Fontes All Rights Reserved',
'byAuthor' => 'By Bruno Fontes', 'byAuthor' => 'By Bruno Fontes',
]; ];

View File

@ -71,4 +71,4 @@ return [
Para fazer isso, você precisa clicar no item que deseja compartilhar e incluir outras pessoas.</p> Para fazer isso, você precisa clicar no item que deseja compartilhar e incluir outras pessoas.</p>
<p class="mb-4">Ao adicionar um produto, você pode especificar um site (opcional).</p>', <p class="mb-4">Ao adicionar um produto, você pode especificar um site (opcional).</p>',
]; ];

View File

@ -9,4 +9,4 @@ return [
'cancel_alert' => 'Cancelar alerta', 'cancel_alert' => 'Cancelar alerta',
'alert_me' => 'Alertar', 'alert_me' => 'Alertar',
'take' => 'Usar' 'take' => 'Usar'
]; ];

View File

@ -36,4 +36,4 @@ return [
* String from item.blade.php * String from item.blade.php
*/ */
'back' => 'VOLTAR', 'back' => 'VOLTAR',
]; ];

View File

@ -2,7 +2,7 @@
/** /**
* Strings from the product pages * Strings from the product pages
* They are separeted by the file that calls them. * They are separeted by the file that calls them.
* Sometimes, a string is used on another file, * Sometimes, a string is used on another file,
* so it will stay at the common segment. * so it will stay at the common segment.
*/ */
@ -20,7 +20,7 @@ return [
'100yearsSolitude' => 'Cem anos de solidão', '100yearsSolitude' => 'Cem anos de solidão',
/** /**
* addProductForm.blade.php * addProductForm.blade.php
*/ */
'name' => 'Nome:', 'name' => 'Nome:',
'book' => 'Livro', 'book' => 'Livro',
@ -58,4 +58,4 @@ return [
'noItemsYet' => 'Ainda não há itens cadastrados. Inclua um no formulário acima.', 'noItemsYet' => 'Ainda não há itens cadastrados. Inclua um no formulário acima.',
'addItem' => 'Incluir item', 'addItem' => 'Incluir item',
'back' => 'VOLTAR', 'back' => 'VOLTAR',
]; ];

View File

@ -7,4 +7,4 @@ return [
'Help' => 'Ajuda', 'Help' => 'Ajuda',
'copyright' => '© 2018 Bruno Fontes Todos os direitos reservados', 'copyright' => '© 2018 Bruno Fontes Todos os direitos reservados',
'byAuthor' => 'Por Bruno Fontes', 'byAuthor' => 'Por Bruno Fontes',
]; ];

View File

@ -14,8 +14,10 @@
</div> </div>
@endif @endif
<form class="d-inline" method="POST" action="{{ route('verification.resend') }}">
@csrf
{{ __('Before proceeding, please check your email for a verification link.') }} {{ __('Before proceeding, please check your email for a verification link.') }}
{{ __('If you did not receive the email') }}, <a href="{{ route('verification.resend') }}">{{ __('click here to request another') }}</a>. {{ __('If you did not receive the email') }}, <button type="submit" class="btn btn-link p-0 m-0 align-baseline">{{ __('click here to request another') }}</button>.
</div> </div>
</div> </div>
</div> </div>

View File

@ -3,11 +3,13 @@
@section('content') @section('content')
<script type="text/javascript"> <script type="text/javascript">
setInterval(function() { setInterval(
if (!document.hasFocus() ) { function() {
if (!document.hasFocus() ) {
window.location.reload(true); window.location.reload(true);
} }
}, 2*60000); //NOTE: period is passed in milliseconds },
2*60000); //NOTE: period is passed in milliseconds
</script> </script>
<div class="container"> <div class="container">

View File

@ -1,19 +1,3 @@
<!-- Start Open Web Analytics Tracker -->
<script type="text/javascript"> <script type="text/javascript">
//<![CDATA[ var owa_baseUrl='https://brunofontes.net/owa/';var owa_cmds=owa_cmds||[];owa_cmds.push(['setSiteId','15a38975230dfe7528d647a1419be7f7']);owa_cmds.push(['trackPageView']);owa_cmds.push(['trackClicks']);owa_cmds.push(['trackDomStream']);(function(){var _owa=document.createElement('script');_owa.type='text/javascript';_owa.async=true;owa_baseUrl=('https:'==document.location.protocol?window.owa_baseSecUrl||owa_baseUrl.replace(/http:/,'https:'):owa_baseUrl);_owa.src=owa_baseUrl+'modules/base/js/owa.tracker-combined-min.js';var _owa_s=document.getElementsByTagName('script')[0];_owa_s.parentNode.insertBefore(_owa,_owa_s)}());
var owa_baseUrl = 'https://brunofontes.net/owa/';
var owa_cmds = owa_cmds || [];
owa_cmds.push(['setSiteId', '15a38975230dfe7528d647a1419be7f7']);
owa_cmds.push(['trackPageView']);
owa_cmds.push(['trackClicks']);
owa_cmds.push(['trackDomStream']);
(function() {
var _owa = document.createElement('script'); _owa.type = 'text/javascript'; _owa.async = true;
owa_baseUrl = ('https:' == document.location.protocol ? window.owa_baseSecUrl || owa_baseUrl.replace(/http:/, 'https:') : owa_baseUrl );
_owa.src = owa_baseUrl + 'modules/base/js/owa.tracker-combined-min.js';
var _owa_s = document.getElementsByTagName('script')[0]; _owa_s.parentNode.insertBefore(_owa, _owa_s);
}());
//]]>
</script> </script>
<!-- End Open Web Analytics Code -->

1
ssh_homestead.sh Normal file
View File

@ -0,0 +1 @@
ssh homestead -t "cd code/Bruno\ Fontes/shareit; bash --login"

4
start_vagrant.sh Normal file
View File

@ -0,0 +1,4 @@
#!/bin/zsh
builtin cd ~/development/laravelHomestead && /usr/bin/vagrant up && builtin cd -
~/Apps/firefox/firefox-bin http://shareit.test
~/Apps/firefox/firefox-bin https://mailtrap.io/inboxes/455614/messages

View File

@ -3,8 +3,8 @@
namespace Tests\Feature; namespace Tests\Feature;
use \App\Product; use \App\Product;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class ExampleTest extends TestCase class ExampleTest extends TestCase
{ {

View File

@ -3,7 +3,6 @@
namespace Tests\Unit; namespace Tests\Unit;
use Tests\TestCase; use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ExampleTest extends TestCase class ExampleTest extends TestCase
{ {

1
updateCompserNPM.sh Normal file
View File

@ -0,0 +1 @@
ssh homestead -t 'cd code/Bruno\ Fontes/shareit; echo; echo -n "Press enter to update Composer..."; read; composer update; echo; echo -n "Press enter to update NPM..."; read; npm update; echo; echo -n "Press enter to exit..."; read'