認証パッケージにLaravel Jetstream/Fortifyが導入されたり、ルーティングの書き方が変わったり、モデルのディレクトリが変更されてるようなのでインストールから基本的な設定をまとめておきます。
目次
開発環境
Laradock v10
Laravel 8
インストール
今まで通り。
# composer create-project --prefer-dist laravel/laravel newproject
タイムゾーンとロケールの設定
今まで通り。
'timezone' => 'Asia/Tokyo',
'locale' => 'ja',
日本語化
Laravel8に対応してるようなので、今まで通り。
https://github.com/caouecs/Laravel-lang
src/jaディレクトリをresources/lang以下に配置
json/ja.jsonも同じくresources/lang以下に配置
※必要に応じてjson/ja.jsonファイルを変更します。
データベース(lara8)とメール(Gmail)を設定
今まで通り。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=lara8
DB_USERNAME=root
DB_PASSWORD=root
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=xxxxxxxx@gmail.com
MAIL_PASSWORD=xxxxxxxx
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=xxxxxxxx@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
ストレージ公開
今まで通り。
storage/app/publicディレクトリを/publicとしてシンボリックリンクを張って公開します。
# php artisan storage:link
認証サービス導入
「Jetstream / Fortify」でとりあえず「Livewire + Blade」で・・・
# composer require laravel/jetstream
# php artisan jetstream:install livewire
# php artisan migrate
# npm install
# npm run dev
認証後のリダイレクトパスはデフォルトで/dashboard
変更するにはRouteServiceProviderにHOME定数を設定
例)public const HOME = ‘/user’;
メール認証
①Fortifyの設定変更
その他認証で必要のない機能はコメントアウトすることで無効にできます。
'features' => [
Features::registration(),
Features::resetPasswords(),
// Features::emailVerification(), // コメントアウトを外して有効に。
Features::updateProfileInformation(),
Features::updatePasswords(),
Features::twoFactorAuthentication([
'confirmPassword' => true,
]),
],
②MustVerifyEmailインターフェイスを実装
class User extends Authenticatable implements MustVerifyEmail
③必要に応じてプロフィール画像有効化
'features' => [
// Features::profilePhotos(), // コメントアウトを外して有効に。
// Features::api(),
// Features::teams(),
],
画像はstorage/app/public/profile-photosにアップロードされます。
メール送信時のSSLエラー対策
今まで通り、以下のようなエラーが出る場合は対策しておきます。
stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'auth_mode' => null,
'stream' => [ // 以下追加
'ssl' => [
'allow_self_signed' => true,
'verify_peer' => false,
'verify_peer_name' => false,
],
],
],
ルーティングの書式
app/Providers/RouteServiceProvicer.phpの名前空間変数$namespaceがコメントアウトされてるので
// protected $namespace = 'App\\Http\\Controllers';
①use宣言して
use App\Http\Controllers\TestController;
Route::get('/test', [TestController::class, 'index']);
②フルパスで指定して
Route::get('/test', [App\Http\Controllers\TestController::class, 'index']);
// または
Route::get('/test', 'App\Http\Controllers\TestController@index');
③RouteServiceProvicerのコメントアウトを外して名前空間変数を有効にして以前と同様に
Route::get('/test', 'TestController@index');
モデルのディレクトリ
app/Models以下に変更されたのでこのまま使います!
Vue.js
以前はVueも認証パッケージインストールするときに導入されたけど、今回は無いので必要に応じてインストールしないと・・・
ついでにVue-Routerも。
# npm install vue
# npm install vue-router
require('./bootstrap');
/** 以下追加 **/
import Vue from 'vue'
import router from './router';
// サンプル
//Vue.component('test-component',require('./components/Test.vue').default);
const app = new Vue({
el: '#app',
router,
});
# npm run dev