deepblue-will’s diary

JS、CSS,Ruby、Railsなど仕事や趣味で試した技術系のことを書いていきます。

Deviseで認証でつかう要素を変更する

久しぶりにdeviseを触ってて、認証方式のカスタマイズでハマったのでメモ。
email, passwordに加えてある要素で認証させたいときの解決方法です。
ベースは公式wikiに書いてあった方法を参考にしてます。
How to: Scope login to subdomain · plataformatec/devise Wiki

class User
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, authentication_keys: [:email, :subdomain]
  
  def self.find_first_by_auth_conditions(warden_conditions)
    to_adapter.find_first(warden_conditions)
  end
end
  • authentication_keys で認証に使う属性を指定する。ここで指定した属性はサインイン時にパラメーターとして送らないと認証が通らなくなるので注意
  • validatable を外す。validatable にはemailのuniquenessのバリデーションが定義されているので、同じemailが登録できなくなってしまうため。なのでemailのバリデーションが外れてしまうので、独自に実装する必要あり
  • find_first_by_auth_conditions は認証時にユーザを特定するために通るメソッド。ここを拡張することで認証を変えることができる。
    • to_dapter.find_firstwhere(condition).first と同じ動き。devise内部ではこのメソッドでクエリ発行している(キャッシュの機能がついてる)
    • User.invite! のときもこのメソッド通るので、 招待機能( :invitable ) をつけるときはこのメソッドを拡張すること。そうでない場合はwikiにある通り find_for_authentication でも良い

GitHubでメンションされたらSlack上でメンションされるやつつくった

GitHub上でメンションされても気づかないという問題がありました。

Jasper いれたり、Zapieの連携でよしなにするとかやり方はいろいろあるけど、やはり普段よく見るSlackで気づけるようにしたほうが便利。 そこでいろいろ勉強も兼ねて、GitHubのメンションをSlackに通知するものを作りました。

github.com

しくみは簡単で、GitHubの設定でwebhook設定して、webhookで飛んできたレスポンスを解析して、メンション付きのコメントであればSlackのアカウント名に置換してSlackに送ります。GithubとSlackのアカウントのマッピングは内部にjsonで持つかんじです。

lambda上で動作し、Serverless framework で開発、デプロイまでできます。

詳しくはREADMEを見てください!

フロントエンドのインプットためによくみてるサイトを紹介します

Goodpatch Advent Calendar 2016 17日目の記事です!

こんにちは。フロントエンドエンジニアをしてます@deepblue_willです。
今回は私がよく情報収集ために見ているサイトを幾つか紹介したいと思います。

続きを読む

個人的にオススメしたい無料Macアプリ5つ+α紹介します

Goodpatch Advent Calendar 2016 9日目の記事です。

普段はフロントエンドエンジニアをやってる @deepblue_willといいます。 コード書く以外にも私は、いろんなアプリに助けられて日々仕事をしております。そこで今回は私が個人的によく使うMacアプリを紹介したいと思います。どれも無料なのですぐ試せます!

続きを読む

Botkit触ってみた

botkitを触ってみたのでメモ。
botkitはSlack上のbotを作るためのフレームワーク。いままで、HUBOTnode-slack-clientbotを作ってたのですが、より簡単にbotを作れるようになりました。

続きを読む