paraizo2424 / internet_bulletin_board-practice

月次Techトレーニング
0 stars 0 forks source link

投稿者名にトリップを付ける #3

Closed paraizo2424 closed 4 years ago

paraizo2424 commented 4 years ago

トリップとは?? https://dic.nicovideo.jp/a/%E3%83%88%E3%83%AA%E3%83%83%E3%83%97

paraizo2424 commented 4 years ago

方針

paraizo2424 commented 4 years ago

トリップの作成 gem bcryptを使って暗号化された文字列を生成すればいいと思っていたが、bcryptは同じパスワードだったとしても別の暗号化された文字列を生成することがわかった。

irb(main):001:0> u = User.new
=> #<User id: nil, name: nil, created_at: nil, updated_at: nil, password_digest: nil>
irb(main):002:0> u.password = "1234"
=> "1234"
irb(main):003:0> u.name = "ccc"
=> "ccc"
irb(main):004:0> u
=> #<User id: nil, name: "ccc", created_at: nil, updated_at: nil, password_digest: "$2a$12$cpL6nlvVGPzP52cvJ4h5buo/gA4HyJnRA3ae6A0A.VP...">
irb(main):010:0> j = User.new
=> #<User id: nil, name: nil, created_at: nil, updated_at: nil, password_digest: nil>
irb(main):011:0> j.password = "1234"
=> "1234"
irb(main):013:0* j.name = "ddd"
=> "ddd"
irb(main):014:0> j.save!
   (0.1ms)  begin transaction
  User Create (1.9ms)  INSERT INTO "users" ("name", "created_at", "updated_at", "password_digest") VALUES (?, ?, ?, ?)  [["name", "ddd"], ["created_at", "2019-12-25 06:12:17.226366"], ["updated_at", "2019-12-25 06:12:17.226366"], ["password_digest", "$2a$12$gszJ3M6bqvG.CKic2HVPquA61jvU1nfz0ZzOZISd4o0OK1ZSzx/eW"]]
   (9.1ms)  commit transaction
=> true

調べたらrubyの組み込みライブラリにcryptメソッドというのがあった。これを使おう。

irb(main):054:0> "askdcd".crypt("13")
=> "13gF3BYquaSTM"

参考:2chトリップ

paraizo2424 commented 4 years ago

ユーザ名の文字列から#ハッシュタグを正規表現で探す方法を考えたが,正規表現が思ったより難しい。 参考にしたサイトのハッシュタグは複数のハッシュタグを検索するものだったが,トリップは最初のハッシュタグから6文字目までと考えることにした。そのため,1つのハッシュタグを検索すればいいように方針を変更。