Commentsイベントって何かと便利だから、共通処理をイベント使って書きたくなります。リダイレクト処理もそうしたい。リスナ書いてみるも、できなかったので、解決策を書き残しておきます。MiddlewareかControllerに。Eventはバックグラウンドタスクとしてコールされるので、リダイレクト処理描いても無駄だよって。eventだから、ログイン後に特殊なリダイレクトのロジックを挟みたいときは、コントローラのログイン処理の後でリダイレクトのロジックを挟むか、ミドルウェアにリダイレクトのロジックを記述のいずれかにしましょう。イベントリストイベントのリストはこちらにまとまってる。?概ね、次のようなところにあるよう。AuthCacheConsoleコマンドDatabaseのトランザクションLogMailNotificationQueueRedisリファレンス本にもイベントのこと書いてたような気がするので、後でチェックする。LaravelLaravelの認証/認可。Commentsアドベントカレンダーに触発されて、記事を書いたところ、ちょうど枠に空きが出たので、投稿したいと思います。Laravelのドキュメントって結構分かりやすく書かれている方だと自分は思っているんですけど、今日はその中でもこんがらがりがちな「認証と認可」について今一度、整理したいと思います。いうケースに使えるのかとか。make:authしたら概ね完成しちゃいますが、認可って便利なので、認可の説明が多いです。実世界に置き換えて考える技術的な話に入る前に、日本語の「認証と認可」を理解します。いうのも、「認証と認可」という日本語もわからないし、英語の「Authentication、Authorization」もわからないので。言語って難しいですね。DevelopersIO」という素晴らしい記事がありました、ここを読めば、理解できます。一部、抜粋させていただきます。認証:通信の相手が誰(何)であるかを確認すること。(例:マイナンバーカード)認可:とある特定の条件に対して、リソースアクセスの権限を与えること。(例:チケット/切符の発行)切符を買った人は電車に乗るということを許可されますけど、それが誰だって構わない。切符さえ持っていれば、誰だって乗れると。後述していますが今回、認可の実例として、運転免許を例にしています。「運転免許証」を持つこと自体は、あなたが誰かを確認できるものになるから「認証」を意味しますけど、「運転」という行為は、免許証持っていても飲酒してたらしてはいけませんよね。一つ別の例としては、教習所で試験に合格すれば、運転免許証を発行されますが、交通違反を取り締まっている警察官は、免許の点数を操作することはできますが、免許証を発行処理はできないです。この辺が認可されていたり・されなかったりの話です。なんとなく理解できたのではないかということで、いよいよLaravelについての話に移ります。Laravelでは、認証が「Guard」、認可が「Gate/Policy」の3パターンありますので、順にそれぞれ触れていきます。Commentscssを書くとき、sass/scssを書きたくなる。javascriptを書くとき、babelを使う必要が出てくる。そんな時、おそらくGulpかWebpack、を使うことを強いられる。Mixを使うとすごく便利。MixというWebpackのラッパーを使って楽している。Reactでも、Vueでも、BabelでもSassでも、PostCSSでも思いつくことは基本的にできる。Webpackって、設定ファイルを書くのが面倒。Webpackの設定ファイルはカオスになる。それをうまい事隠してくれる。(Gulpだけで良い時もあるので、適材適所)本記事ではこれらを比較して見た記事。Comments表題の通りなんですけど、一度ログインした後、別のアカウントに切り替えようとログインしなおしても、Twitter側にセッションが残っているかなんかで、ログイン画面が出ずにcallbackしてしまう、もしくは今ログイン中のアカウントと紐づくみたい挙動になる。私は毎回ログイン画面出したいんだ!とそういったケース。Twitterドキュメントを見る限り`force_login=true`してあげれば済む話なんだけど、LaravelのSocialiteでどうするの?という話と、ちょっとおまけ。一枚ペラっと作ってもイイんだけど、せっかくだし今風に作ってみようと思い、Auraに手を出した。Formのためだけに、Wordpress使うのもなんだし、LaravelやSymfony使うのもFatすぎるかなって感じていて。Auraはフルスタックのフレームワークではなく、必要なComponentをとっつけて組み立てるという感じ。・日本語ドキュメントがあるので、ざっくりはわかる。それぞれがのReadmeドキュメントが整ってる印象。https://github.com/auraphphttps://github.com/friendsofaura今回サンプルとして、htmlのフォームでPOSTした内容をバリデーションチェック加えて、json形式で何らか返すというものを以下の2パターンで作った。それぞれは同じ結果を返す。Filterをaura/filterを直接使う。aura/input/Formの継承クラスを作成し、Form内でfilterを行う。(github)基本/vendor/auraの中身で、重要そうなのは、web-kernelあたりのよう。ここでrouter、dispatcher、あとwebコンポーネントにある、RequestとResponseとかが、定義される感じ。アプリケーションは、/config/Common.phpにかいていく。/config/_env.phpにて、環境の設定を変更をすることで、/config/Dev.php/config/Prod.php/config/Test.phpと、環境別に動作を切り替えれることが出来る。/config/Common.phpは、_env.phpの設定にかかわらず全てにおいて実行される。DI関連するサービスをsetし、必要時に、getして使う。$di->get(<サービス名>);ルーティングとディスパッチャ$router->add()でルーティングを指定して、$dispatcher->setObject()のクロージャで、ルーティングの処理をする。ここに処理});バリデーションチェックAura/Filterを追加する必要がある。Aura/inputも。必要に応じてAura/htmlも追加。HTMLテンプレート書くなら、次のバンドルをcomposerに追加する。foa/html-view-bundleフォーム書くなら、次のバンドルをcomposerに追加する。foa/filter-input-bundleさて、説明がうまく出来ないので、以下のA、Bの場合とで、サンプルソースを見比べて欲しい。/form.htmlの静的フォームから/sendにPOST送信され、フィルタのかけ、Jsonを返すのだが、Bの場合だけDIを使った形となっている。A:Filterだけの場合https://github.com/tomothumb/Sample-Aula-validation/blob/5e8dd23b450140ab4f2fe55ac7a0b399dc2bedb3/config/Common.phpDispacharの中に書いていく。Fromを利用する場合https://github.com/tomothumb/Sample-Aula-validation/blob/master/config/Common.php/src/App/From/Contact.phpを追加し、Formの要素とバリデーションの内容を記述する。違いをGistに書いた。Gist.設計方法学ぼうとおもってたのに、いつのまにか、アプリケーションの書き方/使い方を学んでいる自分がいる。同じことをSilexとSlimでも今度やってみよう。アドベントカレンダー23日目の記事です。写真はECCUBE開発合宿の深夜の1コマ。当初、作ったプラグインの案内でもしようかと思ったのですが、バグだらけで改善作業中なので、自分がECcubeを理解していく中で(まだまだわかってないですが)、自分なりのベストプラクティスを、これからECCUBEの開発を始めるヒトに向けて共有したいと思います。ちなみに、バグだらけのプラグインはgithubベースでメンテするというか、メンテフリーで行く予定なので、自由にパクって下さい。「ECCUBE3-InfiniteScroll」「MECCUBE3-Masonry」「ECCUBE3-Loveit」(3つありますが、内容似てまして、松竹梅的な。)思ってたのとなんか違う。私個人としては、Laravelは半年弱ほど触った程度。LaravelはSymfonyベース、ECCUBEはSilexベース、そのSilexはSymfonyベース、だからきっとなんとなくわかるはずと思ってたんですが、いざ蓋を開けてみると、「これ、思ってたんと違う。」というのが正直な感想。meetupに寄ってきました。」の出版されたけども、その著者が登壇されるということだったので、行かなきゃとい思いまして、毎度のことながらスケジュールつめこんで。Symfonyを学ぶことは近道。ECCUBEを始め、最近は著名なCMSやフレームワークがこぞってSymfonyを採用しはじめていますが、なぜSymfonyが選ばれるか。Symfonyが王道なのか。いった内容を話されていました。Wayみたいな◯◯Wayというベストプラクティスや強い主張があったりするけど、Symfonyというのは、主張してこないフレームワークであると。自分流にアレンジしやすいとのこと。「リクエストを受け取り⇒レスポンスを返す」というところ。Webアプリケーションの根本的な所を学ぶことができると。Wayの解釈ができるようになりますよ、とそういった内容でした。(※ちなみに、Symfonyの日本語ドキュメントのサイトは遅れているようで、翻訳ついていくのは諦め気味とおっしゃっておられました。」全300Pぐらいで、早速ですが簡単な所は読みました。初期の構想から発売まで二年半ぐらいとおっしゃっておられたような。書籍の構成としては、フレームワークとはなんぞやSymfonyとはなんぞや。(Doctrine)RepositoryFormValidationメール(Swiftmail)機能の拡張フィクスチャConsole拡張API実装サービスプロバイダテストが順に解りやすく落とし込まれてあり、読み進め、実際に手を動かしながら、一つのWEBアプリケーションができます。Symfonyの基礎が中盤ぐらいまででわかります。後半で、サービスプロバイダの解説がされてありますが、ここを理解することがSymfonyおじさんになる手段であり、みながSymfonyを採用する肝のようです。ここまで読みきれてません、まぁ正直難しいです。ECCUBEおじさんになるためには先に述べたとおり、基本的な所を読了するだけで、ECCUBEのディレクトリ構造がざっくり理解できるようになります。するとまぁ、ECCUBEとSymfonyとの違いがなんとなくわかりはじめます。Symfonyは個性を主張してこないと述べましたが、Symfonyのチュートリアル的なものをしていると、アノテーションとか、手軽だけど、なんか魔法ばっかり。思っきり個性を主張してきます。Overflow様がSymfonyの解決するための黒魔法を教えてきます。ECCUBEではこの魔法が全く役に立たずハマります。そこで、Symfony本に目を通しておきますと、ホグワーツ魔法学校に通ったようなものですから、この先生の言ってることは、こう読み替えればよいのかとか、Silexの領域だなとか、ほんの少し見えてくるようになります。最後にSilexやDoctrine、Symfonyのドキュメンテーションへと理解を深めていく旅に始まります。Silexにどっぷりは必要?おそらく、ECCUBEを深く知る上では、Symfonyの基礎を把握する⇒必要に応じてSilexのドキュメントを見るという流れではありますが、Silexのドキュメントもなかなかしんどいです。ECサイト作成程度の話であれば、Silexには触れず、Symfonyの基礎を把握する⇒ECCUBEのコアのコードからパクる。⇒必要に応じてSilexのドキュメントというのがベスト・プラクティスじゃないかなと思っています。いいますのも、Symfony基礎がわかるとディレクトリ構造がわかるので、コードのたどり方がなんとなくわかってきて、ECCUBEコアに、ピンポイントで似た例がでてくるのがほとんど。Silexのドキュメント見るより手っ取り早いと感じるからです。コア開発者になるなら、SilexもSymfonyサービスプロバイダもしっかり理解してください。いうことになるんだと思います。さいごにECcubeの話というより、Symfonyの話がほとんどになってしまいました。最後になりますが、ECCUBEはSilexベースですが、Symfonyかじらず、いきなりSilexから入っちゃうと遠回りになると思うので。王道からと、オススメしつつ、アドベントカレンダーをバトンタッチしたいと思います。meetupで知った部分貼っていきます。参考になれば幸いです。PracticesSymfonyの学びかたSymfonyの歩き方Symfonyのリリースサイクルが変更になりましたという最近の公式発表。2とCtagsの組み合わせがすごい。2では、Ctagsプラグインを使うことによって、コードナビゲーション(Class/Functionが定義されてるところへジャンプ)できるようになります。これ、僕のベスト10には入ってくる、お気に入りプラグインです。コーディング中にふとClassやFunctionの動作を知りたくなった時にいちいちFunction名をサイト内検索したり、ドキュメントサイトを開いて探さなくても、キーバインドで瞬時にそのClass/Functionが定義されてるところへジャンプして確認できると。(こういった機能のこと、コードナビゲーションとかコードナビゲートと呼ばれているようだ。NetbeansやEclipseなんかでは標準でついてる機能なのかな。2では標準で付いていない。)WordPressのテーマ、プラグイン開発などの小中規模の開発や、その他CMSやフレームワークを利用する際、ドキュメントを見るより、コードを見たほうが早く解決できることも多いので、効率的に開発できるようになります。文章で記述しても伝わりにくいので、英語ですが動画見てもらった方がイメージをつかみやすいかなと。(4:10~6:00ぐらいまで)次の上2つについては以前紹介しましたが、加えてコードナビゲーション機能があると、軽量で高機能のエディタへと進化します。FTPが使え、保存と同時にアップロードもできる。Sass/SCSSのコンパイルが簡単。コードナビゲーションが使える。2からCtagsをリビルドできるようになりましたので、共有したいとおもいます。ENTRYREADME.mdファイル。マークダウン記法まとめ一石三鳥!?SublimeText2とsass/SCSS(compass)+SFTP(FTP)で作業効率化する方法。3つの簡単便利Javascriptテンプレートエンジン。2とCtagsの組み合わせがすごい。2012へ行ってきた、まとめ[CMS]多言語化、翻訳ファイル.po、.mo。パララックスでのイベントの考察。mousewheelCodaとZen-Codingのショートカットまとめ。[Drupal7]既に設定済みのFIELDTYPEをintegerからtextへ変更。ENTRYLaradockでホストマシンの変更が反映されない場合の対策Interventionで日本語表示対策。imagesに表示される<none>を消す。