diff --git a/.env.example b/.env.example index eb5ea42..a162327 100644 --- a/.env.example +++ b/.env.example @@ -6,6 +6,7 @@ APP_LOG_LEVEL=debug APP_URL=http://localhost FRONTEND=http://localhost:8080 +LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 @@ -45,4 +46,7 @@ PUSHER_APP_CLUSTER=mt1 JWT_SECRET= JWT_TTL=131500 JWT_REFRESH_TTL=525600 -JWT_BLACKLIST_GRACE_PERIOD=30 \ No newline at end of file +JWT_BLACKLIST_GRACE_PERIOD=30 + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index c5e1723..dca62b2 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -55,6 +55,7 @@ class Kernel extends HttpKernel 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'jwt.auth' => \Tymon\JWTAuth\Middleware\GetUserFromToken::class, diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php index d5233b9..d14591b 100644 --- a/app/Http/Middleware/TrustProxies.php +++ b/app/Http/Middleware/TrustProxies.php @@ -15,15 +15,16 @@ class TrustProxies extends Middleware protected $proxies; /** - * The current proxy header mappings. + * The headers that should be used to detect proxies. * - * @var array + * @var string */ - protected $headers = [ - // Request::HEADER_FORWARDED => 'FORWARDED', - // Request::HEADER_X_FORWARDED_FOR => 'X_FORWARDED_FOR', - // Request::HEADER_X_FORWARDED_HOST => 'X_FORWARDED_HOST', - // Request::HEADER_X_FORWARDED_PORT => 'X_FORWARDED_PORT', - // Request::HEADER_X_FORWARDED_PROTO => 'X_FORWARDED_PROTO', - ]; + protected $headers = Request::HEADER_X_FORWARDED_ALL; + // protected $headers = [ + // Request::HEADER_FORWARDED => 'FORWARDED', + // Request::HEADER_X_FORWARDED_FOR => 'X_FORWARDED_FOR', + // Request::HEADER_X_FORWARDED_HOST => 'X_FORWARDED_HOST', + // Request::HEADER_X_FORWARDED_PORT => 'X_FORWARDED_PORT', + // Request::HEADER_X_FORWARDED_PROTO => 'X_FORWARDED_PROTO', + // ]; } diff --git a/composer.json b/composer.json index 8a74366..57f583c 100644 --- a/composer.json +++ b/composer.json @@ -5,19 +5,20 @@ "license": "MIT", "type": "project", "require": { - "php": ">=7.0.0", + "php": ">=7.1.3", "barryvdh/laravel-cors": "^0.11.0", - "fideloper/proxy": "~3.3", - "laravel/framework": "5.5.*", + "fideloper/proxy": "~4.0", + "laravel/framework": "5.6.*", "laravel/tinker": "~1.0", - "tymon/jwt-auth": "1.0.0-rc.1", - "dingo/api": "2.0.0-alpha1" + "tymon/jwt-auth": "1.0.0-rc.2", + "dingo/api": "2.0.0-alpha2" }, "require-dev": { "filp/whoops": "~2.0", "fzaninotto/faker": "~1.4", "mockery/mockery": "~1.0", - "phpunit/phpunit": "~6.0", + "nunomaduro/collision": "~2.0", + "phpunit/phpunit": "~7.0", "reliese/laravel": "^0.0.13", "symfony/thanks": "^1.0" }, @@ -57,5 +58,7 @@ "preferred-install": "dist", "sort-packages": true, "optimize-autoloader": true - } + }, + "minimum-stability": "dev", + "prefer-stable": true } diff --git a/config/filesystems.php b/config/filesystems.php index bb02150..d11099e 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -37,7 +37,7 @@ return [ | may even configure multiple disks of the same driver. Defaults have | been setup for each driver as an example of the required options. | - | Supported Drivers: "local", "ftp", "s3", "rackspace" + | Supported Drivers: "local", "ftp", "sftp", "s3", "rackspace" | */ @@ -71,6 +71,7 @@ return [ 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), ], ], diff --git a/config/hashing.php b/config/hashing.php new file mode 100644 index 0000000..f929cf0 --- /dev/null +++ b/config/hashing.php @@ -0,0 +1,20 @@ + 'bcrypt', + +]; diff --git a/config/jwt.php b/config/jwt.php index efaaf22..37ddf91 100644 --- a/config/jwt.php +++ b/config/jwt.php @@ -16,20 +16,87 @@ return [ | JWT Authentication Secret |-------------------------------------------------------------------------- | - | Don't forget to set this, as it will be used to sign your tokens. - | A helper command is provided for this: `php artisan jwt:generate` + | Don't forget to set this in your .env file, as it will be used to sign + | your tokens. A helper command is provided for this: + | `php artisan jwt:secret` + | + | Note: This will be used for Symmetric algorithms only (HMAC), + | since RSA and ECDSA use a private/public key combo (See below). | */ 'secret' => env('JWT_SECRET'), + /* + |-------------------------------------------------------------------------- + | JWT Authentication Keys + |-------------------------------------------------------------------------- + | + | The algorithm you are using, will determine whether your tokens are + | signed with a random string (defined in `JWT_SECRET`) or using the + | following public & private keys. + | + | Symmetric Algorithms: + | HS256, HS384 & HS512 will use `JWT_SECRET`. + | + | Asymmetric Algorithms: + | RS256, RS384 & RS512 / ES256, ES384 & ES512 will use the keys below. + | + */ + + 'keys' => [ + + /* + |-------------------------------------------------------------------------- + | Public Key + |-------------------------------------------------------------------------- + | + | A path or resource to your public key. + | + | E.g. 'file://path/to/public/key' + | + */ + + 'public' => env('JWT_PUBLIC_KEY'), + + /* + |-------------------------------------------------------------------------- + | Private Key + |-------------------------------------------------------------------------- + | + | A path or resource to your private key. + | + | E.g. 'file://path/to/private/key' + | + */ + + 'private' => env('JWT_PRIVATE_KEY'), + + /* + |-------------------------------------------------------------------------- + | Passphrase + |-------------------------------------------------------------------------- + | + | The passphrase for your private key. Can be null if none set. + | + */ + + 'passphrase' => env('JWT_PASSPHRASE'), + + ], + /* |-------------------------------------------------------------------------- | JWT time to live |-------------------------------------------------------------------------- | | Specify the length of time (in minutes) that the token will be valid for. - | Defaults to 1 hour + | Defaults to 1 hour. + | + | You can also set this to null, to yield a never expiring token. + | Some people may want this behaviour for e.g. a mobile app. + | This is not particularly recommended, so make sure you have appropriate + | systems in place to revoke the token if necessary. | */ @@ -43,7 +110,12 @@ return [ | Specify the length of time (in minutes) that the token can be refreshed | within. I.E. The user can refresh their token within a 2 week window of | the original token being created until they must re-authenticate. - | Defaults to 2 weeks + | Defaults to 2 weeks. + | + | You can also set this to null, to yield an infinite refresh time. + | Some may want this instead of never expiring tokens for e.g. a mobile app. + | This is not particularly recommended, so make sure you have appropriate + | systems in place to revoke the token if necessary. | */ @@ -56,37 +128,13 @@ return [ | | Specify the hashing algorithm that will be used to sign the token. | - | See here: https://github.com/namshi/jose/tree/2.2.0/src/Namshi/JOSE/Signer - | for possible values + | See here: https://github.com/namshi/jose/tree/master/src/Namshi/JOSE/Signer/OpenSSL + | for possible values. | */ 'algo' => 'HS256', - /* - |-------------------------------------------------------------------------- - | User Model namespace - |-------------------------------------------------------------------------- - | - | Specify the full namespace to your User model. - | e.g. 'Acme\Entities\User' - | - */ - - 'user' => 'App\User', - - /* - |-------------------------------------------------------------------------- - | User identifier - |-------------------------------------------------------------------------- - | - | Specify a unique property of the user that will be added as the 'sub' - | claim of the token payload. - | - */ - - 'identifier' => 'id', - /* |-------------------------------------------------------------------------- | Required Claims @@ -98,7 +146,68 @@ return [ | */ - 'required_claims' => ['iss', 'iat', 'exp', 'nbf', 'sub', 'jti'], + 'required_claims' => [ + 'iss', + 'iat', + 'exp', + 'nbf', + 'sub', + 'jti', + ], + + /* + |-------------------------------------------------------------------------- + | Persistent Claims + |-------------------------------------------------------------------------- + | + | Specify the claim keys to be persisted when refreshing a token. + | `sub` and `iat` will automatically be persisted, in + | addition to the these claims. + | + | Note: If a claim does not exist then it will be ignored. + | + */ + + 'persistent_claims' => [ + // 'foo', + // 'bar', + ], + + /* + |-------------------------------------------------------------------------- + | Lock Subject + |-------------------------------------------------------------------------- + | + | This will determine whether a `prv` claim is automatically added to + | the token. The purpose of this is to ensure that if you have multiple + | authentication models e.g. `App\User` & `App\OtherPerson`, then we + | should prevent one authentication request from impersonating another, + | if 2 tokens happen to have the same id across the 2 different models. + | + | Under specific circumstances, you may want to disable this behaviour + | e.g. if you only have one authentication model, then you would save + | a little on token size. + | + */ + + 'lock_subject' => true, + + /* + |-------------------------------------------------------------------------- + | Leeway + |-------------------------------------------------------------------------- + | + | This property gives the jwt timestamp claims some "leeway". + | Meaning that if you have any unavoidable slight clock skew on + | any of your servers then this will afford you some level of cushioning. + | + | This applies to the claims `iat`, `nbf` and `exp`. + | + | Specify in seconds - only if you know you need it. + | + */ + + 'leeway' => env('JWT_LEEWAY', 0), /* |-------------------------------------------------------------------------- @@ -112,6 +221,39 @@ return [ 'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true), + /* + | ------------------------------------------------------------------------- + | Blacklist Grace Period + | ------------------------------------------------------------------------- + | + | When multiple concurrent requests are made with the same JWT, + | it is possible that some of them fail, due to token regeneration + | on every request. + | + | Set grace period in seconds to prevent parallel request failure. + | + */ + + 'blacklist_grace_period' => env('JWT_BLACKLIST_GRACE_PERIOD', 0), + + /* + |-------------------------------------------------------------------------- + | Cookies encryption + |-------------------------------------------------------------------------- + | + | By default Laravel encrypt cookies for security reason. + | If you decide to not decrypt cookies, you will have to configure Laravel + | to not encrypt your cookie token by adding its name into the $except + | array available in the middleware "EncryptCookies" provided by Laravel. + | see https://laravel.com/docs/master/responses#cookies-and-encryption + | for details. + | + | Set it to true if you want to decrypt cookies. + | + */ + + 'decrypt_cookies' => false, + /* |-------------------------------------------------------------------------- | Providers @@ -123,18 +265,6 @@ return [ 'providers' => [ - /* - |-------------------------------------------------------------------------- - | User Provider - |-------------------------------------------------------------------------- - | - | Specify the provider that is used to find the user based - | on the subject claim - | - */ - - 'user' => Tymon\JWTAuth\Providers\User\EloquentUserAdapter::class, - /* |-------------------------------------------------------------------------- | JWT Provider @@ -144,7 +274,7 @@ return [ | */ - 'jwt' => Tymon\JWTAuth\Providers\JWT\Namshi::class, + 'jwt' => Tymon\JWTAuth\Providers\JWT\Lcobucci::class, /* |-------------------------------------------------------------------------- @@ -162,7 +292,7 @@ return [ | Storage Provider |-------------------------------------------------------------------------- | - | Specify the provider that is used to store tokens in the blacklist + | Specify the provider that is used to store tokens in the blacklist. | */ diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..902efaf --- /dev/null +++ b/config/logging.php @@ -0,0 +1,70 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['single'], + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => 'debug', + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => 'debug', + 'days' => 7, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => 'critical', + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => 'debug', + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => 'debug', + ], + ], + +]; diff --git a/config/models.php b/config/models.php deleted file mode 100644 index d3ef801..0000000 --- a/config/models.php +++ /dev/null @@ -1,296 +0,0 @@ - [ - - /* - |-------------------------------------------------------------------------- - | Model Files Location - |-------------------------------------------------------------------------- - | - | We need a location to store your new generated files. All files will be - | placed within this directory. When you turn on base files, they will - | be placed within a Base directory inside this location. - | - */ - - 'path' => app_path('Models'), - - /* - |-------------------------------------------------------------------------- - | Model Namespace - |-------------------------------------------------------------------------- - | - | Every generated model will belong to this namespace. It is suggested - | that this namespace should follow PSR-4 convention and be very - | similar to the path of your models defined above. - | - */ - - 'namespace' => 'App\Models', - - /* - |-------------------------------------------------------------------------- - | Parent Class - |-------------------------------------------------------------------------- - | - | All Eloquent models should inherit from Eloquent Model class. However, - | you can define a custom Eloquent model that suits your needs. - | As an example one custom model has been added for you which - | will allow you to create custom database castings. - | - */ - - 'parent' => Reliese\Database\Eloquent\Model::class, - - /* - |-------------------------------------------------------------------------- - | Traits - |-------------------------------------------------------------------------- - | - | Sometimes you may want to append certain traits to all your models. - | If that is what you need, you may list them bellow. - | As an example we have a BitBooleans trait which will treat MySQL bit - | data type as booleans. You might probably not need it, but it is - | an example of how you can customize your models. - | - */ - - 'use' => [ - // Reliese\Database\Eloquent\BitBooleans::class, - // Reliese\Database\Eloquent\BlamableBehavior::class, - ], - - /* - |-------------------------------------------------------------------------- - | Model Connection - |-------------------------------------------------------------------------- - | - | If you wish your models had appended the connection from which they - | were generated, you should set this value to true and your - | models will have the connection property filled. - | - */ - - 'connection' => false, - - /* - |-------------------------------------------------------------------------- - | Timestamps - |-------------------------------------------------------------------------- - | - | If your tables have CREATED_AT and UPDATED_AT timestamps you may - | enable them and your models will fill their values as needed. - | You can also specify which fields should be treated as timestamps - | in case you don't follow the naming convention Eloquent uses. - | If your table doesn't have these fields, timestamps will be - | disabled for your model. - | - */ - - 'timestamps' => true, - - // 'timestamps' => [ - // 'enabled' => true, - // 'fields' => [ - // 'CREATED_AT' => 'created_at', - // 'UPDATED_AT' => 'updated_at', - // ] - // ], - - /* - |-------------------------------------------------------------------------- - | Soft Deletes - |-------------------------------------------------------------------------- - | - | If your tables support soft deletes with a DELETED_AT attribute, - | you can enable them here. You can also specify which field - | should be treated as a soft delete attribute in case you - | don't follow the naming convention Eloquent uses. - | If your table doesn't have this field, soft deletes will be - | disabled for your model. - | - */ - - 'soft_deletes' => true, - - // 'soft_deletes' => [ - // 'enabled' => true, - // 'field' => 'deleted_at', - // ], - - /* - |-------------------------------------------------------------------------- - | Date Format - |-------------------------------------------------------------------------- - | - | Here you may define your models' date format. The following format - | is the default format Eloquent uses. You won't see it in your - | models unless you change it to a more convenient value. - | - */ - - 'date_format' => 'Y-m-d H:i:s', - - /* - |-------------------------------------------------------------------------- - | Pagination - |-------------------------------------------------------------------------- - | - | Here you may define how many models Eloquent should display when - | paginating them. The default number is 15, so you might not - | see this number in your models unless you change it. - | - */ - - 'per_page' => 15, - - /* - |-------------------------------------------------------------------------- - | Base Files - |-------------------------------------------------------------------------- - | - | By default, your models will be generated in your models path, but - | when you generate them again they will be replaced by new ones. - | You may want to customize your models and, at the same time, be - | able to generate them as your tables change. For that, you - | can enable base files. These files will be replaced whenever - | you generate them, but your customized files will not be touched. - | - */ - - 'base_files' => false, - - /* - |-------------------------------------------------------------------------- - | Snake Attributes - |-------------------------------------------------------------------------- - | - | Eloquent treats your model attributes as snake cased attributes, but - | if you have camel-cased fields in your database you can disable - | that behaviour and use camel case attributes in your models. - | - */ - - 'snake_attributes' => true, - - /* - |-------------------------------------------------------------------------- - | Qualified Table Names - |-------------------------------------------------------------------------- - | - | If some of your tables have cross-database relationships (probably in - | MySQL), you can make sure your models take into account their - | respective database schema. - | - */ - - 'qualified_tables' => false, - - /* - |-------------------------------------------------------------------------- - | Hidden Attributes - |-------------------------------------------------------------------------- - | - | When casting your models into arrays or json, the need to hide some - | attributes sometimes arise. If your tables have some fields you - | want to hide, you can define them bellow. - | Some fields were defined for you. - | - */ - - 'hidden' => [ - '*secret*', '*password', '*token', - ], - - /* - |-------------------------------------------------------------------------- - | Mass Assignment Guarded Attributes - |-------------------------------------------------------------------------- - | - | You may want to protect some fields from mass assignment. You can - | define them bellow. Some fields were defined for you. - | Your fillable attributes will be those which are not in the list - | excluding your models' primary keys. - | - */ - - 'guarded' => [ - // 'created_by', 'updated_by' - ], - - /* - |-------------------------------------------------------------------------- - | Casts - |-------------------------------------------------------------------------- - | - | You may want to specify which of your table fields should be casted as - | something different than a string. For instance, you may want a - | text field be casted as an array or and object. - | - | You may define column patterns which will be casted using the value - | assigned. We have defined some fields for you. Feel free to - | modify them to fit your needs. - | - */ - - 'casts' => [ - '*_json' => 'json', - ], - - /* - |-------------------------------------------------------------------------- - | Excluded Tables - |-------------------------------------------------------------------------- - | - | When performing the generation of models you may want to skip some of - | them, because you don't want a model for them or any other reason. - | You can define those tables bellow. The migrations table was - | filled for you, since you may not want a model for it. - | - */ - - 'except' => [ - 'migrations', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Database Specifics - |-------------------------------------------------------------------------- - | - | In this section you may define the default configuration for each model - | that will be generated from a specific database. You can also nest - | table specific configurations. - | These values will override those defined in the section above. - | - */ - - // 'shop' => [ - // 'path' => app_path(), - // 'namespace' => 'App', - // 'snake_attributes' => false, - // 'qualified_tables' => true, - // 'use' => [ - // Reliese\Database\Eloquent\BitBooleans::class, - // ], - // 'except' => ['migrations'], - // // Table Specifics Bellow: - // 'user' => [ - // // Don't use any default trait - // 'use' => [], - // ] - // ], -]; diff --git a/config/queue.php b/config/queue.php index 8c06fcc..87b1b1b 100644 --- a/config/queue.php +++ b/config/queue.php @@ -62,6 +62,7 @@ return [ 'connection' => 'default', 'queue' => 'default', 'retry_after' => 90, + 'block_for' => null, ], ], diff --git a/package.json b/package.json index 4671fa8..159afe3 100644 --- a/package.json +++ b/package.json @@ -1,23 +1,23 @@ { - "private": true, - "scripts": { - "dev": "npm run development", - "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", - "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", - "watch-poll": "npm run watch -- --watch-poll", - "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", - "prod": "npm run production", - "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", - "clear": "php artisan cache:clear && php artisan view:clear && php artisan route:clear" - }, - "devDependencies": { - "axios": "^0.17", - "bootstrap-sass": "^3.3.7", - "cross-env": "^5.1", - "jquery": "^3.2", - "laravel-echo": "^1.3.2", - "laravel-mix": "^1.0", - "lodash": "^4.17.4", - "vue": "^2.5.7" - } + "private": true, + "scripts": { + "dev": "npm run development", + "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", + "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", + "watch-poll": "npm run watch -- --watch-poll", + "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", + "prod": "npm run production", + "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", + "clear": "php artisan cache:clear && php artisan view:clear && php artisan route:clear" + }, + "devDependencies": { + "axios": "^0.18", + "bootstrap": "^4.0.0", + "popper.js": "^1.12", + "cross-env": "^5.1", + "jquery": "^3.2", + "laravel-mix": "^2.0", + "lodash": "^4.17.4", + "vue": "^2.5.7" + } } diff --git a/public/fonts/icons.eot b/public/fonts/icons.eot deleted file mode 100644 index e9f60ca..0000000 Binary files a/public/fonts/icons.eot and /dev/null differ diff --git a/public/fonts/icons.svg b/public/fonts/icons.svg deleted file mode 100644 index 855c845..0000000 --- a/public/fonts/icons.svg +++ /dev/null @@ -1,2671 +0,0 @@ - - - - -Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 - By ,,, -Copyright Dave Gandy 2016. All rights reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/fonts/icons.ttf b/public/fonts/icons.ttf deleted file mode 100644 index 35acda2..0000000 Binary files a/public/fonts/icons.ttf and /dev/null differ diff --git a/public/fonts/icons.woff b/public/fonts/icons.woff deleted file mode 100644 index 400014a..0000000 Binary files a/public/fonts/icons.woff and /dev/null differ diff --git a/public/fonts/icons.woff2 b/public/fonts/icons.woff2 deleted file mode 100644 index 4d13fc6..0000000 Binary files a/public/fonts/icons.woff2 and /dev/null differ diff --git a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.eot b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.eot deleted file mode 100644 index b93a495..0000000 Binary files a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.eot and /dev/null differ diff --git a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.svg b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.svg deleted file mode 100644 index 94fb549..0000000 --- a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.ttf b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.ttf deleted file mode 100644 index 1413fc6..0000000 Binary files a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.ttf and /dev/null differ diff --git a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff deleted file mode 100644 index 9e61285..0000000 Binary files a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff2 b/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b5..0000000 Binary files a/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff2 and /dev/null differ diff --git a/readme.md b/readme.md index fdf46d8..5e90f48 100644 --- a/readme.md +++ b/readme.md @@ -33,6 +33,7 @@ We would like to extend our thanks to the following sponsors for helping fund on - **[Vehikl](https://vehikl.com/)** - **[Tighten Co.](https://tighten.co)** +- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** - **[British Software Development](https://www.britishsoftware.co)** - [Fragrantica](https://www.fragrantica.com) - [SOFTonSOFA](https://softonsofa.com/) diff --git a/resources/assets/js/bootstrap.js b/resources/assets/js/bootstrap.js index ee5b76a..5afee91 100644 --- a/resources/assets/js/bootstrap.js +++ b/resources/assets/js/bootstrap.js @@ -1,5 +1,6 @@ window._ = require('lodash'); +window.Popper = require('popper.js').default; /** * We'll load jQuery and the Bootstrap jQuery plugin which provides support @@ -10,7 +11,7 @@ window._ = require('lodash'); try { window.$ = window.jQuery = require('jquery'); - require('bootstrap-sass'); + require('bootstrap'); } catch (e) {} /** @@ -43,9 +44,13 @@ window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; * allows your team to easily build robust real-time web applications. */ -/*import Echo from 'laravel-echo' +// import Echo from 'laravel-echo' -window.Echo = new Echo({ - broadcaster: 'socket.io', - host: window.location.hostname + ':6001' -});*/ +// window.Pusher = require('pusher-js'); + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: process.env.MIX_PUSHER_APP_KEY, +// cluster: process.env.MIX_PUSHER_APP_CLUSTER, +// encrypted: true +// }); diff --git a/resources/assets/sass/_variables.scss b/resources/assets/sass/_variables.scss index a83777b..d6b975c 100644 --- a/resources/assets/sass/_variables.scss +++ b/resources/assets/sass/_variables.scss @@ -3,51 +3,23 @@ //$body-bg: #f5f8fa; $body-bg: #000; -// Borders -$laravel-border-color: darken($body-bg, 10%); -$list-group-border: $laravel-border-color; -$navbar-default-border: $laravel-border-color; -$panel-default-border: $laravel-border-color; -$panel-inner-border: $laravel-border-color; - -// Brands -$brand-primary: #3097D1; -$brand-info: #8eb4cb; -$brand-success: #2ab27b; -$brand-warning: #cbb956; -$brand-danger: #bf5329; - // Typography -$icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/"; $font-family-sans-serif: "Raleway", sans-serif; -$font-size-base: 14px; +$font-size-base: 1rem; $line-height-base: 1.6; -$text-color: #636b6f; -// Navbar -$navbar-default-bg: #121212; - -// Buttons -$btn-default-color: $text-color; - -// Inputs -$input-border: lighten($text-color, 40%); -$input-border-focus: lighten($brand-primary, 25%); -$input-color-placeholder: lighten($text-color, 30%); - -// Panels -$panel-default-heading-bg: #ababab; body{ - background-color: #000000; - color: #ffffff; -} -#app { - font-family: monospace; - font-size: large; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - text-align: left; - margin-top: 20px; - margin-left: 20px; -} + background-color: #000000; + color: #ffffff; + } + #app { + font-family: monospace; + font-size: large; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-align: left; + margin-top: 20px; + margin-left: 20px; + } + \ No newline at end of file diff --git a/resources/assets/sass/app.scss b/resources/assets/sass/app.scss index f06f703..0077cb1 100644 --- a/resources/assets/sass/app.scss +++ b/resources/assets/sass/app.scss @@ -1,3 +1,4 @@ + // Fonts @import url("https://fonts.googleapis.com/css?family=Raleway:300,400,600"); @@ -5,5 +6,9 @@ @import "variables"; // Bootstrap -@import "~bootstrap-sass/assets/stylesheets/bootstrap"; +@import '~bootstrap/scss/bootstrap'; +.navbar-laravel { + background-color: #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04); +} diff --git a/storage/app/.gitignore b/storage/app/.gitignore old mode 100755 new mode 100644 diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore old mode 100755 new mode 100644 diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore old mode 100755 new mode 100644 diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php index df7814b..ff133fb 100644 --- a/tests/CreatesApplication.php +++ b/tests/CreatesApplication.php @@ -18,7 +18,7 @@ trait CreatesApplication $app->make(Kernel::class)->bootstrap(); - Hash::setRounds(4); + Hash::driver('bcrypt')->setRounds(4); return $app; }