Laravel

Laravelのイベント処理でリダイレクトさせたい時の対策

by codechord. 0 Comments

イベントって何かと便利だから、共通処理をイベント使って書きたくなります。
リダイレクト処理もそうしたい。って思ったのがきっかけ。
で、いろいろリスナ書いてみるも、できなかったので、解決策を書き残しておきます。

Event不可。MiddlewareかControllerに。

Eventはバックグラウンドタスクとしてコールされるので、リダイレクト処理描いても無駄だよって。

参考:firing a redirect from an event

だから、ログイン後に特殊なリダイレクトのロジックを挟みたいときは、

  • コントローラのログイン処理の後でリダイレクトのロジックを挟むか、
  • ミドルウェアにリダイレクトのロジックを記述

のいずれかにしましょう。

イベントリスト

イベントのリストはこちらにまとまってる。

概ね、次のようなところにあるよう。

  • Auth
  • Cache
  • Consoleコマンド
  • Databaseのトランザクション
  • Log
  • Mail
  • Notification
  • Queue
  • Redis

リファレンス本にもイベントのこと書いてたような気がするので、後でチェックする。

Laravelの認証/認可。Auth,Gate,Policyの再整理

by codechord. 0 Comments

アドベントカレンダーに触発されて、記事を書いたところ、ちょうど枠に空きが出たので、投稿したいと思います。

Laravelのドキュメントって結構分かりやすく書かれている方だと自分は思っているんですけど、今日はその中でもこんがらがりがちな「認証と認可」について今一度、整理したいと思います。どういうケースに使えるのかとか。
なお、「認証」の方はartisan make:authしたら概ね完成しちゃいますが、認可って便利なので、認可の説明が多いです。

実世界に置き換えて考える

技術的な話に入る前に、日本語の「認証と認可」を理解します。というのも、「認証と認可」という日本語もわからないし、英語の「Authentication、Authorization」もわからないので。。。言語って難しいですね。。。

ググって見ると、「認証と認可」について、「よくわかる認証と認可 | DevelopersIO」という素晴らしい記事がありました、ここを読めば、理解できます。さすがです、クラスメソッドさん。
一部、抜粋させていただきます。

  • 認証:通信の相手が誰(何)であるかを確認すること。(例:マイナンバーカード)
  • 認可:とある特定の条件に対して、リソースアクセスの権限を与えること。(例:チケット/切符の発行)

切符を買った人は電車に乗るということを許可されますけど、それが誰だって構わない。切符さえ持っていれば、誰だって乗れると。それが「認可」です。

後述していますが今回、認可の実例として、運転免許を例にしています。

「運転免許証」を持つこと自体は、あなたが誰かを確認できるものになるから「認証」を意味しますけど、「運転」という行為は、免許証持っていても飲酒してたらしてはいけませんよね。
もう一つ別の例としては、教習所で試験に合格すれば、運転免許証を発行されますが、交通違反を取り締まっている警察官は、免許の点数を操作することはできますが、免許証を発行処理はできないです。この辺が認可されていたり・されなかったりの話です。

なんとなく理解できたのではないかということで、いよいよLaravelについての話に移ります。

Laravelでは、認証が「Guard」、認可が「Gate/Policy」の3パターンありますので、順にそれぞれ触れていきます。

続きを読む »

Webpack使うならLaravel Mixでラクをする

by codechord. 0 Comments

cssを書くとき、sass/scssを書きたくなる。
javascriptを書くとき、babelを使う必要が出てくる。
そんな時、おそらくGulpかWebpack、を使うことを強いられる。

最近は、フロントエンドの開発環境にWebpackを使うことが増えてきたけど、
そんな時は、Laravel Mixを使うとすごく便利。という話。

自分は、Laravel MixというWebpackのラッパーを使って楽している。
Reactでも、Vueでも、BabelでもSassでも、PostCSSでも思いつくことは基本的にできる。
Webpackって、設定ファイルを書くのが面倒。Webpackの設定ファイルはカオスになる。それをうまい事隠してくれる。

個人的に、過去、Gulp -> Webpack -> Laravel Mixと試してきて、ふと、Webpackに戻ろうかと思ったけど、結局Laravel Mixに戻ってきた。
(Gulpだけで良い時もあるので、適材適所)

本記事ではこれらを比較して見た記事。

続きを読む »

Laravel SocialiteのTwitterで認証画面を強制的にだしてみる

by codechord. 0 Comments

表題の通りなんですけど、一度ログインした後、別のアカウントに切り替えようとログインしなおしても、Twitter側にセッションが残っているかなんかで、ログイン画面が出ずにcallbackしてしまう、もしくは今ログイン中のアカウントと紐づくみたい挙動になる。私は毎回ログイン画面出したいんだ!とそういったケース。

なお、Twitterドキュメントを見る限り`force_login=true`してあげれば済む話なんだけど、LaravelのSocialiteでどうするの?という話と、ちょっとおまけ。

続きを読む »