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