@vtecx/vtecxnext 1.0.9 → 1.1.1
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.
- package/dist/vtecxnext.d.ts +53 -6
- package/dist/vtecxnext.js +298 -113
- package/package.json +1 -1
package/dist/vtecxnext.d.ts
CHANGED
|
@@ -5,6 +5,10 @@ import type { Readable } from 'node:stream';
|
|
|
5
5
|
* Hello world.
|
|
6
6
|
*/
|
|
7
7
|
export declare const hello: () => void;
|
|
8
|
+
type StatusMessage = {
|
|
9
|
+
status: number;
|
|
10
|
+
message: string;
|
|
11
|
+
};
|
|
8
12
|
/**
|
|
9
13
|
* X-Requested-With header check.
|
|
10
14
|
* If not specified, set status 417 to the response.
|
|
@@ -29,26 +33,36 @@ export declare const sendMessage: (res: ServerResponse, statusCode: number, mess
|
|
|
29
33
|
* @param res response
|
|
30
34
|
* @param wsse WSSE
|
|
31
35
|
* @param reCaptchaToken reCAPTCHA token
|
|
32
|
-
* @return
|
|
36
|
+
* @return status and message
|
|
33
37
|
*/
|
|
34
|
-
export declare const login: (req: IncomingMessage, res: ServerResponse, wsse: string, reCaptchaToken?: string) => Promise<
|
|
38
|
+
export declare const login: (req: IncomingMessage, res: ServerResponse, wsse: string, reCaptchaToken?: string) => Promise<StatusMessage>;
|
|
35
39
|
/**
|
|
36
40
|
* login with RXID.
|
|
37
41
|
* If the login is successful, sets the authentication information in a cookie.
|
|
38
42
|
* @param req request
|
|
39
43
|
* @param res response
|
|
40
44
|
* @param rxid RXID
|
|
41
|
-
* @return
|
|
45
|
+
* @return status and message
|
|
42
46
|
*/
|
|
43
|
-
export declare const loginWithRxid: (req: IncomingMessage, res: ServerResponse, rxid: string) => Promise<
|
|
47
|
+
export declare const loginWithRxid: (req: IncomingMessage, res: ServerResponse, rxid: string) => Promise<StatusMessage>;
|
|
48
|
+
/**
|
|
49
|
+
* login with Time-based One Time Password.
|
|
50
|
+
* If the login is successful, sets the authentication information in a cookie.
|
|
51
|
+
* @param req request
|
|
52
|
+
* @param res response
|
|
53
|
+
* @param totp Time-based One Time Password
|
|
54
|
+
* @param isTrustedDevice true if trusted device
|
|
55
|
+
* @return status and message
|
|
56
|
+
*/
|
|
57
|
+
export declare const loginWithTotp: (req: IncomingMessage, res: ServerResponse, totp: string, isTrustedDevice: boolean) => Promise<StatusMessage>;
|
|
44
58
|
/**
|
|
45
59
|
* logout.
|
|
46
60
|
* If the logout is successful, delete the authentication information in a cookie.
|
|
47
61
|
* @param req request
|
|
48
62
|
* @param res response
|
|
49
|
-
* @return
|
|
63
|
+
* @return status and message
|
|
50
64
|
*/
|
|
51
|
-
export declare const logout: (req: IncomingMessage, res: ServerResponse) => Promise<
|
|
65
|
+
export declare const logout: (req: IncomingMessage, res: ServerResponse) => Promise<StatusMessage>;
|
|
52
66
|
/**
|
|
53
67
|
* get current datetime
|
|
54
68
|
* @return current datetime
|
|
@@ -738,6 +752,38 @@ export declare const oauthCallbackLine: (req: IncomingMessage, res: ServerRespon
|
|
|
738
752
|
* @returns buffer
|
|
739
753
|
*/
|
|
740
754
|
export declare const buffer: (readable: Readable) => Promise<Buffer>;
|
|
755
|
+
/**
|
|
756
|
+
* get TOTP link
|
|
757
|
+
* @param req request (for authentication)
|
|
758
|
+
* @param res response (for authentication)
|
|
759
|
+
* @param chs length of one side of QR code
|
|
760
|
+
* @return QR code URL in feed.title
|
|
761
|
+
*/
|
|
762
|
+
export declare const getTotpLink: (req: IncomingMessage, res: ServerResponse, chs?: number) => Promise<any>;
|
|
763
|
+
/**
|
|
764
|
+
* create TOTP
|
|
765
|
+
* @param req request (for authentication)
|
|
766
|
+
* @param res response (for authentication)
|
|
767
|
+
* @param feed one-time password for feed.title when you do book registration
|
|
768
|
+
* @return message
|
|
769
|
+
*/
|
|
770
|
+
export declare const createTotp: (req: IncomingMessage, res: ServerResponse, feed: any) => Promise<any>;
|
|
771
|
+
/**
|
|
772
|
+
* delete TOTP
|
|
773
|
+
* @param req request (for authentication)
|
|
774
|
+
* @param res response (for authentication)
|
|
775
|
+
* @param account target account (for service admin user)
|
|
776
|
+
* @return message
|
|
777
|
+
*/
|
|
778
|
+
export declare const deleteTotp: (req: IncomingMessage, res: ServerResponse, account?: string) => Promise<any>;
|
|
779
|
+
/**
|
|
780
|
+
* change TDID (Trusted device ID)
|
|
781
|
+
* @param req request (for authentication)
|
|
782
|
+
* @param res response (for authentication)
|
|
783
|
+
* @param account target account (for service admin user)
|
|
784
|
+
* @return message
|
|
785
|
+
*/
|
|
786
|
+
export declare const changeTdid: (req: IncomingMessage, res: ServerResponse) => Promise<any>;
|
|
741
787
|
/**
|
|
742
788
|
* Error returned from vte.cx
|
|
743
789
|
*/
|
|
@@ -751,3 +797,4 @@ export declare class VtecxNextError extends Error {
|
|
|
751
797
|
export declare class FetchError extends VtecxNextError {
|
|
752
798
|
constructor(message: string);
|
|
753
799
|
}
|
|
800
|
+
export {};
|
package/dist/vtecxnext.js
CHANGED
|
@@ -26,8 +26,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.
|
|
30
|
-
exports.FetchError = exports.VtecxNextError = exports.buffer = exports.oauthCallbackLine = exports.oauthLine = exports.removealias = exports.addalias = exports.removeacl = exports.addacl = exports.getcontent = exports.deletecontent = exports.putcontent = exports.savefiles = exports.deleteusers = exports.deleteuser = exports.canceluser = exports.activateusers = exports.activateuser = exports.revokeusers = exports.revokeuser = exports.userstatus = exports.changeaccount_verify = exports.changeaccount = exports.changepassByAdmin = exports.changepass = exports.passreset = exports.adduserByAdmin = exports.adduser = exports.isAdmin = exports.isGroupMember = exports.getGroups = exports.noGroupMember = exports.leaveGroup = exports.joinGroup = exports.getMessageQueue = exports.setMessageQueue = exports.setMessageQueueStatus = exports.pushNotification = exports.sendMail = exports.checkSignature = void 0;
|
|
29
|
+
exports.putSignatures = exports.putSignature = exports.toPdf = exports.getBQCsv = exports.getBQ = exports.deleteBQ = exports.postBQ = exports.getPage = exports.pagination = exports.getSessionLong = exports.getSessionString = exports.getSessionEntry = exports.getSessionFeed = exports.deleteSessionLong = exports.deleteSessionString = exports.deleteSessionEntry = exports.deleteSessionFeed = exports.incrementSession = exports.setSessionLong = exports.setSessionString = exports.setSessionEntry = exports.setSessionFeed = exports.getRangeids = exports.rangeids = exports.setids = exports.getids = exports.addids = exports.allocids = exports.deleteFolder = exports.deleteEntry = exports.put = exports.post = exports.count = exports.getFeed = exports.getEntry = exports.log = exports.rxid = exports.service = exports.isLoggedin = exports.whoami = exports.account = exports.uid = exports.now = exports.logout = exports.loginWithTotp = exports.loginWithRxid = exports.login = exports.sendMessage = exports.checkXRequestedWith = exports.hello = void 0;
|
|
30
|
+
exports.FetchError = exports.VtecxNextError = exports.changeTdid = exports.deleteTotp = exports.createTotp = exports.getTotpLink = exports.buffer = exports.oauthCallbackLine = exports.oauthLine = exports.removealias = exports.addalias = exports.removeacl = exports.addacl = exports.getcontent = exports.deletecontent = exports.putcontent = exports.savefiles = exports.deleteusers = exports.deleteuser = exports.canceluser = exports.activateusers = exports.activateuser = exports.revokeusers = exports.revokeuser = exports.userstatus = exports.changeaccount_verify = exports.changeaccount = exports.changepassByAdmin = exports.changepass = exports.passreset = exports.adduserByAdmin = exports.adduser = exports.isAdmin = exports.isGroupMember = exports.getGroups = exports.noGroupMember = exports.leaveGroup = exports.joinGroup = exports.getMessageQueue = exports.setMessageQueue = exports.setMessageQueueStatus = exports.pushNotification = exports.sendMail = exports.checkSignature = exports.deleteSignature = void 0;
|
|
31
31
|
const sqlstring_1 = __importDefault(require("sqlstring"));
|
|
32
32
|
const formidable_1 = __importDefault(require("formidable"));
|
|
33
33
|
const fs_1 = __importDefault(require("fs"));
|
|
@@ -39,6 +39,9 @@ const hello = () => {
|
|
|
39
39
|
console.log('Hello vtecxnext.');
|
|
40
40
|
};
|
|
41
41
|
exports.hello = hello;
|
|
42
|
+
const SERVLETPATH_DATA = '/d';
|
|
43
|
+
const SERVLETPATH_PROVIDER = '/p';
|
|
44
|
+
const SERVLETPATH_OAUTH = '/o';
|
|
42
45
|
/**
|
|
43
46
|
* X-Requested-With header check.
|
|
44
47
|
* If not specified, set status 417 to the response.
|
|
@@ -77,7 +80,7 @@ exports.sendMessage = sendMessage;
|
|
|
77
80
|
* @param res response
|
|
78
81
|
* @param wsse WSSE
|
|
79
82
|
* @param reCaptchaToken reCAPTCHA token
|
|
80
|
-
* @return
|
|
83
|
+
* @return status and message
|
|
81
84
|
*/
|
|
82
85
|
const login = async (req, res, wsse, reCaptchaToken) => {
|
|
83
86
|
//console.log('[vtecxnext login] start.')
|
|
@@ -87,28 +90,19 @@ const login = async (req, res, wsse, reCaptchaToken) => {
|
|
|
87
90
|
// reCAPTCHA tokenは任意
|
|
88
91
|
const param = reCaptchaToken ? `&g-recaptcha-token=${reCaptchaToken}` : '';
|
|
89
92
|
const method = 'GET';
|
|
90
|
-
const url =
|
|
93
|
+
const url = `${SERVLETPATH_DATA}/?_login${param}`;
|
|
91
94
|
const headers = { 'X-WSSE': `${wsse}` };
|
|
92
95
|
let response;
|
|
93
96
|
try {
|
|
94
|
-
response = await
|
|
97
|
+
response = await requestVtecx(method, url, req, null, headers);
|
|
95
98
|
}
|
|
96
99
|
catch (e) {
|
|
97
100
|
throw newFetchError(e, true);
|
|
98
101
|
}
|
|
99
|
-
//const feed = await response.json()
|
|
100
102
|
// vte.cxからのset-cookieを転記
|
|
101
103
|
setCookie(response, res);
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
if (response.status < 400) {
|
|
105
|
-
isLoggedin = true;
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
isLoggedin = false;
|
|
109
|
-
}
|
|
110
|
-
//console.log(`[vtecxnext login] end. status=${response.status} message=${feed.title}`)
|
|
111
|
-
return isLoggedin;
|
|
104
|
+
const data = await response.json();
|
|
105
|
+
return { status: response.status, message: data.feed.title };
|
|
112
106
|
};
|
|
113
107
|
exports.login = login;
|
|
114
108
|
/**
|
|
@@ -117,7 +111,7 @@ exports.login = login;
|
|
|
117
111
|
* @param req request
|
|
118
112
|
* @param res response
|
|
119
113
|
* @param rxid RXID
|
|
120
|
-
* @return
|
|
114
|
+
* @return status and message
|
|
121
115
|
*/
|
|
122
116
|
const loginWithRxid = async (req, res, rxid) => {
|
|
123
117
|
//console.log('[vtecxnext loginWithRxid] start.')
|
|
@@ -126,7 +120,7 @@ const loginWithRxid = async (req, res, rxid) => {
|
|
|
126
120
|
// ログイン
|
|
127
121
|
// reCAPTCHA tokenは任意
|
|
128
122
|
const method = 'GET';
|
|
129
|
-
const url =
|
|
123
|
+
const url = `${SERVLETPATH_DATA}/?_login&_RXID=${rxid}`;
|
|
130
124
|
let response;
|
|
131
125
|
try {
|
|
132
126
|
response = await requestVtecx(method, url, req);
|
|
@@ -134,27 +128,52 @@ const loginWithRxid = async (req, res, rxid) => {
|
|
|
134
128
|
catch (e) {
|
|
135
129
|
throw newFetchError(e, true);
|
|
136
130
|
}
|
|
137
|
-
const feed = await response.json();
|
|
138
131
|
// vte.cxからのset-cookieを転記
|
|
139
132
|
setCookie(response, res);
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
133
|
+
const data = await response.json();
|
|
134
|
+
return { status: response.status, message: data.feed.title };
|
|
135
|
+
};
|
|
136
|
+
exports.loginWithRxid = loginWithRxid;
|
|
137
|
+
/**
|
|
138
|
+
* login with Time-based One Time Password.
|
|
139
|
+
* If the login is successful, sets the authentication information in a cookie.
|
|
140
|
+
* @param req request
|
|
141
|
+
* @param res response
|
|
142
|
+
* @param totp Time-based One Time Password
|
|
143
|
+
* @param isTrustedDevice true if trusted device
|
|
144
|
+
* @return status and message
|
|
145
|
+
*/
|
|
146
|
+
const loginWithTotp = async (req, res, totp, isTrustedDevice) => {
|
|
147
|
+
//console.log('[vtecxnext loginWithTotp] start.')
|
|
148
|
+
// 入力チェック
|
|
149
|
+
checkNotNull(totp, 'Authentication information');
|
|
150
|
+
// ログイン
|
|
151
|
+
const method = 'GET';
|
|
152
|
+
const url = `${SERVLETPATH_DATA}/?_login`;
|
|
153
|
+
const headers = { 'Authorization': `TOTP ${totp}` };
|
|
154
|
+
if (isTrustedDevice) {
|
|
155
|
+
headers['X-TRUSTED-DEVICE'] = 'true';
|
|
144
156
|
}
|
|
145
|
-
|
|
146
|
-
|
|
157
|
+
//console.log(`[vtecxnext loginWithTotp] headers = ${JSON.stringify(headers)}`)
|
|
158
|
+
let response;
|
|
159
|
+
try {
|
|
160
|
+
response = await requestVtecx(method, url, req, null, headers);
|
|
147
161
|
}
|
|
148
|
-
|
|
149
|
-
|
|
162
|
+
catch (e) {
|
|
163
|
+
throw newFetchError(e, true);
|
|
164
|
+
}
|
|
165
|
+
// vte.cxからのset-cookieを転記
|
|
166
|
+
setCookie(response, res);
|
|
167
|
+
const data = await response.json();
|
|
168
|
+
return { status: response.status, message: data.feed.title };
|
|
150
169
|
};
|
|
151
|
-
exports.
|
|
170
|
+
exports.loginWithTotp = loginWithTotp;
|
|
152
171
|
/**
|
|
153
172
|
* logout.
|
|
154
173
|
* If the logout is successful, delete the authentication information in a cookie.
|
|
155
174
|
* @param req request
|
|
156
175
|
* @param res response
|
|
157
|
-
* @return
|
|
176
|
+
* @return status and message
|
|
158
177
|
*/
|
|
159
178
|
const logout = async (req, res) => {
|
|
160
179
|
//console.log('[vtecxnext logout] start.')
|
|
@@ -177,7 +196,8 @@ const logout = async (req, res) => {
|
|
|
177
196
|
// 戻り値
|
|
178
197
|
const data = await getJson(response);
|
|
179
198
|
//console.log(`[vtecxnext logout] response message : ${data.feed.title}`)
|
|
180
|
-
return true
|
|
199
|
+
//return true
|
|
200
|
+
return { status: response.status, message: data.feed.title };
|
|
181
201
|
};
|
|
182
202
|
exports.logout = logout;
|
|
183
203
|
/**
|
|
@@ -374,7 +394,7 @@ const log = async (req, res, message, title, subtitle) => {
|
|
|
374
394
|
const logSubtitle = subtitle ?? 'INFO';
|
|
375
395
|
const feed = [{ 'title': logTitle, 'subtitle': logSubtitle, 'summary': message }];
|
|
376
396
|
const method = 'POST';
|
|
377
|
-
const url =
|
|
397
|
+
const url = `${SERVLETPATH_PROVIDER}/?_log`;
|
|
378
398
|
let response;
|
|
379
399
|
try {
|
|
380
400
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -405,7 +425,7 @@ const getEntry = async (req, res, uri, targetService) => {
|
|
|
405
425
|
checkUri(uri);
|
|
406
426
|
// vte.cxへリクエスト
|
|
407
427
|
const method = 'GET';
|
|
408
|
-
const url =
|
|
428
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?e`;
|
|
409
429
|
let response;
|
|
410
430
|
try {
|
|
411
431
|
response = await requestVtecx(method, url, req, null, null, targetService);
|
|
@@ -435,7 +455,7 @@ const getFeed = async (req, res, uri, targetService) => {
|
|
|
435
455
|
checkUri(uri);
|
|
436
456
|
// vte.cxへリクエスト
|
|
437
457
|
const method = 'GET';
|
|
438
|
-
const url =
|
|
458
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}${uri.includes('?') ? '&' : '?'}f`;
|
|
439
459
|
let response;
|
|
440
460
|
try {
|
|
441
461
|
response = await requestVtecx(method, url, req, null, null, targetService);
|
|
@@ -465,7 +485,7 @@ const count = async (req, res, uri, targetService) => {
|
|
|
465
485
|
checkUri(uri);
|
|
466
486
|
// vte.cxへリクエスト
|
|
467
487
|
const method = 'GET';
|
|
468
|
-
const url =
|
|
488
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}${uri.includes('?') ? '&' : '?'}c`;
|
|
469
489
|
let response;
|
|
470
490
|
try {
|
|
471
491
|
response = await requestVtecx(method, url, req, null, null, targetService);
|
|
@@ -501,7 +521,7 @@ const post = async (req, res, feed, uri, targetService) => {
|
|
|
501
521
|
}
|
|
502
522
|
// vte.cxへリクエスト
|
|
503
523
|
const method = 'POST';
|
|
504
|
-
const url =
|
|
524
|
+
const url = `${SERVLETPATH_PROVIDER}${uri ? uri : '/'}?e`;
|
|
505
525
|
let response;
|
|
506
526
|
try {
|
|
507
527
|
response = await requestVtecx(method, url, req, JSON.stringify(feed), null, targetService);
|
|
@@ -537,7 +557,7 @@ const put = async (req, res, feed, isbulk, parallel, async, targetService) => {
|
|
|
537
557
|
if (isbulk) {
|
|
538
558
|
additionalParam = (parallel ? '&_bulk' : '&_bulkserial') + (async ? '&_async' : '');
|
|
539
559
|
}
|
|
540
|
-
const url =
|
|
560
|
+
const url = `${SERVLETPATH_PROVIDER}/?e${additionalParam}`;
|
|
541
561
|
//console.log(`[vtecxnext put] url=${url}`)
|
|
542
562
|
let response;
|
|
543
563
|
try {
|
|
@@ -569,7 +589,7 @@ const deleteEntry = async (req, res, uri, revision, targetService) => {
|
|
|
569
589
|
// vte.cxへリクエスト
|
|
570
590
|
const method = 'DELETE';
|
|
571
591
|
const param = revision ? `&r=${revision}` : '';
|
|
572
|
-
const url =
|
|
592
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?e${param}`;
|
|
573
593
|
let response;
|
|
574
594
|
try {
|
|
575
595
|
response = await requestVtecx(method, url, req, null, null, targetService);
|
|
@@ -599,7 +619,7 @@ const deleteFolder = async (req, res, uri, async, targetService) => {
|
|
|
599
619
|
checkUri(uri);
|
|
600
620
|
// vte.cxへリクエスト
|
|
601
621
|
const method = 'DELETE';
|
|
602
|
-
const url =
|
|
622
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?_rf${async ? '&_async' : ''}`;
|
|
603
623
|
let response;
|
|
604
624
|
try {
|
|
605
625
|
response = await requestVtecx(method, url, req, null, null, targetService);
|
|
@@ -630,7 +650,7 @@ const allocids = async (req, res, uri, num, targetService) => {
|
|
|
630
650
|
checkNotNull(num, 'number to allocate');
|
|
631
651
|
// vte.cxへリクエスト
|
|
632
652
|
const method = 'GET';
|
|
633
|
-
const url =
|
|
653
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?_allocids=${num}`;
|
|
634
654
|
let response;
|
|
635
655
|
try {
|
|
636
656
|
response = await requestVtecx(method, url, req, null, null, targetService);
|
|
@@ -663,7 +683,7 @@ const addids = async (req, res, uri, num, targetService) => {
|
|
|
663
683
|
checkNotNull(num, 'number to add');
|
|
664
684
|
// vte.cxへリクエスト
|
|
665
685
|
const method = 'PUT';
|
|
666
|
-
const url =
|
|
686
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?_addids=${num}`;
|
|
667
687
|
let response;
|
|
668
688
|
try {
|
|
669
689
|
response = await requestVtecx(method, url, req, null, null, targetService);
|
|
@@ -694,7 +714,7 @@ const getids = async (req, res, uri, targetService) => {
|
|
|
694
714
|
checkUri(uri);
|
|
695
715
|
// vte.cxへリクエスト
|
|
696
716
|
const method = 'GET';
|
|
697
|
-
const url =
|
|
717
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?_getids`;
|
|
698
718
|
let response;
|
|
699
719
|
try {
|
|
700
720
|
response = await requestVtecx(method, url, req, null, null, targetService);
|
|
@@ -727,7 +747,7 @@ const setids = async (req, res, uri, num, targetService) => {
|
|
|
727
747
|
checkNotNull(num, 'number to set');
|
|
728
748
|
// vte.cxへリクエスト
|
|
729
749
|
const method = 'PUT';
|
|
730
|
-
const url =
|
|
750
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?_setids=${num}`;
|
|
731
751
|
let response;
|
|
732
752
|
try {
|
|
733
753
|
response = await requestVtecx(method, url, req, null, null, targetService);
|
|
@@ -760,7 +780,7 @@ const rangeids = async (req, res, uri, range) => {
|
|
|
760
780
|
checkNotNull(range, 'range');
|
|
761
781
|
// vte.cxへリクエスト
|
|
762
782
|
const method = 'PUT';
|
|
763
|
-
const url =
|
|
783
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?_rangeids`;
|
|
764
784
|
const feed = { feed: { 'title': range } };
|
|
765
785
|
let response;
|
|
766
786
|
try {
|
|
@@ -792,7 +812,7 @@ const getRangeids = async (req, res, uri) => {
|
|
|
792
812
|
checkUri(uri);
|
|
793
813
|
// vte.cxへリクエスト
|
|
794
814
|
const method = 'GET';
|
|
795
|
-
const url =
|
|
815
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?_rangeids`;
|
|
796
816
|
let response;
|
|
797
817
|
try {
|
|
798
818
|
response = await requestVtecx(method, url, req);
|
|
@@ -825,7 +845,7 @@ const setSessionFeed = async (req, res, name, feed) => {
|
|
|
825
845
|
checkNotNull(feed, 'Feed');
|
|
826
846
|
// vte.cxへリクエスト
|
|
827
847
|
const method = 'PUT';
|
|
828
|
-
const url =
|
|
848
|
+
const url = `${SERVLETPATH_PROVIDER}/?_sessionfeed=${name}`;
|
|
829
849
|
let response;
|
|
830
850
|
try {
|
|
831
851
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -856,7 +876,7 @@ const setSessionEntry = async (req, res, name, entry) => {
|
|
|
856
876
|
checkNotNull(entry, 'Entry');
|
|
857
877
|
// vte.cxへリクエスト
|
|
858
878
|
const method = 'PUT';
|
|
859
|
-
const url =
|
|
879
|
+
const url = `${SERVLETPATH_PROVIDER}/?_sessionentry=${name}`;
|
|
860
880
|
const feed = { feed: { 'entry': entry } };
|
|
861
881
|
let response;
|
|
862
882
|
try {
|
|
@@ -888,7 +908,7 @@ const setSessionString = async (req, res, name, str) => {
|
|
|
888
908
|
checkNotNull(str, 'String');
|
|
889
909
|
// vte.cxへリクエスト
|
|
890
910
|
const method = 'PUT';
|
|
891
|
-
const url =
|
|
911
|
+
const url = `${SERVLETPATH_PROVIDER}/?_sessionstring=${name}`;
|
|
892
912
|
const feed = { feed: { 'title': str } };
|
|
893
913
|
let response;
|
|
894
914
|
try {
|
|
@@ -920,7 +940,7 @@ const setSessionLong = async (req, res, name, num) => {
|
|
|
920
940
|
checkNotNull(num, 'Number');
|
|
921
941
|
// vte.cxへリクエスト
|
|
922
942
|
const method = 'PUT';
|
|
923
|
-
const url =
|
|
943
|
+
const url = `${SERVLETPATH_PROVIDER}/?_sessionlong=${name}`;
|
|
924
944
|
const feed = { feed: { 'title': String(num) } };
|
|
925
945
|
let response;
|
|
926
946
|
try {
|
|
@@ -952,7 +972,7 @@ const incrementSession = async (req, res, name, num) => {
|
|
|
952
972
|
checkNotNull(num, 'Number');
|
|
953
973
|
// vte.cxへリクエスト
|
|
954
974
|
const method = 'PUT';
|
|
955
|
-
const url =
|
|
975
|
+
const url = `${SERVLETPATH_PROVIDER}/?_sessionincr=${name}&_num=${num}`;
|
|
956
976
|
let response;
|
|
957
977
|
try {
|
|
958
978
|
response = await requestVtecx(method, url, req);
|
|
@@ -983,7 +1003,7 @@ const deleteSessionFeed = async (req, res, name) => {
|
|
|
983
1003
|
checkNotNull(name, 'Name');
|
|
984
1004
|
// vte.cxへリクエスト
|
|
985
1005
|
const method = 'DELETE';
|
|
986
|
-
const url =
|
|
1006
|
+
const url = `${SERVLETPATH_PROVIDER}/?_sessionfeed=${name}`;
|
|
987
1007
|
let response;
|
|
988
1008
|
try {
|
|
989
1009
|
response = await requestVtecx(method, url, req);
|
|
@@ -1012,7 +1032,7 @@ const deleteSessionEntry = async (req, res, name) => {
|
|
|
1012
1032
|
checkNotNull(name, 'Name');
|
|
1013
1033
|
// vte.cxへリクエスト
|
|
1014
1034
|
const method = 'DELETE';
|
|
1015
|
-
const url =
|
|
1035
|
+
const url = `${SERVLETPATH_PROVIDER}/?_sessionentry=${name}`;
|
|
1016
1036
|
let response;
|
|
1017
1037
|
try {
|
|
1018
1038
|
response = await requestVtecx(method, url, req);
|
|
@@ -1041,7 +1061,7 @@ const deleteSessionString = async (req, res, name) => {
|
|
|
1041
1061
|
checkNotNull(name, 'Name');
|
|
1042
1062
|
// vte.cxへリクエスト
|
|
1043
1063
|
const method = 'DELETE';
|
|
1044
|
-
const url =
|
|
1064
|
+
const url = `${SERVLETPATH_PROVIDER}/?_sessionstring=${name}`;
|
|
1045
1065
|
let response;
|
|
1046
1066
|
try {
|
|
1047
1067
|
response = await requestVtecx(method, url, req);
|
|
@@ -1070,7 +1090,7 @@ const deleteSessionLong = async (req, res, name) => {
|
|
|
1070
1090
|
checkNotNull(name, 'Name');
|
|
1071
1091
|
// vte.cxへリクエスト
|
|
1072
1092
|
const method = 'DELETE';
|
|
1073
|
-
const url =
|
|
1093
|
+
const url = `${SERVLETPATH_PROVIDER}/?_sessionlong=${name}`;
|
|
1074
1094
|
let response;
|
|
1075
1095
|
try {
|
|
1076
1096
|
response = await requestVtecx(method, url, req);
|
|
@@ -1099,7 +1119,7 @@ const getSessionFeed = async (req, res, name) => {
|
|
|
1099
1119
|
checkNotNull(name, 'Name');
|
|
1100
1120
|
// vte.cxへリクエスト
|
|
1101
1121
|
const method = 'GET';
|
|
1102
|
-
const url =
|
|
1122
|
+
const url = `${SERVLETPATH_PROVIDER}/?_sessionfeed=${name}`;
|
|
1103
1123
|
let response;
|
|
1104
1124
|
try {
|
|
1105
1125
|
response = await requestVtecx(method, url, req);
|
|
@@ -1129,7 +1149,7 @@ const getSessionEntry = async (req, res, name) => {
|
|
|
1129
1149
|
checkNotNull(name, 'Name');
|
|
1130
1150
|
// vte.cxへリクエスト
|
|
1131
1151
|
const method = 'GET';
|
|
1132
|
-
const url =
|
|
1152
|
+
const url = `${SERVLETPATH_PROVIDER}/?_sessionentry=${name}`;
|
|
1133
1153
|
let response;
|
|
1134
1154
|
try {
|
|
1135
1155
|
response = await requestVtecx(method, url, req);
|
|
@@ -1159,7 +1179,7 @@ const getSessionString = async (req, res, name) => {
|
|
|
1159
1179
|
checkNotNull(name, 'Name');
|
|
1160
1180
|
// vte.cxへリクエスト
|
|
1161
1181
|
const method = 'GET';
|
|
1162
|
-
const url =
|
|
1182
|
+
const url = `${SERVLETPATH_PROVIDER}/?_sessionstring=${name}`;
|
|
1163
1183
|
let response;
|
|
1164
1184
|
try {
|
|
1165
1185
|
response = await requestVtecx(method, url, req);
|
|
@@ -1195,7 +1215,7 @@ const getSessionLong = async (req, res, name) => {
|
|
|
1195
1215
|
checkNotNull(name, 'Name');
|
|
1196
1216
|
// vte.cxへリクエスト
|
|
1197
1217
|
const method = 'GET';
|
|
1198
|
-
const url =
|
|
1218
|
+
const url = `${SERVLETPATH_PROVIDER}/?_sessionlong=${name}`;
|
|
1199
1219
|
let response;
|
|
1200
1220
|
try {
|
|
1201
1221
|
response = await requestVtecx(method, url, req);
|
|
@@ -1232,7 +1252,7 @@ const pagination = async (req, res, uri, pagerange, targetService) => {
|
|
|
1232
1252
|
checkUri(uri);
|
|
1233
1253
|
// vte.cxへリクエスト
|
|
1234
1254
|
const method = 'GET';
|
|
1235
|
-
const url =
|
|
1255
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}${uri.includes('?') ? '&' : '?'}_pagination=${pagerange}`;
|
|
1236
1256
|
let response;
|
|
1237
1257
|
try {
|
|
1238
1258
|
response = await requestVtecx(method, url, req, null, null, targetService);
|
|
@@ -1264,7 +1284,7 @@ const getPage = async (req, res, uri, num, targetService) => {
|
|
|
1264
1284
|
checkNotNull(num, 'page number');
|
|
1265
1285
|
// vte.cxへリクエスト
|
|
1266
1286
|
const method = 'GET';
|
|
1267
|
-
const url =
|
|
1287
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}${uri.includes('?') ? '&' : '?'}n=${num}`;
|
|
1268
1288
|
let response;
|
|
1269
1289
|
try {
|
|
1270
1290
|
response = await requestVtecx(method, url, req, null, null, targetService);
|
|
@@ -1303,7 +1323,7 @@ const postBQ = async (req, res, feed, async, tablenames) => {
|
|
|
1303
1323
|
}
|
|
1304
1324
|
// vte.cxへリクエスト
|
|
1305
1325
|
const method = 'POST';
|
|
1306
|
-
const url =
|
|
1326
|
+
const url = `${SERVLETPATH_PROVIDER}/?_bq${async ? '&_async' : ''}`;
|
|
1307
1327
|
let response;
|
|
1308
1328
|
try {
|
|
1309
1329
|
response = await requestVtecx(method, url, req, JSON.stringify(reqFeed));
|
|
@@ -1350,7 +1370,7 @@ const deleteBQ = async (req, res, keys, async, tablenames) => {
|
|
|
1350
1370
|
//console.log(`[vtecxnext deleteBQ] feed=${feed}`)
|
|
1351
1371
|
// vte.cxへリクエスト
|
|
1352
1372
|
const method = 'DELETE';
|
|
1353
|
-
const url =
|
|
1373
|
+
const url = `${SERVLETPATH_PROVIDER}/?_bq${async ? '&_async' : ''}`;
|
|
1354
1374
|
let response;
|
|
1355
1375
|
try {
|
|
1356
1376
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -1383,7 +1403,7 @@ const getBQ = async (req, res, sql, values, parent) => {
|
|
|
1383
1403
|
const feed = editGetBqArgument(sql, values, parent);
|
|
1384
1404
|
// vte.cxへリクエスト
|
|
1385
1405
|
const method = 'PUT';
|
|
1386
|
-
const url =
|
|
1406
|
+
const url = `${SERVLETPATH_PROVIDER}/?_querybq`;
|
|
1387
1407
|
let response;
|
|
1388
1408
|
try {
|
|
1389
1409
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -1420,7 +1440,7 @@ const getBQCsv = async (req, res, sql, values, filename, parent) => {
|
|
|
1420
1440
|
const feed = editGetBqArgument(sql, values, parent);
|
|
1421
1441
|
// vte.cxへリクエスト
|
|
1422
1442
|
const method = 'PUT';
|
|
1423
|
-
const url =
|
|
1443
|
+
const url = `${SERVLETPATH_PROVIDER}/?_querybq&_csv${filename ? '=' + filename : ''}`;
|
|
1424
1444
|
let response;
|
|
1425
1445
|
try {
|
|
1426
1446
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -1458,7 +1478,7 @@ const toPdf = async (req, res, htmlTemplate, filename) => {
|
|
|
1458
1478
|
checkNotNull(htmlTemplate, 'PDF template');
|
|
1459
1479
|
// vte.cxへリクエスト
|
|
1460
1480
|
const method = 'PUT';
|
|
1461
|
-
const url =
|
|
1481
|
+
const url = `${SERVLETPATH_PROVIDER}/?_pdf${filename ? '=' + filename : ''}`;
|
|
1462
1482
|
let response;
|
|
1463
1483
|
try {
|
|
1464
1484
|
response = await requestVtecx(method, url, req, htmlTemplate);
|
|
@@ -1495,7 +1515,7 @@ const putSignature = async (req, res, uri, revision) => {
|
|
|
1495
1515
|
checkUri(uri);
|
|
1496
1516
|
// vte.cxへリクエスト
|
|
1497
1517
|
const method = 'PUT';
|
|
1498
|
-
const url =
|
|
1518
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?_signature${revision ? '&r=' + revision : ''}`;
|
|
1499
1519
|
let response;
|
|
1500
1520
|
try {
|
|
1501
1521
|
response = await requestVtecx(method, url, req);
|
|
@@ -1525,7 +1545,7 @@ const putSignatures = async (req, res, feed) => {
|
|
|
1525
1545
|
checkNotNull(feed, 'Feed');
|
|
1526
1546
|
// vte.cxへリクエスト
|
|
1527
1547
|
const method = 'PUT';
|
|
1528
|
-
const url =
|
|
1548
|
+
const url = `${SERVLETPATH_PROVIDER}/?_signature`;
|
|
1529
1549
|
let response;
|
|
1530
1550
|
try {
|
|
1531
1551
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -1556,7 +1576,7 @@ const deleteSignature = async (req, res, uri, revision) => {
|
|
|
1556
1576
|
checkUri(uri);
|
|
1557
1577
|
// vte.cxへリクエスト
|
|
1558
1578
|
const method = 'DELETE';
|
|
1559
|
-
const url =
|
|
1579
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?_signature${revision ? '&r=' + revision : ''}`;
|
|
1560
1580
|
let response;
|
|
1561
1581
|
try {
|
|
1562
1582
|
response = await requestVtecx(method, url, req);
|
|
@@ -1585,7 +1605,7 @@ const checkSignature = async (req, res, uri) => {
|
|
|
1585
1605
|
checkUri(uri);
|
|
1586
1606
|
// vte.cxへリクエスト
|
|
1587
1607
|
const method = 'GET';
|
|
1588
|
-
const url =
|
|
1608
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?_signature`;
|
|
1589
1609
|
let response;
|
|
1590
1610
|
try {
|
|
1591
1611
|
response = await requestVtecx(method, url, req);
|
|
@@ -1646,7 +1666,7 @@ const sendMail = async (req, res, entry, to, cc, bcc, attachments) => {
|
|
|
1646
1666
|
//console.log(`[vtecxnext sendMail] feed = ${JSON.stringify(feed)}`)
|
|
1647
1667
|
// vte.cxへリクエスト
|
|
1648
1668
|
const method = 'POST';
|
|
1649
|
-
const url =
|
|
1669
|
+
const url = `${SERVLETPATH_PROVIDER}/?_sendmail`;
|
|
1650
1670
|
let response;
|
|
1651
1671
|
try {
|
|
1652
1672
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -1716,7 +1736,7 @@ const pushNotification = async (req, res, message, to, title, subtitle, imageUrl
|
|
|
1716
1736
|
//console.log(`[vtecxnext pushNotification] feed = ${JSON.stringify(feed)}`)
|
|
1717
1737
|
// vte.cxへリクエスト
|
|
1718
1738
|
const method = 'POST';
|
|
1719
|
-
const url =
|
|
1739
|
+
const url = `${SERVLETPATH_PROVIDER}/?_pushnotification`;
|
|
1720
1740
|
let response;
|
|
1721
1741
|
try {
|
|
1722
1742
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -1745,7 +1765,7 @@ const setMessageQueueStatus = async (req, res, flag, channel) => {
|
|
|
1745
1765
|
checkUri(channel);
|
|
1746
1766
|
// vte.cxへリクエスト
|
|
1747
1767
|
const method = 'PUT';
|
|
1748
|
-
const url =
|
|
1768
|
+
const url = `${SERVLETPATH_PROVIDER}${channel}?_mqstatus=${flag ? 'true' : 'false'}`;
|
|
1749
1769
|
let response;
|
|
1750
1770
|
try {
|
|
1751
1771
|
response = await requestVtecx(method, url, req);
|
|
@@ -1776,7 +1796,7 @@ const setMessageQueue = async (req, res, feed, channel) => {
|
|
|
1776
1796
|
checkNotNull(feed, 'Feed');
|
|
1777
1797
|
// vte.cxへリクエスト
|
|
1778
1798
|
const method = 'POST';
|
|
1779
|
-
const url =
|
|
1799
|
+
const url = `${SERVLETPATH_PROVIDER}${channel}?_mq`;
|
|
1780
1800
|
let response;
|
|
1781
1801
|
try {
|
|
1782
1802
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -1805,7 +1825,7 @@ const getMessageQueue = async (req, res, channel) => {
|
|
|
1805
1825
|
checkUri(channel);
|
|
1806
1826
|
// vte.cxへリクエスト
|
|
1807
1827
|
const method = 'GET';
|
|
1808
|
-
const url =
|
|
1828
|
+
const url = `${SERVLETPATH_PROVIDER}${channel}?_mq`;
|
|
1809
1829
|
let response;
|
|
1810
1830
|
try {
|
|
1811
1831
|
response = await requestVtecx(method, url, req);
|
|
@@ -1837,7 +1857,7 @@ const joinGroup = async (req, res, group, selfid) => {
|
|
|
1837
1857
|
checkNotNull(selfid, 'selfid (hierarchical name under my group alias)');
|
|
1838
1858
|
// vte.cxへリクエスト
|
|
1839
1859
|
const method = 'PUT';
|
|
1840
|
-
const url =
|
|
1860
|
+
const url = `${SERVLETPATH_PROVIDER}${group}?_joingroup&_selfid=${selfid}`;
|
|
1841
1861
|
let response;
|
|
1842
1862
|
try {
|
|
1843
1863
|
response = await requestVtecx(method, url, req);
|
|
@@ -1867,7 +1887,7 @@ const leaveGroup = async (req, res, group) => {
|
|
|
1867
1887
|
checkUri(group);
|
|
1868
1888
|
// vte.cxへリクエスト
|
|
1869
1889
|
const method = 'DELETE';
|
|
1870
|
-
const url =
|
|
1890
|
+
const url = `${SERVLETPATH_PROVIDER}${group}?_leavegroup`;
|
|
1871
1891
|
let response;
|
|
1872
1892
|
try {
|
|
1873
1893
|
response = await requestVtecx(method, url, req);
|
|
@@ -1898,7 +1918,7 @@ const noGroupMember = async (req, res, uri) => {
|
|
|
1898
1918
|
checkUri(uri);
|
|
1899
1919
|
// vte.cxへリクエスト
|
|
1900
1920
|
const method = 'GET';
|
|
1901
|
-
const url =
|
|
1921
|
+
const url = `${SERVLETPATH_DATA}${uri}?_no_group_member`;
|
|
1902
1922
|
let response;
|
|
1903
1923
|
try {
|
|
1904
1924
|
response = await requestVtecx(method, url, req);
|
|
@@ -1926,7 +1946,7 @@ const getGroups = async (req, res) => {
|
|
|
1926
1946
|
//console.log('[vtecxnext getGroups] start.')
|
|
1927
1947
|
// vte.cxへリクエスト
|
|
1928
1948
|
const method = 'GET';
|
|
1929
|
-
const url =
|
|
1949
|
+
const url = `${SERVLETPATH_DATA}/?_group`;
|
|
1930
1950
|
let response;
|
|
1931
1951
|
try {
|
|
1932
1952
|
response = await requestVtecx(method, url, req);
|
|
@@ -1956,7 +1976,7 @@ const isGroupMember = async (req, res, uri) => {
|
|
|
1956
1976
|
checkUri(uri);
|
|
1957
1977
|
// vte.cxへリクエスト
|
|
1958
1978
|
const method = 'GET';
|
|
1959
|
-
const url =
|
|
1979
|
+
const url = `${SERVLETPATH_DATA}${uri}?_is_group_member`;
|
|
1960
1980
|
let response;
|
|
1961
1981
|
try {
|
|
1962
1982
|
response = await requestVtecx(method, url, req);
|
|
@@ -1999,7 +2019,7 @@ const adduser = async (req, res, feed, reCaptchaToken) => {
|
|
|
1999
2019
|
// vte.cxへリクエスト
|
|
2000
2020
|
const method = 'POST';
|
|
2001
2021
|
const param = reCaptchaToken ? `&g-recaptcha-token=${reCaptchaToken}` : '';
|
|
2002
|
-
const url =
|
|
2022
|
+
const url = `${SERVLETPATH_DATA}/?_adduser${param}`;
|
|
2003
2023
|
let response;
|
|
2004
2024
|
try {
|
|
2005
2025
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -2029,7 +2049,7 @@ const adduserByAdmin = async (req, res, feed) => {
|
|
|
2029
2049
|
checkNotNull(feed, 'Feed');
|
|
2030
2050
|
// vte.cxへリクエスト
|
|
2031
2051
|
const method = 'POST';
|
|
2032
|
-
const url =
|
|
2052
|
+
const url = `${SERVLETPATH_DATA}/?_adduserByAdmin`;
|
|
2033
2053
|
let response;
|
|
2034
2054
|
try {
|
|
2035
2055
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -2060,7 +2080,7 @@ const passreset = async (req, res, feed, reCaptchaToken) => {
|
|
|
2060
2080
|
// vte.cxへリクエスト
|
|
2061
2081
|
const method = 'POST';
|
|
2062
2082
|
const param = reCaptchaToken ? `&g-recaptcha-token=${reCaptchaToken}` : '';
|
|
2063
|
-
const url =
|
|
2083
|
+
const url = `${SERVLETPATH_DATA}/?_passreset${param}`;
|
|
2064
2084
|
let response;
|
|
2065
2085
|
try {
|
|
2066
2086
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -2089,7 +2109,7 @@ const changepass = async (req, res, feed) => {
|
|
|
2089
2109
|
checkNotNull(feed, 'Feed');
|
|
2090
2110
|
// vte.cxへリクエスト
|
|
2091
2111
|
const method = 'PUT';
|
|
2092
|
-
const url =
|
|
2112
|
+
const url = `${SERVLETPATH_DATA}/?_changephash`;
|
|
2093
2113
|
let response;
|
|
2094
2114
|
try {
|
|
2095
2115
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -2118,7 +2138,7 @@ const changepassByAdmin = async (req, res, feed) => {
|
|
|
2118
2138
|
checkNotNull(feed, 'Feed');
|
|
2119
2139
|
// vte.cxへリクエスト
|
|
2120
2140
|
const method = 'PUT';
|
|
2121
|
-
const url =
|
|
2141
|
+
const url = `${SERVLETPATH_DATA}/?_changephashByAdmin`;
|
|
2122
2142
|
let response;
|
|
2123
2143
|
try {
|
|
2124
2144
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -2147,7 +2167,7 @@ const changeaccount = async (req, res, feed) => {
|
|
|
2147
2167
|
checkNotNull(feed, 'Feed');
|
|
2148
2168
|
// vte.cxへリクエスト
|
|
2149
2169
|
const method = 'PUT';
|
|
2150
|
-
const url =
|
|
2170
|
+
const url = `${SERVLETPATH_DATA}/?_changeaccount`;
|
|
2151
2171
|
let response;
|
|
2152
2172
|
try {
|
|
2153
2173
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -2176,7 +2196,7 @@ const changeaccount_verify = async (req, res, verifyCode) => {
|
|
|
2176
2196
|
checkNotNull(verifyCode, 'verify code');
|
|
2177
2197
|
// vte.cxへリクエスト
|
|
2178
2198
|
const method = 'PUT';
|
|
2179
|
-
const url =
|
|
2199
|
+
const url = `${SERVLETPATH_DATA}/?_changeaccount_verify=${verifyCode}`;
|
|
2180
2200
|
let response;
|
|
2181
2201
|
try {
|
|
2182
2202
|
response = await requestVtecx(method, url, req);
|
|
@@ -2204,7 +2224,7 @@ const userstatus = async (req, res, account) => {
|
|
|
2204
2224
|
//console.log('[vtecxnext userstatus] start.')
|
|
2205
2225
|
// vte.cxへリクエスト
|
|
2206
2226
|
const method = 'GET';
|
|
2207
|
-
const url =
|
|
2227
|
+
const url = `${SERVLETPATH_DATA}/?_userstatus${account ? '=' + account : ''}`;
|
|
2208
2228
|
let response;
|
|
2209
2229
|
try {
|
|
2210
2230
|
response = await requestVtecx(method, url, req);
|
|
@@ -2234,7 +2254,7 @@ const revokeuser = async (req, res, account) => {
|
|
|
2234
2254
|
checkNotNull(account, 'account');
|
|
2235
2255
|
// vte.cxへリクエスト
|
|
2236
2256
|
const method = 'PUT';
|
|
2237
|
-
const url =
|
|
2257
|
+
const url = `${SERVLETPATH_DATA}/?_revokeuser=${account}`;
|
|
2238
2258
|
let response;
|
|
2239
2259
|
try {
|
|
2240
2260
|
response = await requestVtecx(method, url, req);
|
|
@@ -2264,7 +2284,7 @@ const revokeusers = async (req, res, feed) => {
|
|
|
2264
2284
|
checkNotNull(feed, 'Feed');
|
|
2265
2285
|
// vte.cxへリクエスト
|
|
2266
2286
|
const method = 'PUT';
|
|
2267
|
-
const url =
|
|
2287
|
+
const url = `${SERVLETPATH_DATA}/?_revokeuser`;
|
|
2268
2288
|
let response;
|
|
2269
2289
|
try {
|
|
2270
2290
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -2293,7 +2313,7 @@ const activateuser = async (req, res, account) => {
|
|
|
2293
2313
|
checkNotNull(account, 'account');
|
|
2294
2314
|
// vte.cxへリクエスト
|
|
2295
2315
|
const method = 'PUT';
|
|
2296
|
-
const url =
|
|
2316
|
+
const url = `${SERVLETPATH_DATA}/?_activateuser=${account}`;
|
|
2297
2317
|
let response;
|
|
2298
2318
|
try {
|
|
2299
2319
|
response = await requestVtecx(method, url, req);
|
|
@@ -2323,7 +2343,7 @@ const activateusers = async (req, res, feed) => {
|
|
|
2323
2343
|
checkNotNull(feed, 'Feed');
|
|
2324
2344
|
// vte.cxへリクエスト
|
|
2325
2345
|
const method = 'PUT';
|
|
2326
|
-
const url =
|
|
2346
|
+
const url = `${SERVLETPATH_DATA}/?_activateuser`;
|
|
2327
2347
|
let response;
|
|
2328
2348
|
try {
|
|
2329
2349
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -2350,7 +2370,7 @@ const canceluser = async (req, res) => {
|
|
|
2350
2370
|
//console.log('[vtecxnext canceluser] start.')
|
|
2351
2371
|
// vte.cxへリクエスト
|
|
2352
2372
|
const method = 'DELETE';
|
|
2353
|
-
const url =
|
|
2373
|
+
const url = `${SERVLETPATH_DATA}/?_canceluser`;
|
|
2354
2374
|
let response;
|
|
2355
2375
|
try {
|
|
2356
2376
|
response = await requestVtecx(method, url, req);
|
|
@@ -2380,7 +2400,7 @@ const deleteuser = async (req, res, account) => {
|
|
|
2380
2400
|
checkNotNull(account, 'account');
|
|
2381
2401
|
// vte.cxへリクエスト
|
|
2382
2402
|
const method = 'DELETE';
|
|
2383
|
-
const url =
|
|
2403
|
+
const url = `${SERVLETPATH_DATA}/?_deleteuser=${account}`;
|
|
2384
2404
|
let response;
|
|
2385
2405
|
try {
|
|
2386
2406
|
response = await requestVtecx(method, url, req);
|
|
@@ -2410,7 +2430,7 @@ const deleteusers = async (req, res, feed) => {
|
|
|
2410
2430
|
checkNotNull(feed, 'Feed');
|
|
2411
2431
|
// vte.cxへリクエスト
|
|
2412
2432
|
const method = 'DELETE';
|
|
2413
|
-
const url =
|
|
2433
|
+
const url = `${SERVLETPATH_DATA}/?_deleteuser`;
|
|
2414
2434
|
let response;
|
|
2415
2435
|
try {
|
|
2416
2436
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -2469,7 +2489,7 @@ const savefiles = async (req, res, uri) => {
|
|
|
2469
2489
|
// vte.cxへリクエスト
|
|
2470
2490
|
const method = 'PUT';
|
|
2471
2491
|
const contentUri = `${uri}${uri.endsWith('/') ? '' : '/'}${formidableFile.field}`;
|
|
2472
|
-
const url =
|
|
2492
|
+
const url = `${SERVLETPATH_PROVIDER}${contentUri}?_content`;
|
|
2473
2493
|
const headers = { 'Content-Type': formidableFile.file.mimetype };
|
|
2474
2494
|
//console.log(`[vtecxnext savefiles] request. url=${url}`)
|
|
2475
2495
|
const promiseResponse = requestVtecx(method, url, req, fileBuffer, headers);
|
|
@@ -2504,7 +2524,7 @@ const savefiles = async (req, res, uri) => {
|
|
|
2504
2524
|
|
|
2505
2525
|
// vte.cxへリクエスト
|
|
2506
2526
|
const method = 'POST'
|
|
2507
|
-
const url =
|
|
2527
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?_content`
|
|
2508
2528
|
//console.log(`[vtecxnext savefiles] request. url=${url}`)
|
|
2509
2529
|
const response = await requestVtecx(method, url, req, formData)
|
|
2510
2530
|
//console.log(`[vtecxnext savefiles] response. status=${response.status}`)
|
|
@@ -2529,7 +2549,7 @@ const putcontent = async (req, res, uri) => {
|
|
|
2529
2549
|
checkUri(uri);
|
|
2530
2550
|
// vte.cxへリクエスト
|
|
2531
2551
|
const method = 'PUT';
|
|
2532
|
-
const url =
|
|
2552
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?_content`;
|
|
2533
2553
|
//const headers = {'Content-Type' : req.headers['content-type'], 'Content-Length' : req.headers['content-length']}
|
|
2534
2554
|
const headers = { 'Content-Type': req.headers['content-type'] };
|
|
2535
2555
|
const buf = await (0, exports.buffer)(req);
|
|
@@ -2561,7 +2581,7 @@ const deletecontent = async (req, res, uri) => {
|
|
|
2561
2581
|
checkUri(uri);
|
|
2562
2582
|
// vte.cxへリクエスト
|
|
2563
2583
|
const method = 'DELETE';
|
|
2564
|
-
const url =
|
|
2584
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?_content`;
|
|
2565
2585
|
let response;
|
|
2566
2586
|
try {
|
|
2567
2587
|
response = await requestVtecx(method, url, req);
|
|
@@ -2591,7 +2611,7 @@ const getcontent = async (req, res, uri) => {
|
|
|
2591
2611
|
checkUri(uri);
|
|
2592
2612
|
// vte.cxへリクエスト
|
|
2593
2613
|
const method = 'GET';
|
|
2594
|
-
const url =
|
|
2614
|
+
const url = `${SERVLETPATH_PROVIDER}${uri}?_content`;
|
|
2595
2615
|
let response;
|
|
2596
2616
|
try {
|
|
2597
2617
|
response = await requestVtecx(method, url, req);
|
|
@@ -2633,7 +2653,7 @@ const addacl = async (req, res, feed) => {
|
|
|
2633
2653
|
checkNotNull(feed, 'Feed');
|
|
2634
2654
|
// vte.cxへリクエスト
|
|
2635
2655
|
const method = 'PUT';
|
|
2636
|
-
const url =
|
|
2656
|
+
const url = `${SERVLETPATH_DATA}/?_addacl`;
|
|
2637
2657
|
let response;
|
|
2638
2658
|
try {
|
|
2639
2659
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -2663,7 +2683,7 @@ const removeacl = async (req, res, feed) => {
|
|
|
2663
2683
|
checkNotNull(feed, 'Feed');
|
|
2664
2684
|
// vte.cxへリクエスト
|
|
2665
2685
|
const method = 'PUT';
|
|
2666
|
-
const url =
|
|
2686
|
+
const url = `${SERVLETPATH_DATA}/?_removeacl`;
|
|
2667
2687
|
let response;
|
|
2668
2688
|
try {
|
|
2669
2689
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -2693,7 +2713,7 @@ const addalias = async (req, res, feed) => {
|
|
|
2693
2713
|
checkNotNull(feed, 'Feed');
|
|
2694
2714
|
// vte.cxへリクエスト
|
|
2695
2715
|
const method = 'PUT';
|
|
2696
|
-
const url =
|
|
2716
|
+
const url = `${SERVLETPATH_DATA}/?_addalias`;
|
|
2697
2717
|
let response;
|
|
2698
2718
|
try {
|
|
2699
2719
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -2723,7 +2743,7 @@ const removealias = async (req, res, feed) => {
|
|
|
2723
2743
|
checkNotNull(feed, 'Feed');
|
|
2724
2744
|
// vte.cxへリクエスト
|
|
2725
2745
|
const method = 'PUT';
|
|
2726
|
-
const url =
|
|
2746
|
+
const url = `${SERVLETPATH_DATA}/?_removealias`;
|
|
2727
2747
|
let response;
|
|
2728
2748
|
try {
|
|
2729
2749
|
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
@@ -2781,6 +2801,120 @@ const buffer = async (readable) => {
|
|
|
2781
2801
|
return Buffer.concat(chunks);
|
|
2782
2802
|
};
|
|
2783
2803
|
exports.buffer = buffer;
|
|
2804
|
+
/**
|
|
2805
|
+
* get TOTP link
|
|
2806
|
+
* @param req request (for authentication)
|
|
2807
|
+
* @param res response (for authentication)
|
|
2808
|
+
* @param chs length of one side of QR code
|
|
2809
|
+
* @return QR code URL in feed.title
|
|
2810
|
+
*/
|
|
2811
|
+
const getTotpLink = async (req, res, chs) => {
|
|
2812
|
+
//console.log('[vtecxnext getTotpLink] start.')
|
|
2813
|
+
// vte.cxへリクエスト
|
|
2814
|
+
const method = 'POST';
|
|
2815
|
+
const url = `${SERVLETPATH_DATA}/?_createtotp${chs ? '&_chs=' + String(chs) : ''}`;
|
|
2816
|
+
let response;
|
|
2817
|
+
try {
|
|
2818
|
+
response = await requestVtecx(method, url, req);
|
|
2819
|
+
}
|
|
2820
|
+
catch (e) {
|
|
2821
|
+
throw newFetchError(e, true);
|
|
2822
|
+
}
|
|
2823
|
+
//console.log(`[vtecxnext getTotpLink] response=${response}`)
|
|
2824
|
+
// vte.cxからのset-cookieを転記
|
|
2825
|
+
setCookie(response, res);
|
|
2826
|
+
// レスポンスのエラーチェック
|
|
2827
|
+
await checkVtecxResponse(response);
|
|
2828
|
+
// 戻り値
|
|
2829
|
+
return await getJson(response);
|
|
2830
|
+
};
|
|
2831
|
+
exports.getTotpLink = getTotpLink;
|
|
2832
|
+
/**
|
|
2833
|
+
* create TOTP
|
|
2834
|
+
* @param req request (for authentication)
|
|
2835
|
+
* @param res response (for authentication)
|
|
2836
|
+
* @param feed one-time password for feed.title when you do book registration
|
|
2837
|
+
* @return message
|
|
2838
|
+
*/
|
|
2839
|
+
const createTotp = async (req, res, feed) => {
|
|
2840
|
+
//console.log('[vtecxnext createTotp] start.')
|
|
2841
|
+
// 入力チェック
|
|
2842
|
+
checkNotNull(feed, 'Feed');
|
|
2843
|
+
// vte.cxへリクエスト
|
|
2844
|
+
const method = 'POST';
|
|
2845
|
+
const url = `${SERVLETPATH_DATA}/?_createtotp`;
|
|
2846
|
+
let response;
|
|
2847
|
+
try {
|
|
2848
|
+
response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
2849
|
+
}
|
|
2850
|
+
catch (e) {
|
|
2851
|
+
throw newFetchError(e, true);
|
|
2852
|
+
}
|
|
2853
|
+
//console.log(`[vtecxnext createTotp] response=${response}`)
|
|
2854
|
+
// vte.cxからのset-cookieを転記
|
|
2855
|
+
setCookie(response, res);
|
|
2856
|
+
// レスポンスのエラーチェック
|
|
2857
|
+
await checkVtecxResponse(response);
|
|
2858
|
+
// 戻り値
|
|
2859
|
+
return await getJson(response);
|
|
2860
|
+
};
|
|
2861
|
+
exports.createTotp = createTotp;
|
|
2862
|
+
/**
|
|
2863
|
+
* delete TOTP
|
|
2864
|
+
* @param req request (for authentication)
|
|
2865
|
+
* @param res response (for authentication)
|
|
2866
|
+
* @param account target account (for service admin user)
|
|
2867
|
+
* @return message
|
|
2868
|
+
*/
|
|
2869
|
+
const deleteTotp = async (req, res, account) => {
|
|
2870
|
+
//console.log('[vtecxnext deleteTotp] start.')
|
|
2871
|
+
// vte.cxへリクエスト
|
|
2872
|
+
const method = 'DELETE';
|
|
2873
|
+
const url = `${SERVLETPATH_DATA}/?_deletetotp${account ? '=' + account : ''}`;
|
|
2874
|
+
let response;
|
|
2875
|
+
try {
|
|
2876
|
+
response = await requestVtecx(method, url, req);
|
|
2877
|
+
}
|
|
2878
|
+
catch (e) {
|
|
2879
|
+
throw newFetchError(e, true);
|
|
2880
|
+
}
|
|
2881
|
+
//console.log(`[vtecxnext deleteTotp] response=${response}`)
|
|
2882
|
+
// vte.cxからのset-cookieを転記
|
|
2883
|
+
setCookie(response, res);
|
|
2884
|
+
// レスポンスのエラーチェック
|
|
2885
|
+
await checkVtecxResponse(response);
|
|
2886
|
+
// 戻り値
|
|
2887
|
+
return await getJson(response);
|
|
2888
|
+
};
|
|
2889
|
+
exports.deleteTotp = deleteTotp;
|
|
2890
|
+
/**
|
|
2891
|
+
* change TDID (Trusted device ID)
|
|
2892
|
+
* @param req request (for authentication)
|
|
2893
|
+
* @param res response (for authentication)
|
|
2894
|
+
* @param account target account (for service admin user)
|
|
2895
|
+
* @return message
|
|
2896
|
+
*/
|
|
2897
|
+
const changeTdid = async (req, res) => {
|
|
2898
|
+
//console.log('[vtecxnext changeTdid] start.')
|
|
2899
|
+
// vte.cxへリクエスト
|
|
2900
|
+
const method = 'PUT';
|
|
2901
|
+
const url = `${SERVLETPATH_DATA}/?_changetdid`;
|
|
2902
|
+
let response;
|
|
2903
|
+
try {
|
|
2904
|
+
response = await requestVtecx(method, url, req);
|
|
2905
|
+
}
|
|
2906
|
+
catch (e) {
|
|
2907
|
+
throw newFetchError(e, true);
|
|
2908
|
+
}
|
|
2909
|
+
//console.log(`[vtecxnext changeTdid] response=${response}`)
|
|
2910
|
+
// vte.cxからのset-cookieを転記
|
|
2911
|
+
setCookie(response, res);
|
|
2912
|
+
// レスポンスのエラーチェック
|
|
2913
|
+
await checkVtecxResponse(response);
|
|
2914
|
+
// 戻り値
|
|
2915
|
+
return await getJson(response);
|
|
2916
|
+
};
|
|
2917
|
+
exports.changeTdid = changeTdid;
|
|
2784
2918
|
//---------------------------------------------
|
|
2785
2919
|
/**
|
|
2786
2920
|
* Error returned from vte.cx
|
|
@@ -2853,9 +2987,23 @@ const fetchVtecx = async (method, url, headers, body, mode) => {
|
|
|
2853
2987
|
//console.log(`[vtecxnext fetchVtecx] url=${process.env.VTECX_URL}${url}`)
|
|
2854
2988
|
headers['X-Requested-With'] = 'XMLHttpRequest';
|
|
2855
2989
|
const apiKey = process.env.VTECX_APIKEY;
|
|
2856
|
-
if (apiKey) {
|
|
2857
|
-
headers['Authorization'] = `APIKey ${apiKey}
|
|
2990
|
+
if (apiKey && !url.startsWith(SERVLETPATH_DATA)) {
|
|
2991
|
+
//headers['Authorization'] = `APIKey ${apiKey}`
|
|
2992
|
+
const apiKeyVal = `APIKey ${apiKey}`;
|
|
2993
|
+
if (headers.Authorization) {
|
|
2994
|
+
if (Array.isArray(headers.Authorization)) {
|
|
2995
|
+
headers.Authorization.push(apiKeyVal);
|
|
2996
|
+
}
|
|
2997
|
+
else {
|
|
2998
|
+
const tmp = headers.Authorization;
|
|
2999
|
+
headers.Authorization = [tmp, apiKeyVal];
|
|
3000
|
+
}
|
|
3001
|
+
}
|
|
3002
|
+
else {
|
|
3003
|
+
headers.Authorization = apiKeyVal;
|
|
3004
|
+
}
|
|
2858
3005
|
}
|
|
3006
|
+
//console.log(`[vtecxnext fetchVtecx] headers = ${JSON.stringify(headers)}`)
|
|
2859
3007
|
const requestInit = {
|
|
2860
3008
|
body: body,
|
|
2861
3009
|
method: method,
|
|
@@ -2877,7 +3025,7 @@ const newFetchError = (e, isVtecx) => {
|
|
|
2877
3025
|
else {
|
|
2878
3026
|
errMsg = `Unexpected error.`;
|
|
2879
3027
|
}
|
|
2880
|
-
console.log(`[vtecxnext fetchProc] errMsg = ${errMsg}`)
|
|
3028
|
+
//console.log(`[vtecxnext fetchProc] errMsg = ${errMsg}`)
|
|
2881
3029
|
return new FetchError(errMsg);
|
|
2882
3030
|
};
|
|
2883
3031
|
/**
|
|
@@ -2896,14 +3044,50 @@ const fetchProc = (url, requestInit) => {
|
|
|
2896
3044
|
* @param res ブラウザへのレスポンス
|
|
2897
3045
|
*/
|
|
2898
3046
|
const setCookie = (response, res) => {
|
|
3047
|
+
// 各レスポンスヘッダーについて、ヘッダー名をキーとする配列をログ出力します。
|
|
2899
3048
|
let setCookieVal = response.headers.get('set-cookie');
|
|
2900
3049
|
if (setCookieVal === '' || setCookieVal) {
|
|
2901
|
-
if (setCookieVal !== '' && setCookieVal.indexOf('SameSite') < 0) {
|
|
2902
|
-
setCookieVal += '; SameSite=Lax';
|
|
2903
|
-
}
|
|
2904
3050
|
//console.log(`[vtecxnext setCookie] value : ${setCookieVal}`)
|
|
2905
|
-
res.setHeader('set-cookie', setCookieVal)
|
|
3051
|
+
//res.setHeader('set-cookie', setCookieVal)
|
|
3052
|
+
const setCookieVals = splitCookieValue(setCookieVal);
|
|
3053
|
+
res.setHeader('set-cookie', setCookieVals);
|
|
3054
|
+
/*
|
|
3055
|
+
for (const val of setCookieVals) {
|
|
3056
|
+
res.setHeader('set-cookie', val)
|
|
3057
|
+
}
|
|
3058
|
+
*/
|
|
3059
|
+
}
|
|
3060
|
+
};
|
|
3061
|
+
/**
|
|
3062
|
+
* 複数のset-cookieの値を分割。
|
|
3063
|
+
* fetchで受け取った際カンマ区切りで繋げられており、
|
|
3064
|
+
* これをそのままset-cookieにセットするとブラウザでは2項目目以降が適用されないため。
|
|
3065
|
+
* @param val set-cookieの値
|
|
3066
|
+
* @returns 分割したset-cookieの値
|
|
3067
|
+
*/
|
|
3068
|
+
const splitCookieValue = (val) => {
|
|
3069
|
+
//console.log(`[vtecxnext splitCookieValue] start. val = ${val}`)
|
|
3070
|
+
const ret = [];
|
|
3071
|
+
if (val) {
|
|
3072
|
+
const parts = val.split(', ');
|
|
3073
|
+
let tmp = '';
|
|
3074
|
+
for (const part of parts) {
|
|
3075
|
+
tmp += part;
|
|
3076
|
+
// ; Expires=Thu, 09-Mar-2023 06:55:48 GMT 等のカンマは区切りとしない。
|
|
3077
|
+
if (part.match('^.*; Expires=...$')) {
|
|
3078
|
+
// 続きあり
|
|
3079
|
+
}
|
|
3080
|
+
else {
|
|
3081
|
+
ret.push(tmp);
|
|
3082
|
+
tmp = '';
|
|
3083
|
+
}
|
|
3084
|
+
}
|
|
3085
|
+
if (tmp) {
|
|
3086
|
+
ret.push(tmp);
|
|
3087
|
+
}
|
|
2906
3088
|
}
|
|
3089
|
+
//console.log(`[vtecxnext splitCookieValue] return : ${JSON.stringify(ret)}`)
|
|
3090
|
+
return ret;
|
|
2907
3091
|
};
|
|
2908
3092
|
/**
|
|
2909
3093
|
* vte.cxからのallow-originを、ブラウザへレスポンスする。
|
|
@@ -2946,7 +3130,7 @@ const setResponseHeaders = (response, res) => {
|
|
|
2946
3130
|
* @returns 戻り値はなし。エラーの場合VtecxNextErrorをスロー。
|
|
2947
3131
|
*/
|
|
2948
3132
|
const checkVtecxResponse = async (response) => {
|
|
2949
|
-
if (response.status < 400) {
|
|
3133
|
+
if (response.status < 400 && response.status !== 203) {
|
|
2950
3134
|
return;
|
|
2951
3135
|
}
|
|
2952
3136
|
else {
|
|
@@ -3002,6 +3186,7 @@ const getJson = async (response) => {
|
|
|
3002
3186
|
catch (e) {
|
|
3003
3187
|
let errMsg;
|
|
3004
3188
|
if (e instanceof Error) {
|
|
3189
|
+
//console.log(`[vtecxnext getJson] Error occured. ${e.name}: ${e.message}`)
|
|
3005
3190
|
errMsg = `JsonError: ${e.message}`;
|
|
3006
3191
|
}
|
|
3007
3192
|
else {
|
|
@@ -3094,7 +3279,7 @@ const oauth = async (req, res, provider, oauthUrl) => {
|
|
|
3094
3279
|
checkNotNull(provider, 'OAuth provider');
|
|
3095
3280
|
// vte.cxへリクエスト (state取得)
|
|
3096
3281
|
const method = 'POST';
|
|
3097
|
-
const url =
|
|
3282
|
+
const url = `${SERVLETPATH_OAUTH}/${provider}/create_state`;
|
|
3098
3283
|
let response;
|
|
3099
3284
|
try {
|
|
3100
3285
|
response = await requestVtecx(method, url, req);
|
|
@@ -3150,7 +3335,7 @@ const oauthGetAccesstoken = async (req, res, provider, accesstokenUrl) => {
|
|
|
3150
3335
|
}
|
|
3151
3336
|
// vte.cxへリクエスト (stateチェック)
|
|
3152
3337
|
const vtecxMethod = 'POST';
|
|
3153
|
-
const vtecxUrl =
|
|
3338
|
+
const vtecxUrl = `${SERVLETPATH_OAUTH}/${provider}/check_state?state=${state}`;
|
|
3154
3339
|
//console.log(`[vtecxnext oauthGetAccesstoken] vtecxUrl=${vtecxUrl}`)
|
|
3155
3340
|
let vtecxResponse;
|
|
3156
3341
|
try {
|
|
@@ -3277,7 +3462,7 @@ const oauthLink = async (req, res, provider, userInfo) => {
|
|
|
3277
3462
|
//const param = reCaptchaToken ? `&g-recaptcha-token=${reCaptchaToken}` : ''
|
|
3278
3463
|
const param = '';
|
|
3279
3464
|
const method = 'POST';
|
|
3280
|
-
const url =
|
|
3465
|
+
const url = `${SERVLETPATH_OAUTH}/${provider}/link?state=${userInfo.state}${param}`;
|
|
3281
3466
|
const reqFeed = [{ 'title': userInfo.guid, 'subtitle': userInfo.nickname }];
|
|
3282
3467
|
let response;
|
|
3283
3468
|
try {
|