@vtecx/vtecxdocument 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,123 @@
1
+ # メール・通知
2
+
3
+ メール送信・プッシュ通知・メッセージキューを操作するメソッド群。
4
+
5
+ ---
6
+
7
+ ## メール送信
8
+
9
+ ### `sendMail(entry, to, cc?, bcc?, attachments?)`
10
+
11
+ ```typescript
12
+ sendMail(
13
+ entry: any,
14
+ to: string[],
15
+ cc?: string[],
16
+ bcc?: string[],
17
+ attachments?: string[]
18
+ ): Promise<boolean>
19
+ ```
20
+
21
+ メールを送信する。件名・本文は `entry`(title = 件名、content = 本文など)で指定する。
22
+
23
+ | 引数 | 型 | 説明 |
24
+ | --- | --- | --- |
25
+ | `entry` | `any` | メールの件名・本文を含むエントリ |
26
+ | `to` | `string[]` | 送信先メールアドレスの配列 |
27
+ | `cc` | `string[]?` | CC |
28
+ | `bcc` | `string[]?` | BCC |
29
+ | `attachments` | `string[]?` | 添付ファイルの URI 配列 |
30
+
31
+ ```typescript
32
+ await vtecxnext.sendMail(
33
+ { title: 'お知らせ', summary: 'テキスト本文', content: { ______text: '<p>HTML本文</p>' } },
34
+ ['user@example.com']
35
+ )
36
+ ```
37
+
38
+ ---
39
+
40
+ ## プッシュ通知
41
+
42
+ ### `pushNotification(message, to, title?, subtitle?, imageUrl?, data?)`
43
+
44
+ ```typescript
45
+ pushNotification(
46
+ message: string,
47
+ to: string[],
48
+ title?: string,
49
+ subtitle?: string,
50
+ imageUrl?: string,
51
+ data?: any
52
+ ): Promise<boolean>
53
+ ```
54
+
55
+ モバイルデバイスへのプッシュ通知を送信する。
56
+
57
+ | 引数 | 型 | 説明 |
58
+ | --- | --- | --- |
59
+ | `message` | `string` | 通知本文 |
60
+ | `to` | `string[]` | 送信先(デバイストークン/グループなど)の配列 |
61
+ | `title` | `string?` | 通知タイトル |
62
+ | `subtitle` | `string?` | サブタイトル |
63
+ | `imageUrl` | `string?` | 画像 URL |
64
+ | `data` | `any?` | 追加データ |
65
+
66
+ ```typescript
67
+ await vtecxnext.pushNotification('メッセージが届きました', [deviceToken], '新しいメッセージ')
68
+ ```
69
+
70
+ ---
71
+
72
+ ## メッセージキュー
73
+
74
+ 非同期処理の要求をキューに積み、処理状態を管理するための機能。`channel` 単位でキューを識別する。
75
+
76
+ ### `setMessageQueue(feed, channel)`
77
+
78
+ ```typescript
79
+ setMessageQueue(feed: any, channel: string): Promise<boolean>
80
+ ```
81
+
82
+ 指定チャネルのキューに feed を登録する。
83
+
84
+ ```typescript
85
+ await vtecxnext.setMessageQueue(
86
+ { feed: { entry: [{ title: 'export-job' }] } },
87
+ 'export'
88
+ )
89
+ ```
90
+
91
+ ---
92
+
93
+ ### `getMessageQueue(channel)`
94
+
95
+ ```typescript
96
+ getMessageQueue(channel: string): Promise<any>
97
+ ```
98
+
99
+ 指定チャネルのキューに登録された feed を取得する。
100
+
101
+ ---
102
+
103
+ ### `setMessageQueueStatus(flag, channel)`
104
+
105
+ ```typescript
106
+ setMessageQueueStatus(flag: boolean, channel: string): Promise<boolean>
107
+ ```
108
+
109
+ 指定チャネルのメッセージキューの有効・無効状態を設定する。
110
+
111
+ ```typescript
112
+ await vtecxnext.setMessageQueueStatus(true, 'export')
113
+ ```
114
+
115
+ ---
116
+
117
+ ### `getMessageQueueStatus(channel)`
118
+
119
+ ```typescript
120
+ getMessageQueueStatus(channel: string): Promise<any>
121
+ ```
122
+
123
+ 指定チャネルのメッセージキューの状態を取得する。
@@ -0,0 +1,100 @@
1
+ # OAuth・TOTP
2
+
3
+ LINE OAuth 連携および TOTP(時刻ベースワンタイムパスワード)の管理を行うメソッド群。
4
+
5
+ ---
6
+
7
+ ## LINE OAuth
8
+
9
+ ### `oauthLine()`
10
+
11
+ ```typescript
12
+ oauthLine(): Promise<boolean>
13
+ ```
14
+
15
+ LINE ログインの認可フローを開始する(認可エンドポイントへのリダイレクトを行う)。
16
+
17
+ ---
18
+
19
+ ### `oauthCallbackLine()`
20
+
21
+ ```typescript
22
+ oauthCallbackLine(): Promise<boolean>
23
+ ```
24
+
25
+ LINE ログインのコールバック処理を行い、セッションを確立する。LINE から渡される `code` / `state` はリクエスト(コンストラクタの `NextRequest`)から読み取られる。
26
+
27
+ ---
28
+
29
+ ### `mergeOAuthUserLine(rxid)`
30
+
31
+ ```typescript
32
+ mergeOAuthUserLine(rxid: string): Promise<any>
33
+ ```
34
+
35
+ LINE アカウントを既存の vte.cx アカウントに紐付ける。`rxid` でセッションを特定する。
36
+
37
+ ---
38
+
39
+ ## TOTP(多要素認証)
40
+
41
+ ### `getTotpLink(chs?)`
42
+
43
+ ```typescript
44
+ getTotpLink(chs?: number): Promise<any>
45
+ ```
46
+
47
+ TOTP 設定用の QR コード URL を含む feed を返す。`chs` で QR コード画像のサイズ(一辺のピクセル数)を指定できる。
48
+
49
+ ```typescript
50
+ const totp = await vtecxnext.getTotpLink()
51
+ ```
52
+
53
+ ---
54
+
55
+ ### `createTotp(feed)`
56
+
57
+ ```typescript
58
+ createTotp(feed: any): Promise<any>
59
+ ```
60
+
61
+ TOTP を有効化する。認証アプリに表示されるワンタイムコードを feed で渡す。
62
+
63
+ ---
64
+
65
+ ### `deleteTotp(account?)`
66
+
67
+ ```typescript
68
+ deleteTotp(account?: string): Promise<any>
69
+ ```
70
+
71
+ TOTP を無効化する。`account` を指定すると管理者が対象ユーザーの TOTP を解除する。省略時は自分自身。
72
+
73
+ ---
74
+
75
+ ### `loginWithTotp(totp, isTrustedDevice)`
76
+
77
+ ```typescript
78
+ loginWithTotp(totp: string, isTrustedDevice: boolean): Promise<StatusMessage>
79
+ ```
80
+
81
+ TOTP コードを検証してログインを完了する。通常ログイン後に呼び出す。
82
+
83
+ | 引数 | 型 | 説明 |
84
+ | --- | --- | --- |
85
+ | `totp` | `string` | 認証アプリに表示されているワンタイムコード |
86
+ | `isTrustedDevice` | `boolean` | `true` にすると次回以降 TOTP をスキップする |
87
+
88
+ ```typescript
89
+ await vtecxnext.loginWithTotp('123456', false)
90
+ ```
91
+
92
+ ---
93
+
94
+ ### `changeTdid()`
95
+
96
+ ```typescript
97
+ changeTdid(): Promise<any>
98
+ ```
99
+
100
+ 信頼済みデバイス ID(TDID)をリセットする。信頼済みデバイスの登録を無効化する用途で使用。
@@ -0,0 +1,75 @@
1
+ # PDF・署名
2
+
3
+ PDF 生成・電子署名の付与・検証を行うメソッド群。
4
+
5
+ ---
6
+
7
+ ## PDF 生成
8
+
9
+ ### `toPdf(htmlTemplate, filename?)`
10
+
11
+ ```typescript
12
+ toPdf(htmlTemplate: string, filename?: string): Promise<boolean>
13
+ ```
14
+
15
+ HTML テンプレート文字列を PDF に変換し、レスポンスへ出力する。成功したかどうかを `boolean` で返す。
16
+
17
+ | 引数 | 型 | 説明 |
18
+ | --- | --- | --- |
19
+ | `htmlTemplate` | `string` | PDF 化する HTML テンプレート |
20
+ | `filename` | `string?` | ダウンロード時のファイル名(省略可) |
21
+
22
+ ```typescript
23
+ await vtecxnext.toPdf('<html><body><h1>請求書</h1></body></html>', 'invoice.pdf')
24
+ ```
25
+
26
+ ---
27
+
28
+ ## 電子署名
29
+
30
+ ### `putSignature(uri, revision?)`
31
+
32
+ ```typescript
33
+ putSignature(uri: string, revision?: number): Promise<any>
34
+ ```
35
+
36
+ 指定した URI のエントリに電子署名を付与する。
37
+
38
+ | 引数 | 型 | 説明 |
39
+ | --- | --- | --- |
40
+ | `uri` | `string` | 署名対象エントリの URI |
41
+ | `revision` | `number?` | リビジョン(楽観的排他制御。省略可) |
42
+
43
+ ---
44
+
45
+ ### `putSignatures(feed)`
46
+
47
+ ```typescript
48
+ putSignatures(feed: any): Promise<any>
49
+ ```
50
+
51
+ feed で指定した複数エントリに電子署名を一括で付与する。
52
+
53
+ ---
54
+
55
+ ### `deleteSignature(uri, revision?)`
56
+
57
+ ```typescript
58
+ deleteSignature(uri: string, revision?: number): Promise<boolean>
59
+ ```
60
+
61
+ 指定した URI のエントリの署名を削除する。
62
+
63
+ ---
64
+
65
+ ### `checkSignature(uri)`
66
+
67
+ ```typescript
68
+ checkSignature(uri: string): Promise<boolean>
69
+ ```
70
+
71
+ 指定した URI のエントリの署名が有効かどうかを検証し、`boolean` で返す。
72
+
73
+ ```typescript
74
+ const isValid = await vtecxnext.checkSignature('/files/contract/001')
75
+ ```
@@ -0,0 +1,170 @@
1
+ # サーバーセッション
2
+
3
+ サーバーサイドのセッション領域にデータを保存・取得・削除するメソッド群。
4
+ セッションデータはリクエストをまたいで保持される(ユーザーセッションに紐付く)。
5
+
6
+ データ型に応じて 4 種類のサブタイプがある: `Feed`(エントリ一覧)、`Entry`(1 件)、`String`(文字列)、`Long`(整数)。
7
+
8
+ ---
9
+
10
+ ## Feed(エントリ一覧)
11
+
12
+ ### `setSessionFeed(key, feed)`
13
+
14
+ ```typescript
15
+ setSessionFeed(key: string, feed: any): Promise<boolean>
16
+ ```
17
+
18
+ feed データをセッションに保存する。
19
+
20
+ ```typescript
21
+ await vtecxnext.setSessionFeed('cart', { feed: { entry: [...] } })
22
+ ```
23
+
24
+ ---
25
+
26
+ ### `getSessionFeed(key)`
27
+
28
+ ```typescript
29
+ getSessionFeed(key: string): Promise<any>
30
+ ```
31
+
32
+ セッションから feed データを取得する。
33
+
34
+ ```typescript
35
+ const cart = await vtecxnext.getSessionFeed('cart')
36
+ ```
37
+
38
+ ---
39
+
40
+ ### `deleteSessionFeed(key)`
41
+
42
+ ```typescript
43
+ deleteSessionFeed(key: string): Promise<boolean>
44
+ ```
45
+
46
+ セッションから feed データを削除する。
47
+
48
+ ---
49
+
50
+ ## Entry(1 件)
51
+
52
+ ### `setSessionEntry(key, entry)`
53
+
54
+ ```typescript
55
+ setSessionEntry(key: string, entry: any): Promise<boolean>
56
+ ```
57
+
58
+ エントリ 1 件をセッションに保存する。
59
+
60
+ ---
61
+
62
+ ### `getSessionEntry(key)`
63
+
64
+ ```typescript
65
+ getSessionEntry(key: string): Promise<any>
66
+ ```
67
+
68
+ セッションからエントリ 1 件を取得する。
69
+
70
+ ---
71
+
72
+ ### `deleteSessionEntry(key)`
73
+
74
+ ```typescript
75
+ deleteSessionEntry(key: string): Promise<boolean>
76
+ ```
77
+
78
+ セッションからエントリを削除する。
79
+
80
+ ---
81
+
82
+ ## String(文字列)
83
+
84
+ ### `setSessionString(key, value)`
85
+
86
+ ```typescript
87
+ setSessionString(key: string, value: string): Promise<boolean>
88
+ ```
89
+
90
+ 文字列をセッションに保存する。
91
+
92
+ ```typescript
93
+ await vtecxnext.setSessionString('selectedTab', 'overview')
94
+ ```
95
+
96
+ ---
97
+
98
+ ### `getSessionString(key)`
99
+
100
+ ```typescript
101
+ getSessionString(key: string): Promise<string | null>
102
+ ```
103
+
104
+ セッションから文字列を取得する。
105
+
106
+ ```typescript
107
+ const tab = await vtecxnext.getSessionString('selectedTab')
108
+ ```
109
+
110
+ ---
111
+
112
+ ### `deleteSessionString(key)`
113
+
114
+ ```typescript
115
+ deleteSessionString(key: string): Promise<boolean>
116
+ ```
117
+
118
+ セッションから文字列を削除する。
119
+
120
+ ---
121
+
122
+ ## Long(整数)
123
+
124
+ ### `setSessionLong(key, value)`
125
+
126
+ ```typescript
127
+ setSessionLong(key: string, value: number): Promise<boolean>
128
+ ```
129
+
130
+ 整数値をセッションに保存する。
131
+
132
+ ```typescript
133
+ await vtecxnext.setSessionLong('stepIndex', 2)
134
+ ```
135
+
136
+ ---
137
+
138
+ ### `getSessionLong(key)`
139
+
140
+ ```typescript
141
+ getSessionLong(key: string): Promise<number | null>
142
+ ```
143
+
144
+ セッションから整数値を取得する。
145
+
146
+ ---
147
+
148
+ ### `deleteSessionLong(key)`
149
+
150
+ ```typescript
151
+ deleteSessionLong(key: string): Promise<boolean>
152
+ ```
153
+
154
+ セッションから整数値を削除する。
155
+
156
+ ---
157
+
158
+ ## カウンタ
159
+
160
+ ### `incrementSession(key, num)`
161
+
162
+ ```typescript
163
+ incrementSession(key: string, num: number): Promise<number | null>
164
+ ```
165
+
166
+ セッション上の整数カウンタに `num` を加算する。加算後の値を返す。
167
+
168
+ ```typescript
169
+ const count = await vtecxnext.incrementSession('viewCount', 1)
170
+ ```
@@ -0,0 +1,225 @@
1
+ # ユーザー管理
2
+
3
+ ユーザーの登録・パスワード変更・無効化・削除などを行うメソッド群。
4
+
5
+ ---
6
+
7
+ ## ユーザー登録
8
+
9
+ ### `adduser(adduserInfo, reCaptchaToken)`
10
+
11
+ ```typescript
12
+ adduser(adduserInfo: AdduserInfo, reCaptchaToken: string): Promise<any>
13
+ ```
14
+
15
+ 新規ユーザーを登録し、確認メールを送信する。
16
+
17
+ ```typescript
18
+ await vtecxnext.adduser(
19
+ {
20
+ username: 'user@example.com',
21
+ pswd: hashedPassword,
22
+ nickname: 'ユーザー名',
23
+ emailSubject: '登録確認',
24
+ emailText: '本登録URLをクリックしてください。',
25
+ emailHtml: '<p>本登録URLをクリックしてください。</p>',
26
+ },
27
+ reCaptchaToken
28
+ )
29
+ ```
30
+
31
+ ---
32
+
33
+ ### `adduserByAdmin(adduserInfos)`
34
+
35
+ ```typescript
36
+ adduserByAdmin(adduserInfos: AdduserInfo[]): Promise<any>
37
+ ```
38
+
39
+ 管理者権限で複数ユーザーを一括登録する。reCAPTCHA 不要。
40
+
41
+ ---
42
+
43
+ ### `adduserByGroupadmin(adduserInfos, groupname)`
44
+
45
+ ```typescript
46
+ adduserByGroupadmin(adduserInfos: AdduserInfo[], groupname: string): Promise<any>
47
+ ```
48
+
49
+ グループ管理者権限で複数ユーザーを登録する。
50
+
51
+ ---
52
+
53
+ ## パスワード操作
54
+
55
+ ### `passreset(adduserInfo, reCaptchaToken?)`
56
+
57
+ ```typescript
58
+ passreset(adduserInfo: AdduserInfo, reCaptchaToken?: string): Promise<any>
59
+ ```
60
+
61
+ パスワードリセットメールを送信する。
62
+
63
+ ---
64
+
65
+ ### `changepass(newpswd, oldpswd?, passresetToken?)`
66
+
67
+ ```typescript
68
+ changepass(newpswd: string, oldpswd?: string, passresetToken?: string): Promise<any>
69
+ ```
70
+
71
+ パスワードを変更する。2 つのフローがある。
72
+
73
+ **ログイン済みフロー(現在のパスワードで変更)**
74
+
75
+ ```typescript
76
+ await vtecxnext.changepass(newpswd, oldpswd)
77
+ ```
78
+
79
+ **メールリセットフロー(未ログイン)**
80
+
81
+ ```typescript
82
+ await vtecxnext.loginWithRxid(rxid)
83
+ await vtecxnext.changepass(newpswd, undefined, passresetToken)
84
+ ```
85
+
86
+ パスワードは `getHashpass(password)`(`@vtecx/vtecxauth`)でハッシュしてから渡す。
87
+
88
+ ---
89
+
90
+ ### `changepassByAdmin(changepassByAdminInfos)`
91
+
92
+ ```typescript
93
+ changepassByAdmin(changepassByAdminInfos: ChangepassByAdminInfo[]): Promise<any>
94
+ ```
95
+
96
+ 管理者権限で指定ユーザーのパスワードを変更する。
97
+
98
+ ---
99
+
100
+ ## アカウント変更
101
+
102
+ ### `changeaccount(adduserInfo)`
103
+
104
+ ```typescript
105
+ changeaccount(adduserInfo: AdduserInfo): Promise<any>
106
+ ```
107
+
108
+ メールアドレスなどのアカウント情報を変更する。変更確認メールが送信される。
109
+
110
+ ---
111
+
112
+ ### `changeaccount_verify(verifyCode)`
113
+
114
+ ```typescript
115
+ changeaccount_verify(verifyCode: string): Promise<any>
116
+ ```
117
+
118
+ `changeaccount()` で送信された確認コードを検証し、変更を確定する。
119
+
120
+ ---
121
+
122
+ ## ユーザー状態管理
123
+
124
+ ### `userstatus(account?)`
125
+
126
+ ```typescript
127
+ userstatus(account?: string): Promise<string | any>
128
+ ```
129
+
130
+ ユーザーの状態を取得する。`account` を省略すると全ユーザーの一覧を返す。
131
+
132
+ 状態値: `Activated`(本登録)/ `Interim`(仮登録)
133
+
134
+ ---
135
+
136
+ ### `revokeuser(account, isDeleteGroups?)`
137
+
138
+ ```typescript
139
+ revokeuser(account: string, isDeleteGroups?: boolean): Promise<any>
140
+ ```
141
+
142
+ ユーザーを無効化する(ログイン不可になる)。
143
+
144
+ ---
145
+
146
+ ### `revokeusers(accounts?, uids?, isDeleteGroups?)`
147
+
148
+ ```typescript
149
+ revokeusers(accounts?: string[], uids?: string[], isDeleteGroups?: boolean): Promise<any>
150
+ ```
151
+
152
+ 複数ユーザーを一括無効化する。
153
+
154
+ ---
155
+
156
+ ### `activateuser(account)`
157
+
158
+ ```typescript
159
+ activateuser(account: string): Promise<any>
160
+ ```
161
+
162
+ 無効化されたユーザーを有効化する。
163
+
164
+ ---
165
+
166
+ ### `activateusers(accounts?, uids?)`
167
+
168
+ ```typescript
169
+ activateusers(accounts?: string[], uids?: string[]): Promise<any>
170
+ ```
171
+
172
+ 複数の無効化されたユーザーを一括有効化する。
173
+
174
+ ---
175
+
176
+ ### `canceluser(isDeleteGroups?)`
177
+
178
+ ```typescript
179
+ canceluser(isDeleteGroups?: boolean): Promise<any>
180
+ ```
181
+
182
+ ログイン中のユーザー自身がアカウントを退会する。
183
+
184
+ ---
185
+
186
+ ## ユーザー削除
187
+
188
+ ### `deleteuser(account)`
189
+
190
+ ```typescript
191
+ deleteuser(account: string): Promise<any>
192
+ ```
193
+
194
+ 指定ユーザーをサービスから削除する。
195
+
196
+ ---
197
+
198
+ ### `deleteusers(accounts?, uids?)`
199
+
200
+ ```typescript
201
+ deleteusers(accounts?: string[], uids?: string[]): Promise<any>
202
+ ```
203
+
204
+ 複数ユーザーを一括削除する。
205
+
206
+ ---
207
+
208
+ ## 型定義
209
+
210
+ ```typescript
211
+ // SDK 上はすべて省略可(用途に応じて必要なフィールドを設定する)
212
+ type AdduserInfo = {
213
+ username?: string // メールアドレス
214
+ pswd?: string // パスワード(ハッシュ済み)
215
+ nickname?: string // ニックネーム
216
+ emailSubject?: string // 確認メール件名
217
+ emailText?: string // 確認メール本文(テキスト)
218
+ emailHtml?: string // 確認メール本文(HTML)
219
+ }
220
+
221
+ type ChangepassByAdminInfo = {
222
+ uid: string // 対象ユーザーの UID
223
+ pswd: string // 新しいパスワード(ハッシュ済み)
224
+ }
225
+ ```