- Upgrade to 7.x from 6.x #11

This commit is contained in:
Arno Kaimbacher 2021-05-25 14:15:02 +02:00
parent 4e44d9d996
commit bcbd05d7d8
29 changed files with 1289 additions and 647 deletions

View File

@ -63,5 +63,6 @@ class DatasetState extends Command
'server_date_modified' => DB::raw('now()') 'server_date_modified' => DB::raw('now()')
]); ]);
} }
return 0;
} }
} }

View File

@ -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;
} }
} }

View File

@ -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;
} }
} }

View File

@ -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;
} }
} }

View File

@ -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);

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

View File

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

View File

@ -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('/');
// }
} }

View File

@ -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']),
]); ]);
} }
} }

View File

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

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

View File

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

View File

@ -164,9 +164,9 @@ class DoiController extends Controller
}, },
])->findOrFail($id); ])->findOrFail($id);
return View::make('workflow.doi.edit', [ return View::make('workflow.doi.edit', [
'dataset' => $dataset, 'dataset' => $dataset,
]); ]);
} }
/** /**
@ -192,7 +192,7 @@ class DoiController extends Controller
$datacite_environment = config('tethys.datacite_environment'); $datacite_environment = config('tethys.datacite_environment');
if ($datacite_environment == "debug") { if ($datacite_environment == "debug") {
$prefix = config('tethys.datacite_test_prefix'); $prefix = config('tethys.datacite_test_prefix');
$base_domain = config('tethys.test_base_domain'); $base_domain = config('tethys.test_base_domain');
} elseif ($datacite_environment == "production") { } elseif ($datacite_environment == "production") {
$prefix = config('tethys.datacite_prefix'); $prefix = config('tethys.datacite_prefix');
$base_domain = config('tethys.base_domain'); $base_domain = config('tethys.base_domain');
@ -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";

View File

@ -671,7 +671,7 @@ class EditorController extends Controller
$datacite_environment = config('tethys.datacite_environment'); $datacite_environment = config('tethys.datacite_environment');
if ($datacite_environment == "debug") { if ($datacite_environment == "debug") {
$prefix = config('tethys.datacite_test_prefix'); $prefix = config('tethys.datacite_test_prefix');
$base_domain = config('tethys.test_base_domain'); $base_domain = config('tethys.test_base_domain');
} elseif ($datacite_environment == "production") { } elseif ($datacite_environment == "production") {
$prefix = config('tethys.datacite_prefix'); $prefix = config('tethys.datacite_prefix');
$base_domain = config('tethys.base_domain'); $base_domain = config('tethys.base_domain');

View File

@ -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.

View File

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

View File

@ -8,25 +8,31 @@
"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": [
"app/Helpers/utils.php", "app/Helpers/utils.php",
@ -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

File diff suppressed because it is too large Load Diff

View File

@ -71,7 +71,7 @@ return [
| |
*/ */
'connection' => null, 'connection' => env('SESSION_CONNECTION', null),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -86,6 +86,21 @@ return [
'table' => 'sessions', 'table' => 'sessions',
/*
|--------------------------------------------------------------------------
| 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
@ -147,8 +162,23 @@ return [
| to the server if the browser has a HTTPS connection. This will keep | to the server if the browser has a HTTPS connection. This will keep
| the cookie from being sent to you if it can not be done securely. | the cookie from being sent to you if it can not be done securely.
| |
*/ */
'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',
]; ];

View File

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

View File

@ -1,54 +1,59 @@
{ {
"private": true, "private": true,
"scripts": { "scripts": {
"test": "echo \"Error\"", "test": "echo \"Error\"",
"dev": "npm run development", "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", "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production", "prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --config=node_modules/laravel-mix/setup/webpack.config.js" "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --config=node_modules/laravel-mix/setup/webpack.config.js"
}, },
"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-sass": "^3.4.1", "bootstrap": "^4.0.0",
"cross-env": "^7.0.2", "bootstrap-sass": "^3.4.1",
"laravel-mix": "^6.0.19", "cross-env": "^7.0.2",
"npm-font-open-sans": "^1.1.0", "jquery": "^3.2",
"postcss-loader": "^5.2.0", "laravel-mix": "^6.0.19",
"purecss-sass": "^2.0.3", "npm-font-open-sans": "^1.1.0",
"resolve-url-loader": "^4.0.0", "popper.js": "^1.12",
"sass": "^1.26.10", "postcss-loader": "^5.2.0",
"sass-loader": "^11.1.0", "purecss-sass": "^2.0.3",
"ts-loader": "^9.1.2", "resolve-url-loader": "^2.3.1",
"typescript": "^4.0.2", "sass": "^1.20.1",
"vue-loader": "^15.9.5", "sass-loader": "^8.0.0",
"webpack": "^5.37.0", "ts-loader": "^9.1.2",
"webpack-cli": "^4.7.0" "typescript": "^4.0.2",
}, "vue": "^2.5.17",
"dependencies": { "vue-loader": "^15.9.5",
"@ckeditor/ckeditor5-build-classic": "^12.4.0", "vue-template-compiler": "^2.6.10",
"@fortawesome/fontawesome-free": "^5.14.0", "webpack": "^5.37.0",
"axios": "^0.21.1", "webpack-cli": "^4.7.0"
"datatables.net": "^1.10.21", },
"datatables.net-buttons": "^1.6.3", "dependencies": {
"easytimer": "^1.1.1", "@ckeditor/ckeditor5-build-classic": "^12.4.0",
"jquery": "^3.5.1", "@fortawesome/fontawesome-free": "^5.14.0",
"leaflet": "^1.7.1", "axios": "^0.21.1",
"leaflet-draw": "^1.0.4", "datatables.net": "^1.10.21",
"lodash": "^4.17.20", "datatables.net-buttons": "^1.6.3",
"single-page-nav": "^1.0.0", "easytimer": "^1.1.1",
"vee-validate": "^2.2.15", "jquery": "^3.5.1",
"vue": "^2.6.12", "leaflet": "^1.7.1",
"vue-class-component": "^7.2.5", "leaflet-draw": "^1.0.4",
"vue-datetime-picker": "^0.2.1", "lodash": "^4.17.20",
"vue-directive-tooltip": "^1.6.3", "single-page-nav": "^1.0.0",
"vue-events": "^3.1.0", "vee-validate": "^2.2.15",
"vue-property-decorator": "^9.1.2", "vue": "^2.6.12",
"vue-template-compiler": "^2.6.12", "vue-class-component": "^7.2.5",
"vue-toast-notification": "^0.6.1", "vue-datetime-picker": "^0.2.1",
"vuedraggable": "^2.24.0", "vue-directive-tooltip": "^1.6.3",
"vuejs-datetimepicker": "^1.1.12", "vue-events": "^3.1.0",
"vuetable-2": "^1.3.1" "vue-property-decorator": "^9.1.2",
}, "vue-template-compiler": "^2.6.12",
"name": "lms" "vue-toast-notification": "^0.6.1",
"vuedraggable": "^2.24.0",
"vuejs-datetimepicker": "^1.1.12",
"vuetable-2": "^1.3.1"
},
"name": "lms"
} }

View File

@ -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;

View 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

View File

@ -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>

View File

@ -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">
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
@if ($errors->has('password_confirmation')) <div class="col-md-6">
<span class="help-block"> <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
<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>

View File

@ -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>

View 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

View File

@ -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');