You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
はじめに この記事は Laravel Advent Calendar 2019 - Qiita の 4日目 の記事です🎉 「この認可処理はどこに書くべきか」みたいなディスカッションから Laravel の認可機能を深掘りする機会があったので、 改めて整理してみたいと思います💪 認証については、よろしければこちらも! Laravel の Guard(認証) って実際何をやっているのじゃ? そもそも "認可" とはなんなのか 著者に対してだけブログ記事の更新を許可する みたいなやつが "認可" です。 "認可" を真面目に考察したら、それだけで一記事書けてしまう、深い深いテーマです "認可" についてのざっくりとした理解 いったんここでは、以下の理解で記事を進めようと思います。 (異論あればコメントにお願いします!) 特定の条件に対して、リソースに対するアクションの権限を与える (e.g.
漏洩済みパスワードか検証 Laravel8では、バリデーションルールにPassword::uncompromised()を追加することで、Have I Been Pwned が提供するAPIを利用してパスワードが漏洩していないか確認することができます。 use Illuminate\Validation\Rules\Password; $request->validate([ 'password' => ['required', 'confirmed', Password::uncompromised()], ]); バリデーションエラー発生時の例 バリデーションエラー発生時の例 参考サイト バリデーション 8.x Laravel
はじめに サービスコンテナは、 Laravelのコアとなる機能で Laravelのめちゃくちゃ便利で魔法のような仕組みを 実現してくれているものです。 しかし、普段Laravelを使っていても 簡単なアプリケーションを作るうえではあまり意識しないところかもしれません。 (意識しなくていいようになってる) このサービスコンテナについて理解すると、 より便利に自分でカスタマイズしたりできるし、 何より面白いです。 Laravelのサービスコンテナとは何なのかについて 調べましたので、簡単に解説します。 サービスコンテナとは サービスコンテナとは、 一言でいうと 「クラスをインスタンス化してくれるマシーン」 というイメージ。 具体的なコードで見てみます。 ClassAをインスタンス化するとき、 普通はこのようにnewしますね。
前回記事「Laravel…
Configurationインスタンスを作る 3系ではBuilderを使ってトークン作成していましたが、4系ではまずConfigurationインスタンスを作成します。 use Lcobucci\JWT\Configuration; use Lcobucci\JWT\Signer\Hmac\Sha256; use Lcobucci\JWT\Signer\Key\InMemory; $apiSecret = '[ZOOM API SECRET]'; $configuration = Configuration::forSymmetricSigner( new Sha256(), // 暗号化ハッシュ関数 InMemory::plainText($apiSecret) // キー ); Zoomは、HMAC SHA256を利用しているので、ハッシュ関数には Lcobucci\JWT\Signe
Laravelの認証にはログインの認証の他にAPIの認証もあります。APIの認証については下記の文書で公開しているのでぜひ参考にしてください。本文書では触れない認証に関するGuardについても同様に下記で説明を行っています。 認証機能について 例えばGoogleのGmailやFacebook, Twitterなどのサービスを利用するためにはユーザIDとパスワードを使用してログイン/サインインを行わなければいけません。サービスの利用許可を行うために利用するチェックの仕組みが認証機能です。認証機能のおかげで認証に必要なユーザIDとパスワードを知っている人しか各サービスに保存されているデータにアクセスすることはできません。 Laravelの認証機能はデフォルトではメールアドレスとパスワードを利用して行います。 環境の構築 Laravel5.8、Macを利用して動作確認を行っています。まずは認証機
LaravelからS3を使用する際はStorageファサードでS3を操作することが多いと思う。 その際に私がググった限りでは、ほとんどがアクセスキーとシークレットキーをソースコードにべた書きしているケースばかりだった。 しかし、こちらはアンチパターンなので、ec2で上記を行う場合はIAMロールを使用して、アクセスキー等はAWS側に隠ぺいしてもおう。 ec2にIAMロールを割り当てる手順は転がっているので、ここでは割愛。 Laravel側 config/filesystems.php 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' =>
こんにちは、エリカです。 今回は『Laravel』でのファイルの保存処理についてです。それはもう唐突なのですが、『Laravel』のファイルシステムがそれはもう素晴らしいものだったので書かずにはいられませんでした。 ちなみに『Laravel』とは PHP フレームワークの一種です。 それでは、順を追って見ていきましょう。 ファイルシステムの設定ファイル まずは、ファイルシステムの設定ファイル(config/filesystems.php)を見てみましょう。 'disks' => [ 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), ], 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('A
Laravel 6 ユニットテストをする際 Docker Compose の環境変数を上書きできずにはまったが phpunit.xml ドキュメントを読んで解決した まとめ <php> 要素 (PHP INI 項目や定数、グローバル変数の設定) では、既存の環境変数は上書きされない。上書きしたいならば、 force 属性を使う。 ドキュメントはこちら。といいますか、 phpunit.xml で検索して最初のページでした。 3. XML 設定ファイル — PHPUnit latest Manual ハマっていた内容 Docker Compose で立ち上げたコンテナ内に Laravel 6 を構築しています。 コンテナ内で PHPUnit を実行したとき、接続データベースがテスト用のインメモリ SQLite ではなく、開発や運用時に使う通常のデータベースとなっていました。 Laravel か
解説 今回紹介するのは、テスト実行時にDIで生成されるインスタンスをMockeryでモックしたクラスに差し替える方法です。 MockeryはPHPUnitやPHPSpec等のテスティングフレームワークと共に使用されるライブラリです。 GitHub - mockery/mockery: Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object op
Laravelでドメイン駆動設計(DDD)を実践し、Eloquent Model依存の設計から脱却するPHPLaravelDDDドメイン駆動設計Eloquent この記事はドメイン駆動設計#1 Advent Calendar 2019の 10 日目の記事です。 2020/12/17追記 以下に続編を書きました! LaravelにDDDを導入して1年経った所感(達成したこと / 課題点 / モデリングの難しさなど) やったこと 自社サイトのバックエンドを Laravel で実装して半年間が経ち、初期に考えた設計にいろいろと綻びが出てきたと感じていました。 そんな中、ちょうど実践ドメイン駆動設計や Web+DB Press で特集された体験 DDD を読むことができたので、さっそくいくつかの機能を DDD で実装してみました。 本記事では「もともと Laravel で実践していたEloquen
要約 / inb4 tl;dr 成瀬允宣さん(Twitter , nrslib )の 『ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本』 を読んでサンプルコードを Laravel で実装してみた。 DDD 入門として、とても良い書籍だったのでオススメ。 実装の前提条件やポイントをまとめた。 ※注:この記事は、あくまでサンプルコードの書き起こしと整理のみです。DDD 本来の設計作業についての記載はほとんどありません。 コードはこちら anfangd/laravel-ddd-sample-for-beginners - GitHub はじめに 2020年2月9-11日に開催された PHPerKaigi2020 に参加してきました。 PHPerKaigi 2020 こういうイベントごとには滅多に参加してこなかったのですが、今回は少し足を伸ばして練馬まで行ってきました。 沢山学
概要※こちらの記事 を転載しています 昨年公開した「Laravel でドメイン駆動設計(DDD)を実践し、Eloquent Model 依存の設計から脱却する」の続編です。 2020年12月現在、弊社で開発している「オンライン家庭教師マナリンク」の実装に DDD のアプローチを用いています。導入して 1 年が経過したので、いろいろと所感を述べていきます。 目次どうして DDD を導入したかDDD で達成できたことまだ難しいと思うこと結局モデリングが一番難しいどうして DDD を導入したのか?導入した当初の動機は Laravel で Eloquent Model 中心に実装するアーキテクチャに嫌気が差したからです。 Eloquent Model 中心に実装するとあちこちにドメイン知識が散らばって、実装した自分ですらよくわからない、という状態によく陥りました。弊社はベンチャー企業で、トラフィッ
まえがき 一年半かっちりとした設計を頑張ってみて、なんとなく形が見えてきたので、共有しようと思います。 タイトル通り、DDD の戦術の話がメインです。 いろんなデザインパターンを勉強しましたが、その中でも効果の解りやすいもののみを取り入れることで、迷い少なく方針を決めてこれました。 途中で設計変更は何度も行っていますし、設計変更することを前提に設計してます。 まだ悩んでる部分もいくつかあります。最後の方に書いています。 目的 設計するにあたって、以下の目的が達成できることを重視している。 業務知識があればプログラミングがわからなくてもなんとなくわかるようにする 部品ごとの役割を明確にする 部品を使い回しできるようにする 部品をテスト可能にする 状況に合わせて設計方針をどんどん変えていく 新しい書き方と古い書き方を混在させやすくする リファクタリングしやすくする 使わなくなった部品を簡単に削
この記事を書くにあたって Laravel について色々サポートしてくれた皆さまに向けてお礼申し上げます。ありがとうございました。 本記事はクリーンアーキテクチャに対する理解を深めていただくために、「実践クリーンアーキテクチャ」の内容を Laravel で実装して解説するという内容になっています。 記事のゴールは「クリーンアーキテクチャに対する理解を深めてもらう」というものです。つまり、この実装の形は一例に過ぎません。 はじめに 皆さんクリーンアーキテクチャはご存知でしょうか。 そう、こんな図のアレです。 The Clean Architecture: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html クリーンアーキテクチャといえばこちらの象徴的な図をまずは思い浮かべるでしょう。 この図を
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く