パスワード認証
Bcryptを利用してセキュアにハッシュ化したパスワードを保持し、それを用いて認証するための仕組みを提供しています。
まずモデルにハッシュ化されたパスワードを保持するためpasswordDigestフィールドを追加します。
model User {  // ...  passwordDigest String // パスワードのハッシュ値を保持する}次にhasSecurePassword()を利用してパスワードのハッシュ化と認証を行うための機能をモデルに対して追加します。
import { hasSecurePassword, Mix } from "accel-record";import { ApplicationRecord } from "./applicationRecord.js";
export class UserModel extends Mix(ApplicationRecord, hasSecurePassword()) {}これでpasswordやpasswordConfirmationフィールドを利用してパスワードのバリデーションとハッシュ化を、authenticate()メソッドを利用してパスワードの認証を行うことができます。
import { User } from "./models/index.js";
const user = User.build({});user.password = "";user.save(); // => false (password can't be blank)user.password = "myPassword";user.save(); // => false (password confirmation doesn't match)user.passwordConfirmation = "myPassword";user.save(); // => true
user.authenticate("invalid"); // => falseuser.authenticate("myPassword"); // => trueパスワード保持用のフィールド名をpasswordDigest以外に設定したり、複数のパスワードをモデルで管理することもできます。
import { hasSecurePassword, Mix } from "accel-record";import { ApplicationRecord } from "./applicationRecord.js";
export class UserModel extends Mix(  ApplicationRecord,  hasSecurePassword(), // passwordDigest フィールドを利用  hasSecurePassword({ attribute: "recovery", validation: false }) // recoveryDigest フィールドを利用) {}