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_first
はwhere(condition).first
と同じ動き。devise内部ではこのメソッドでクエリ発行している(キャッシュの機能がついてる)User.invite!
のときもこのメソッド通るので、 招待機能(:invitable
) をつけるときはこのメソッドを拡張すること。そうでない場合はwikiにある通りfind_for_authentication
でも良い
GitHubでメンションされたらSlack上でメンションされるやつつくった
GitHub上でメンションされても気づかないという問題がありました。
Jasper いれたり、Zapieの連携でよしなにするとかやり方はいろいろあるけど、やはり普段よく見るSlackで気づけるようにしたほうが便利。 そこでいろいろ勉強も兼ねて、GitHubのメンションをSlackに通知するものを作りました。
しくみは簡単で、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アプリを紹介したいと思います。どれも無料なのですぐ試せます!
続きを読む大手Slerからスタートアップに転職して1年が経った
転職して1年経ったのでいろいろ書いてみようと思います。
続きを読む