- Upgrade to 7.x from 6.x #11
This commit is contained in:
parent
4e44d9d996
commit
bcbd05d7d8
|
@ -63,5 +63,6 @@ class DatasetState extends Command
|
||||||
'server_date_modified' => DB::raw('now()')
|
'server_date_modified' => DB::raw('now()')
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,5 +29,6 @@ class Inspire extends Command
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
$this->comment(PHP_EOL.Inspiring::quote().PHP_EOL);
|
$this->comment(PHP_EOL.Inspiring::quote().PHP_EOL);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,5 +54,6 @@ class SolrIndexBuilder extends Command
|
||||||
// Log::debug(__METHOD__ . ': ' . 'Indexing document ' . $datasetId . ' failed: ' . $e->getMessage());
|
// Log::debug(__METHOD__ . ': ' . 'Indexing document ' . $datasetId . ' failed: ' . $e->getMessage());
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,5 +51,6 @@ class UpdateSolrDataset extends Command
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
$this->error(__METHOD__ . ': ' . 'Indexing document ' . $dataset->id . ' failed: ' . $e->getMessage());
|
$this->error(__METHOD__ . ': ' . 'Indexing document ' . $dataset->id . ' failed: ' . $e->getMessage());
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
<?php namespace App\Exceptions;
|
<?php
|
||||||
|
|
||||||
use Exception;
|
namespace App\Exceptions;
|
||||||
|
|
||||||
|
// 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
|
||||||
{
|
{
|
||||||
|
@ -12,7 +15,8 @@ class Handler extends ExceptionHandler
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $dontReport = [
|
protected $dontReport = [
|
||||||
'Symfony\Component\HttpKernel\Exception\HttpException'
|
'password',
|
||||||
|
'password_confirmation',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -20,22 +24,24 @@ class Handler extends ExceptionHandler
|
||||||
*
|
*
|
||||||
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
|
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
|
||||||
*
|
*
|
||||||
* @param \Exception $e
|
* @param \Throable $exception
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function report(Exception $e)
|
public function report(Throwable $exception)
|
||||||
{
|
{
|
||||||
return parent::report($e);
|
return parent::report($exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Render an exception into an HTTP response.
|
* Render an exception into an HTTP response.
|
||||||
*
|
*
|
||||||
* @param \Illuminate\Http\Request $request
|
* @param \Illuminate\Http\Request $request
|
||||||
* @param \Exception $e
|
* @param \Throwable $exception
|
||||||
* @return \Illuminate\Http\Response
|
* @return \Symfony\Component\HttpFoundation\Response
|
||||||
|
*
|
||||||
|
* @throws \Throwable
|
||||||
*/
|
*/
|
||||||
public function render($request, Exception $ex)
|
public function render($request, Throwable $ex)
|
||||||
{
|
{
|
||||||
if ($ex instanceof \Illuminate\Auth\Access\AuthorizationException) {
|
if ($ex instanceof \Illuminate\Auth\Access\AuthorizationException) {
|
||||||
// return $this->errorResponse($exception->getMessage(), 403);
|
// return $this->errorResponse($exception->getMessage(), 403);
|
||||||
|
|
40
app/Http/Controllers/Auth/ConfirmPasswordController.php
Normal file
40
app/Http/Controllers/Auth/ConfirmPasswordController.php
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Providers\RouteServiceProvider;
|
||||||
|
use Illuminate\Foundation\Auth\ConfirmsPasswords;
|
||||||
|
|
||||||
|
class ConfirmPasswordController extends Controller
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Confirm Password Controller
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This controller is responsible for handling password confirmations and
|
||||||
|
| uses a simple trait to include the behavior. You're free to explore
|
||||||
|
| this trait and override any functions that require customization.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
use ConfirmsPasswords;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Where to redirect users when the intended url fails.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $redirectTo = RouteServiceProvider::HOME;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new controller instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->middleware('auth');
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,14 +19,4 @@ class ForgotPasswordController extends Controller
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use SendsPasswordResetEmails;
|
use SendsPasswordResetEmails;
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new controller instance.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
$this->middleware('guest');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
namespace App\Http\Controllers\Auth;
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Providers\RouteServiceProvider;
|
||||||
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
||||||
|
|
||||||
class LoginController extends Controller
|
class LoginController extends Controller
|
||||||
|
@ -25,7 +26,7 @@ class LoginController extends Controller
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $redirectTo = '/settings';
|
protected $redirectTo = RouteServiceProvider::HOME;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new controller instance.
|
* Create a new controller instance.
|
||||||
|
@ -34,17 +35,6 @@ class LoginController extends Controller
|
||||||
*/
|
*/
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->middleware('guest', ['except' => 'logout']);
|
$this->middleware('guest')->except('logout');
|
||||||
}
|
}
|
||||||
|
|
||||||
// public function logout(Request $request)
|
|
||||||
// {
|
|
||||||
// $this->guard()->logout();
|
|
||||||
|
|
||||||
// $request->session()->flush();
|
|
||||||
|
|
||||||
// $request->session()->regenerate();
|
|
||||||
|
|
||||||
// return redirect('/');
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,12 @@
|
||||||
|
|
||||||
namespace App\Http\Controllers\Auth;
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
use App\Models\User;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Support\Facades\Validator;
|
use App\Providers\RouteServiceProvider;
|
||||||
|
use App\User;
|
||||||
use Illuminate\Foundation\Auth\RegistersUsers;
|
use Illuminate\Foundation\Auth\RegistersUsers;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
|
||||||
class RegisterController extends Controller
|
class RegisterController extends Controller
|
||||||
{
|
{
|
||||||
|
@ -27,7 +29,7 @@ class RegisterController extends Controller
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $redirectTo = '/';
|
protected $redirectTo = RouteServiceProvider::HOME;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new controller instance.
|
* Create a new controller instance.
|
||||||
|
@ -48,9 +50,9 @@ class RegisterController extends Controller
|
||||||
protected function validator(array $data)
|
protected function validator(array $data)
|
||||||
{
|
{
|
||||||
return Validator::make($data, [
|
return Validator::make($data, [
|
||||||
'name' => 'required|max:255',
|
'name' => ['required', 'string', 'max:255'],
|
||||||
'email' => 'required|email|max:255|unique:users',
|
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
|
||||||
'password' => 'required|min:6|confirmed',
|
'password' => ['required', 'string', 'min:8', 'confirmed'],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +67,7 @@ class RegisterController extends Controller
|
||||||
return User::create([
|
return User::create([
|
||||||
'name' => $data['name'],
|
'name' => $data['name'],
|
||||||
'email' => $data['email'],
|
'email' => $data['email'],
|
||||||
'password' => bcrypt($data['password']),
|
'password' => Hash::make($data['password']),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
namespace App\Http\Controllers\Auth;
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Providers\RouteServiceProvider;
|
||||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||||
|
|
||||||
class ResetPasswordController extends Controller
|
class ResetPasswordController extends Controller
|
||||||
|
@ -25,15 +26,5 @@ class ResetPasswordController extends Controller
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $redirectTo = '/';
|
protected $redirectTo = RouteServiceProvider::HOME;
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new controller instance.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
$this->middleware('guest');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
42
app/Http/Controllers/Auth/VerificationController.php
Normal file
42
app/Http/Controllers/Auth/VerificationController.php
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Providers\RouteServiceProvider;
|
||||||
|
use Illuminate\Foundation\Auth\VerifiesEmails;
|
||||||
|
|
||||||
|
class VerificationController extends Controller
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Email Verification Controller
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This controller is responsible for handling email verification for any
|
||||||
|
| user that recently registered with the application. Emails may also
|
||||||
|
| be re-sent if the user didn't receive the original email message.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
use VerifiesEmails;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Where to redirect users after verification.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $redirectTo = RouteServiceProvider::HOME;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new controller instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->middleware('auth');
|
||||||
|
$this->middleware('signed')->only('verify');
|
||||||
|
$this->middleware('throttle:6,1')->only('verify', 'resend');
|
||||||
|
}
|
||||||
|
}
|
|
@ -31,7 +31,10 @@ class SitelinkController extends Controller
|
||||||
// }
|
// }
|
||||||
// }, $years);
|
// }, $years);
|
||||||
$this->ids = array();
|
$this->ids = array();
|
||||||
return view('frontend.sitelink.index')->with(['years' => $this->years, 'documents' => $this->ids]);
|
return view(
|
||||||
|
'frontend.sitelink.index',
|
||||||
|
['years' => $this->years, 'documents' => $this->ids]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function listDocs($year)
|
public function listDocs($year)
|
||||||
|
@ -63,8 +66,10 @@ class SitelinkController extends Controller
|
||||||
//$select->select('id');
|
//$select->select('id');
|
||||||
//$this->ids = $select->pluck('id');
|
//$this->ids = $select->pluck('id');
|
||||||
//return view('rdr.sitelink.index')->with(['years'=> $this->years,'ids'=> $this->ids]);
|
//return view('rdr.sitelink.index')->with(['years'=> $this->years,'ids'=> $this->ids]);
|
||||||
return view('frontend.sitelink.index')
|
return view(
|
||||||
->with(['years' => $this->years, 'documents' => $documents]);
|
'frontend.sitelink.index',
|
||||||
|
['years' => $this->years, 'documents' => $documents]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -227,7 +227,7 @@ class DoiController extends Controller
|
||||||
$response = $this->doiClient->updateMetadataForDoi($doiValue, $newXmlMeta);
|
$response = $this->doiClient->updateMetadataForDoi($doiValue, $newXmlMeta);
|
||||||
// if operation successful, store dataste identifier
|
// if operation successful, store dataste identifier
|
||||||
if ($response->getStatusCode() == 201) {
|
if ($response->getStatusCode() == 201) {
|
||||||
$doi = $dataset->identifier();
|
$doi = $dataset->identifier;
|
||||||
// $doi['value'] = $doiValue;
|
// $doi['value'] = $doiValue;
|
||||||
// $doi['type'] = "doi";
|
// $doi['type'] = "doi";
|
||||||
// $doi['status'] = "findable";
|
// $doi['status'] = "findable";
|
||||||
|
|
|
@ -15,6 +15,7 @@ class RouteServiceProvider extends ServiceProvider
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $namespace = 'App\Http\Controllers';
|
protected $namespace = 'App\Http\Controllers';
|
||||||
|
public const HOME = '/settings';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Define your route model bindings, pattern filters, etc.
|
* Define your route model bindings, pattern filters, etc.
|
||||||
|
|
|
@ -4,6 +4,8 @@ namespace App\Providers;
|
||||||
|
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
use Solarium\Client;
|
use Solarium\Client;
|
||||||
|
use Solarium\Core\Client\Adapter\Curl;
|
||||||
|
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||||
|
|
||||||
class SolariumServiceProvider extends ServiceProvider
|
class SolariumServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
|
@ -18,6 +20,9 @@ class SolariumServiceProvider extends ServiceProvider
|
||||||
public function register()
|
public function register()
|
||||||
{
|
{
|
||||||
$this->app->bind(Client::class, function ($app) {
|
$this->app->bind(Client::class, function ($app) {
|
||||||
|
|
||||||
|
$adapter = new Curl();
|
||||||
|
$dispatcher = new EventDispatcher();
|
||||||
// $config = config('solarium');
|
// $config = config('solarium');
|
||||||
$config = array(
|
$config = array(
|
||||||
'endpoint' => array(
|
'endpoint' => array(
|
||||||
|
@ -30,7 +35,7 @@ class SolariumServiceProvider extends ServiceProvider
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
//return new Client($config);
|
//return new Client($config);
|
||||||
return new Client($config);
|
return new Client($adapter, $dispatcher, $config);
|
||||||
//return new Client($app['config']['solarium']);
|
//return new Client($app['config']['solarium']);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,24 +8,30 @@
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"type": "project",
|
"type": "project",
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.0",
|
"php": "^7.2.5||^8.0",
|
||||||
"arifhp86/laravel-clear-expired-cache-file": "^0.0.4",
|
"arifhp86/laravel-clear-expired-cache-file": "^0.0.4",
|
||||||
"astrotomic/laravel-translatable": "^11.1",
|
"astrotomic/laravel-translatable": "^11.1",
|
||||||
"diglactic/laravel-breadcrumbs": "^6.1",
|
"diglactic/laravel-breadcrumbs": "^6.1",
|
||||||
"doctrine/dbal": "2.*",
|
"doctrine/dbal": "2.*",
|
||||||
"felixkiss/uniquewith-validator": "^3.1",
|
"felixkiss/uniquewith-validator": "^3.1",
|
||||||
"fideloper/proxy": "^4.0",
|
"fideloper/proxy": "^4.4",
|
||||||
"gghughunishvili/entrust": "4.0",
|
"gghughunishvili/entrust": "4.0",
|
||||||
"guzzlehttp/guzzle": "^7.2",
|
"guzzlehttp/guzzle": "^7.2",
|
||||||
"laravel/framework": "^6.20",
|
"laravel/framework": "^7.29",
|
||||||
"laravel/tinker": "^2.0",
|
"laravel/tinker": "^2.5",
|
||||||
|
"laravel/ui": "2.0",
|
||||||
"laravelcollective/html": "^6.1",
|
"laravelcollective/html": "^6.1",
|
||||||
"mcamara/laravel-localization": "^1.3",
|
"mcamara/laravel-localization": "^1.3",
|
||||||
"solarium/solarium": "^3.8",
|
"solarium/solarium": "^6.1",
|
||||||
"yajra/laravel-datatables-oracle": "^9.0"
|
"yajra/laravel-datatables-oracle": "^9.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^9.3"
|
"phpunit/phpunit": "^8.5.8|^9.3.3"
|
||||||
|
},
|
||||||
|
"extra": {
|
||||||
|
"laravel": {
|
||||||
|
"dont-discover": []
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"files": [
|
"files": [
|
||||||
|
@ -60,6 +66,9 @@
|
||||||
"test": "php vendor/phpunit/phpunit/phpunit --testsuite Feature"
|
"test": "php vendor/phpunit/phpunit/phpunit --testsuite Feature"
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
|
"platform": {
|
||||||
|
"php": "7.3"
|
||||||
|
},
|
||||||
"preferred-install": "dist",
|
"preferred-install": "dist",
|
||||||
"sort-packages": true,
|
"sort-packages": true,
|
||||||
"optimize-autoloader": true
|
"optimize-autoloader": true
|
||||||
|
|
1218
composer.lock
generated
1218
composer.lock
generated
File diff suppressed because it is too large
Load Diff
|
@ -71,7 +71,7 @@ return [
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'connection' => null,
|
'connection' => env('SESSION_CONNECTION', null),
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
@ -88,6 +88,21 @@ return [
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
| Session Cache Store
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| While using one of the framework's cache driven session backends you may
|
||||||
|
| list a cache store that should be used for these sessions. This value
|
||||||
|
| must match with one of the application's configured cache "stores".
|
||||||
|
|
|
||||||
|
| Affects: "apc", "dynamodb", "memcached", "redis"
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'store' => env('SESSION_STORE', null),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
| Session Sweeping Lottery
|
| Session Sweeping Lottery
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
|
||||||
|
@ -149,6 +164,21 @@ return [
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'secure' => false,
|
'secure' => env('SESSION_SECURE_COOKIE', false),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Same-Site Cookies
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This option determines how your cookies behave when cross-site requests
|
||||||
|
| take place, and can be used to mitigate CSRF attacks. By default, we
|
||||||
|
| will set this value to "lax" since this is a secure default value.
|
||||||
|
|
|
||||||
|
| Supported: "lax", "strict", "none", null
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'same_site' => 'lax',
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreatePasswordResetsTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('password_resets', function (Blueprint $table) {
|
||||||
|
$table->string('email')->index();
|
||||||
|
$table->string('token');
|
||||||
|
$table->timestamp('created_at')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('password_resets');
|
||||||
|
}
|
||||||
|
}
|
11
package.json
11
package.json
|
@ -10,18 +10,23 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/plugin-proposal-class-properties": "^7.10.4",
|
"@babel/plugin-proposal-class-properties": "^7.10.4",
|
||||||
"@babel/plugin-proposal-decorators": "^7.10.5",
|
"@babel/plugin-proposal-decorators": "^7.10.5",
|
||||||
|
"bootstrap": "^4.0.0",
|
||||||
"bootstrap-sass": "^3.4.1",
|
"bootstrap-sass": "^3.4.1",
|
||||||
"cross-env": "^7.0.2",
|
"cross-env": "^7.0.2",
|
||||||
|
"jquery": "^3.2",
|
||||||
"laravel-mix": "^6.0.19",
|
"laravel-mix": "^6.0.19",
|
||||||
"npm-font-open-sans": "^1.1.0",
|
"npm-font-open-sans": "^1.1.0",
|
||||||
|
"popper.js": "^1.12",
|
||||||
"postcss-loader": "^5.2.0",
|
"postcss-loader": "^5.2.0",
|
||||||
"purecss-sass": "^2.0.3",
|
"purecss-sass": "^2.0.3",
|
||||||
"resolve-url-loader": "^4.0.0",
|
"resolve-url-loader": "^2.3.1",
|
||||||
"sass": "^1.26.10",
|
"sass": "^1.20.1",
|
||||||
"sass-loader": "^11.1.0",
|
"sass-loader": "^8.0.0",
|
||||||
"ts-loader": "^9.1.2",
|
"ts-loader": "^9.1.2",
|
||||||
"typescript": "^4.0.2",
|
"typescript": "^4.0.2",
|
||||||
|
"vue": "^2.5.17",
|
||||||
"vue-loader": "^15.9.5",
|
"vue-loader": "^15.9.5",
|
||||||
|
"vue-template-compiler": "^2.6.10",
|
||||||
"webpack": "^5.37.0",
|
"webpack": "^5.37.0",
|
||||||
"webpack-cli": "^4.7.0"
|
"webpack-cli": "^4.7.0"
|
||||||
},
|
},
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
$body-bg: #f8fafc;
|
$body-bg: #f8fafc;
|
||||||
|
|
||||||
// Typography
|
// Typography
|
||||||
$font-family-sans-serif: "Nunito", sans-serif;
|
$font-family-sans-serif: 'Nunito', sans-serif;
|
||||||
$font-size-base: 0.9rem;
|
$font-size-base: 0.9rem;
|
||||||
$line-height-base: 1.6;
|
$line-height-base: 1.6;
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ $line-height-base: 1.6;
|
||||||
$blue: #3490dc;
|
$blue: #3490dc;
|
||||||
$indigo: #6574cd;
|
$indigo: #6574cd;
|
||||||
$purple: #9561e2;
|
$purple: #9561e2;
|
||||||
$pink: #f66D9b;
|
$pink: #f66d9b;
|
||||||
$red: #e3342f;
|
$red: #e3342f;
|
||||||
$orange: #f6993f;
|
$orange: #f6993f;
|
||||||
$yellow: #ffed4a;
|
$yellow: #ffed4a;
|
||||||
|
|
49
resources/views/auth/passwords/confirm.blade.php
Normal file
49
resources/views/auth/passwords/confirm.blade.php
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-md-8">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">{{ __('Confirm Password') }}</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
{{ __('Please confirm your password before continuing.') }}
|
||||||
|
|
||||||
|
<form method="POST" action="{{ route('password.confirm') }}">
|
||||||
|
@csrf
|
||||||
|
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="current-password">
|
||||||
|
|
||||||
|
@error('password')
|
||||||
|
<span class="invalid-feedback" role="alert">
|
||||||
|
<strong>{{ $message }}</strong>
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group row mb-0">
|
||||||
|
<div class="col-md-8 offset-md-4">
|
||||||
|
<button type="submit" class="btn btn-primary">
|
||||||
|
{{ __('Confirm Password') }}
|
||||||
|
</button>
|
||||||
|
|
||||||
|
@if (Route::has('password.request'))
|
||||||
|
<a class="btn btn-link" href="{{ route('password.request') }}">
|
||||||
|
{{ __('Forgot Your Password?') }}
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
|
@ -2,39 +2,39 @@
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-8 col-md-offset-2">
|
<div class="col-md-8">
|
||||||
<div class="panel panel-default">
|
<div class="card">
|
||||||
<div class="panel-heading">Reset Password</div>
|
<div class="card-header">{{ __('Reset Password') }}</div>
|
||||||
|
|
||||||
<div class="panel-body">
|
<div class="card-body">
|
||||||
@if (session('status'))
|
@if (session('status'))
|
||||||
<div class="alert alert-success">
|
<div class="alert alert-success" role="alert">
|
||||||
{{ session('status') }}
|
{{ session('status') }}
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
<form class="form-horizontal" method="POST" action="{{ route('password.email') }}">
|
<form method="POST" action="{{ route('password.email') }}">
|
||||||
{{ csrf_field() }}
|
@csrf
|
||||||
|
|
||||||
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
|
<div class="form-group row">
|
||||||
<label for="email" class="col-md-4 control-label">E-Mail Address</label>
|
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}" required>
|
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
|
||||||
|
|
||||||
@if ($errors->has('email'))
|
@error('email')
|
||||||
<span class="help-block">
|
<span class="invalid-feedback" role="alert">
|
||||||
<strong>{{ $errors->first('email') }}</strong>
|
<strong>{{ $message }}</strong>
|
||||||
</span>
|
</span>
|
||||||
@endif
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group row mb-0">
|
||||||
<div class="col-md-6 col-md-offset-4">
|
<div class="col-md-6 offset-md-4">
|
||||||
<button type="submit" class="btn btn-primary">
|
<button type="submit" class="btn btn-primary">
|
||||||
Send Password Reset Link
|
{{ __('Send Password Reset Link') }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,62 +2,57 @@
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-8 col-md-offset-2">
|
<div class="col-md-8">
|
||||||
<div class="panel panel-default">
|
<div class="card">
|
||||||
<div class="panel-heading">Reset Password</div>
|
<div class="card-header">{{ __('Reset Password') }}</div>
|
||||||
|
|
||||||
<div class="panel-body">
|
<div class="card-body">
|
||||||
<form class="form-horizontal" method="POST" action="{{ route('password.request') }}">
|
<form method="POST" action="{{ route('password.update') }}">
|
||||||
{{ csrf_field() }}
|
@csrf
|
||||||
|
|
||||||
<input type="hidden" name="token" value="{{ $token }}">
|
<input type="hidden" name="token" value="{{ $token }}">
|
||||||
|
|
||||||
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
|
<div class="form-group row">
|
||||||
<label for="email" class="col-md-4 control-label">E-Mail Address</label>
|
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input id="email" type="email" class="form-control" name="email" value="{{ $email or old('email') }}" required autofocus>
|
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ $email ?? old('email') }}" required autocomplete="email" autofocus>
|
||||||
|
|
||||||
@if ($errors->has('email'))
|
@error('email')
|
||||||
<span class="help-block">
|
<span class="invalid-feedback" role="alert">
|
||||||
<strong>{{ $errors->first('email') }}</strong>
|
<strong>{{ $message }}</strong>
|
||||||
</span>
|
</span>
|
||||||
@endif
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
|
<div class="form-group row">
|
||||||
<label for="password" class="col-md-4 control-label">Password</label>
|
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input id="password" type="password" class="form-control" name="password" required>
|
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password">
|
||||||
|
|
||||||
@if ($errors->has('password'))
|
@error('password')
|
||||||
<span class="help-block">
|
<span class="invalid-feedback" role="alert">
|
||||||
<strong>{{ $errors->first('password') }}</strong>
|
<strong>{{ $message }}</strong>
|
||||||
</span>
|
</span>
|
||||||
@endif
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group{{ $errors->has('password_confirmation') ? ' has-error' : '' }}">
|
<div class="form-group row">
|
||||||
<label for="password-confirm" class="col-md-4 control-label">Confirm Password</label>
|
<label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
|
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
|
||||||
|
|
||||||
@if ($errors->has('password_confirmation'))
|
|
||||||
<span class="help-block">
|
|
||||||
<strong>{{ $errors->first('password_confirmation') }}</strong>
|
|
||||||
</span>
|
|
||||||
@endif
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group row mb-0">
|
||||||
<div class="col-md-6 col-md-offset-4">
|
<div class="col-md-6 offset-md-4">
|
||||||
<button type="submit" class="btn btn-primary">
|
<button type="submit" class="btn btn-primary">
|
||||||
Reset Password
|
{{ __('Reset Password') }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,58 +1,70 @@
|
||||||
@extends('layouts.app')
|
@extends('layouts.app')
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container-fluid">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-8 col-md-offset-2">
|
<div class="col-md-8">
|
||||||
<div class="panel panel-default">
|
<div class="card">
|
||||||
<div class="panel-heading">Register</div>
|
<div class="card-header">{{ __('Register') }}</div>
|
||||||
<div class="panel-body">
|
|
||||||
@if (count($errors) > 0)
|
|
||||||
<div class="alert alert-danger">
|
|
||||||
<strong>Whoops!</strong> There were some problems with your input.<br><br>
|
|
||||||
<ul>
|
|
||||||
@foreach ($errors->all() as $error)
|
|
||||||
<li>{{ $error }}</li>
|
|
||||||
@endforeach
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<form class="form-horizontal" role="form" method="POST" action="{{ url('/register') }}">
|
<div class="card-body">
|
||||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
<form method="POST" action="{{ route('register') }}">
|
||||||
|
@csrf
|
||||||
|
|
||||||
|
<div class="form-group row">
|
||||||
|
<label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-md-4 control-label">Name</label>
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input type="text" class="form-control" name="name" value="{{ old('name') }}">
|
<input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}" required autocomplete="name" autofocus>
|
||||||
|
|
||||||
|
@error('name')
|
||||||
|
<span class="invalid-feedback" role="alert">
|
||||||
|
<strong>{{ $message }}</strong>
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group row">
|
||||||
<label class="col-md-4 control-label">E-Mail Address</label>
|
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input type="email" class="form-control" name="email" value="{{ old('email') }}">
|
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email">
|
||||||
|
|
||||||
|
@error('email')
|
||||||
|
<span class="invalid-feedback" role="alert">
|
||||||
|
<strong>{{ $message }}</strong>
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group row">
|
||||||
<label class="col-md-4 control-label">Password</label>
|
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input type="password" class="form-control" name="password">
|
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password">
|
||||||
|
|
||||||
|
@error('password')
|
||||||
|
<span class="invalid-feedback" role="alert">
|
||||||
|
<strong>{{ $message }}</strong>
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group row">
|
||||||
<label class="col-md-4 control-label">Confirm Password</label>
|
<label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input type="password" class="form-control" name="password_confirmation">
|
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group row mb-0">
|
||||||
<div class="col-md-6 col-md-offset-4">
|
<div class="col-md-6 offset-md-4">
|
||||||
<button type="submit" class="btn btn-primary">
|
<button type="submit" class="btn btn-primary">
|
||||||
Register
|
{{ __('Register') }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
28
resources/views/auth/verify.blade.php
Normal file
28
resources/views/auth/verify.blade.php
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-md-8">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">{{ __('Verify Your Email Address') }}</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
@if (session('resent'))
|
||||||
|
<div class="alert alert-success" role="alert">
|
||||||
|
{{ __('A fresh verification link has been sent to your email address.') }}
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
{{ __('Before proceeding, please check your email for a verification link.') }}
|
||||||
|
{{ __('If you did not receive the email') }},
|
||||||
|
<form class="d-inline" method="POST" action="{{ route('verification.resend') }}">
|
||||||
|
@csrf
|
||||||
|
<button type="submit" class="btn btn-link p-0 m-0 align-baseline">{{ __('click here to request another') }}</button>.
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
|
@ -1,8 +1,8 @@
|
||||||
let mix = require('laravel-mix');
|
const mix = require('laravel-mix');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Mix Asset Management siehe https://laravel.com/docs/5.5/mix
|
| Mix Asset Management
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
|
||||||
| Mix provides a clean, fluent API for defining some Webpack build steps
|
| Mix provides a clean, fluent API for defining some Webpack build steps
|
||||||
|
@ -10,54 +10,6 @@ let mix = require('laravel-mix');
|
||||||
| file for the application as well as bundling up all the JS files.
|
| file for the application as well as bundling up all the JS files.
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
// mix.setPublicPath('../');
|
|
||||||
|
|
||||||
// .sass('resources/assets/sass/app1.scss', 'public/css')
|
mix.js('resources/js/app.js', 'public/js')
|
||||||
|
.sass('resources/sass/app.scss', 'public/css');
|
||||||
mix.js('resources/js/datasetPublish.js', 'public/backend/publish').vue()
|
|
||||||
.js('resources/js/search/main.ts', 'public/js/search').vue()
|
|
||||||
.js('resources/js/landingpage/main.ts', 'public/js/landingpage').vue()
|
|
||||||
.js('resources/js/app.js', 'public/js').vue()
|
|
||||||
.js('resources/js/lib.js', 'public/js')
|
|
||||||
.js('resources/js/releaseDataset.js', 'public/backend/publish').vue()
|
|
||||||
.js('resources/js/mainEditDataset.js', 'public/backend/publish').vue()
|
|
||||||
.js('resources/js/approveDataset.js', 'public/backend/publish').vue()
|
|
||||||
.js('resources/js/ckeditor.js', 'public/backend/')
|
|
||||||
.sass('resources/sass/app1.scss', 'public/css') //, { implementation: require('node-sass')})
|
|
||||||
//.sass('node_modules/purecss/build/pure.css', 'public/css', { implementation: require('node-sass') })
|
|
||||||
.sass('resources/sass/font-awesome.scss', 'public/css') //, { implementation: require('node-sass') })
|
|
||||||
.js('resources/js/scripts.js', 'public/js')
|
|
||||||
.scripts([
|
|
||||||
'node_modules/datatables.net/js/jquery.dataTables.js',
|
|
||||||
'node_modules/datatables.net-buttons/js/dataTables.buttons.js',
|
|
||||||
'node_modules/datatables.net-buttons/js/buttons.flash.js',
|
|
||||||
'node_modules/datatables.net-buttons/js/buttons.html5.js',
|
|
||||||
'node_modules/datatables.net-buttons/js/buttons.print.js',
|
|
||||||
], 'public/js/dataTable.js')
|
|
||||||
// .sourceMaps()
|
|
||||||
.webpackConfig({
|
|
||||||
module: {
|
|
||||||
rules: [
|
|
||||||
// We're registering the TypeScript loader here. It should only
|
|
||||||
// apply when we're dealing with a `.ts` or `.tsx` file.
|
|
||||||
{
|
|
||||||
test: /\.tsx?$/,
|
|
||||||
loader: 'ts-loader',
|
|
||||||
options: { appendTsSuffixTo: [/\.vue$/] },
|
|
||||||
exclude: /node_modules/,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
// We need to register the `.ts` extension so Webpack can resolve
|
|
||||||
// TypeScript modules without explicitly providing an extension.
|
|
||||||
// The other extensions in this list are identical to the Mix
|
|
||||||
// defaults.
|
|
||||||
extensions: ['*', '.js', '.jsx', '.vue', '.ts', '.tsx'],
|
|
||||||
},
|
|
||||||
});
|
|
||||||
// .options({
|
|
||||||
// //publicPath: '../'
|
|
||||||
// processCssUrls: false
|
|
||||||
// });
|
|
||||||
// mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap', 'public/fonts/bootstrap');
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user