Credentials
モジュールパス: /NodeJS/alier_sys/Credentials.js
概要
ユーザを管理するためのモジュールです。
利用方法
利用するには、まずテーブル名と利用したいストア名を登録してください。
const { registerTable } = require("@suredesigns/alier/Credentials");
registerTable("my-table", "gdbm", { name: "my_table" });
ストアを登録すると Users
インターフェースから各種操作を行うことができます。
const { Users } = require("@suredesigns/alier/Credentials");
// foo を登録
await Users.signup("foo");
// foo にコンテンツを設定
await Users.updateContent("foo", "1234");
// foo のコンテンツを取得
const pass = await Users.getContent("foo");
consle.log(pass);
// => "1234"
ストアクラス
Alier が提供しているストアは次の表の通りです:
ストア名 | 特徴 |
inmemory |
ユーザデータをメモリに保持します。 |
jsoncached |
ユーザデータをメモリに保持し、JSON ファイルにキャッシュします。 |
gdbm |
ユーザデータを GDBM に保存します。 |
inmemory
このストアはデバッグ用です。本番環境で使用しないでください。
メモリ上にユーザデータをマップで保持します。サーバアプリが動作を停止するとデータは消去されます。
このストアタイプでは引数 args
が必要ありません。registerTable
で defaultUserInfo
を指定する場合は args
に空オブジェクト {}
などなにか値を指定してから defaultUserInfo
を指定してください。
jsoncached
このストアはデバッグ用です。本番環境で使用しないでください。
メモリ上にユーザデータをマップで保持し、マップに変更があったときはマップを JSON ファイルにキャッシュします。
args
のプロパティは以下のようになります:
-
name
:string
テーブル名です。ファイル名は
`name`.json
となります。 -
dirpath
:string
JSON ファイルを保存、ロードするディレクトリパスです。エントリースクリプトからの相対パスか絶対パスを指定してください。
- 既定値はエントリースクリプトと同じディレクトリです。
gdbm
このストアはシステムに GDBM がインストールされている必要があります。
GDBM にユーザデータを保存します。
args
のプロパティは以下のようになります:
-
name
:string
テーブル名です。ファイル名にも利用されます。
-
dirpath
:string?
GDBM ファイルを配置するディレクトリのパスです。エントリースクリプトからの相対パスか絶対パスを指定してください。
- 既定値はエントリースクリプトと同じディレクトリです。
-
blockSize
:number?
データベースファイルを作成するときのブロックサイズです。
- 既定ではファイルシステムのブロックサイズが使用されます。詳しくは Opening the database (GDBM manual) を参照してください。
GDBM のインストール
-
Ubuntu
sudo apt update sudo apt install libgdbm
-
ローカルでビルド
-
ダウンロード
mkdir deps cd deps wget https://ftp.gnu.org/gnu/gdbm/gdbm-1.24.tar.gz tar -xvf gdbm-1.24.tar.gz cd gdbm-1.24
-
インストール
INSTALL
にしたがってビルド、インストールしてください。-
システムにインストール
./configure make sudo make install
-
任意の場所にインストール
./configure --prefix=/path/to/install/gdbm make make install
この方法でインストールした場合、インストールした場所にパスが通っていないと GDBM を利用できないので、パスを通すか環境変数
LD_LIBRARY_PATH
でインストールした場所を指定する必要があります。
-
-
バイナリファイルの配置
配布されたバイナリファイルを NodeJS/build/Release
下に配置してください。
NodeJS/
`-- build/
`-- Release
`-- gdbm_binding.node
バージョン違いなどでうまく機能しない場合は各環境でビルドを実行してください。
ビルド
GDBM バインディングライブラリをビルドします。ビルドには node-gyp を利用しています。
-
GDBM の開発ファイルをインストール
-
Ubuntu
sudo apt update sudo apt install libgdbm-dev
-
ローカルでビルド
開発ファイルは生成済みです。
-
-
node-gyp をインストール
npm install -g node-gyp
-
準備
node-gyp configure
パスが通っていない場所にインストールした GDBM を利用する
--gdbm_root
フラグで GDBM の参照先を指定できます。node-gyp configure --gdbm_root=/path/to/install/gdbm
/path/to/gdbm
は絶対パスのみ有効です。 -
ビルド
node-gyp build
デバッグビルド
--debug
フラグを付けるとデバッグビルドします。node-gyp build --debug
GDBM のリンクが静的リンクになるので、ビルドしたバイナリファイルを他環境に渡す想定ではありません。
実行
バイナリファイルの配置に成功していれば GDBM を利用できます。
node sample_gdbm.cjs
パスが通っていない場所にインストールした GDBM を利用する
環境変数 LD_LIBRARY_PATH
を利用して GDBM ライブラリを指定する必要があります。
LD_LIBRARY_PATH=/path/to/install/gdbm/lib node sample_gdbm.cjs
デバッグモード
環境変数 ALIER_GDBM_DEBUG=1
を利用するとデバッグビルドした GDBM バインディングで実行します。
ALIER_GDBM_DEBUG=1 node sample_gdbm.cjs
カスタムクラス
Alier で提供しているストア以外の実装を使用したい場合、AbstractCredentialsStore
を継承したストアクラスを実装し、StoreClasses.register()
で登録することで使用可能になります。
関数
このモジュールは以下の関数を公開しています。
registerTable()
- ユーザ管理テーブルを登録します。
オブジェクト
このモジュールは以下のオブジェクトを公開しています。
クラス
このモジュールは以下のクラスを公開しています。