touchstudy-core 0.1.2 → 0.1.4
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/containers/Login/hooks/useLogin.d.ts +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +149 -83
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +149 -84
- package/dist/index.modern.js.map +1 -1
- package/dist/layouts/LayoutContext.d.ts +1 -0
- package/dist/redux/commons/action.d.ts +1 -0
- package/dist/utils/constants.d.ts +1 -1
- package/dist/utils/useGoogleSignOut.d.ts +1 -1
- package/package.json +1 -1
package/dist/index.modern.js
CHANGED
@@ -19,12 +19,13 @@ var setLoading = createAction("common/setLoading");
|
|
19
19
|
var setAlert = createAction("common/setAlert");
|
20
20
|
var setUser = createAction("common/setUser");
|
21
21
|
var setLanguage = createAction("common/setLanguage");
|
22
|
+
var reset = createAction("common/reset");
|
22
23
|
|
23
24
|
var GOOGLE_CLIENT_ID = "64118819726-0qlur4qjrs9jbuu6rnoa0u91g680lmpg.apps.googleusercontent.com";
|
24
25
|
var GOOGLE_RECAPTCHA_ID = "6LfNtLUaAAAAAL24lbBV11jS-gBtt1mhtxb4NXs0";
|
25
26
|
var ACCESS_TOKEN = "ACCESS_TOKEN";
|
26
27
|
var DATE_MIN_VALUE = "0001-01-01T00:00:00+00:00";
|
27
|
-
var BASE_URL = "
|
28
|
+
var BASE_URL = "http://api.touchstudy.kr";
|
28
29
|
var PUSHER_CONFIG = {
|
29
30
|
cluster: "ap1",
|
30
31
|
key: "9018c77328885a14150b"
|
@@ -140,17 +141,37 @@ var AuthenticationMessage;
|
|
140
141
|
})(AuthenticationMessage || (AuthenticationMessage = {}));
|
141
142
|
|
142
143
|
var useGoogleSignOut = function useGoogleSignOut(props) {
|
144
|
+
var dispatch = useDispatch();
|
143
145
|
var onLogoutSuccess = props.onLogoutSuccess,
|
144
146
|
onFailure = props.onFailure;
|
147
|
+
var handleLogoutSuccess = function handleLogoutSuccess() {
|
148
|
+
onLogoutSuccess === null || onLogoutSuccess === void 0 ? void 0 : onLogoutSuccess();
|
149
|
+
};
|
150
|
+
var handleLogoutFailure = function handleLogoutFailure() {
|
151
|
+
onFailure === null || onFailure === void 0 ? void 0 : onFailure();
|
152
|
+
};
|
145
153
|
var _useGoogleLogout = useGoogleLogout({
|
146
154
|
clientId: GOOGLE_CLIENT_ID,
|
147
|
-
onLogoutSuccess:
|
148
|
-
onFailure:
|
155
|
+
onLogoutSuccess: handleLogoutSuccess,
|
156
|
+
onFailure: handleLogoutFailure
|
149
157
|
}),
|
150
158
|
signOut = _useGoogleLogout.signOut,
|
151
159
|
loaded = _useGoogleLogout.loaded;
|
160
|
+
var handleSignOut = function handleSignOut() {
|
161
|
+
localStorage.removeItem("USER_INFORMATION");
|
162
|
+
localStorage.removeItem(ACCESS_TOKEN);
|
163
|
+
try {
|
164
|
+
signOut();
|
165
|
+
} catch (error) {
|
166
|
+
console.log({
|
167
|
+
error: error
|
168
|
+
});
|
169
|
+
}
|
170
|
+
dispatch(reset());
|
171
|
+
window.location.href = "/login";
|
172
|
+
};
|
152
173
|
return {
|
153
|
-
|
174
|
+
handleSignOut: handleSignOut,
|
154
175
|
loaded: loaded
|
155
176
|
};
|
156
177
|
};
|
@@ -169,14 +190,23 @@ var BlockLogin = function BlockLogin(_ref) {
|
|
169
190
|
var _useGoogleReCaptcha = useGoogleReCaptcha(),
|
170
191
|
executeRecaptcha = _useGoogleReCaptcha.executeRecaptcha;
|
171
192
|
var _useGoogleSignOut = useGoogleSignOut({}),
|
172
|
-
|
193
|
+
handleSignOut = _useGoogleSignOut.handleSignOut;
|
173
194
|
var clickHandler = useCallback(function () {
|
174
195
|
try {
|
196
|
+
var _exit = false;
|
175
197
|
if (!executeRecaptcha) {
|
176
|
-
console.log("execute recaptcha undefined");
|
177
198
|
return Promise.resolve();
|
178
199
|
}
|
179
|
-
return Promise.resolve(
|
200
|
+
return Promise.resolve(_catch(function () {
|
201
|
+
return Promise.resolve(executeRecaptcha("login")).then(function (result) {
|
202
|
+
_exit = true;
|
203
|
+
return result;
|
204
|
+
});
|
205
|
+
}, function (error) {
|
206
|
+
console.log({
|
207
|
+
error: error
|
208
|
+
});
|
209
|
+
}));
|
180
210
|
} catch (e) {
|
181
211
|
return Promise.reject(e);
|
182
212
|
}
|
@@ -184,65 +214,59 @@ var BlockLogin = function BlockLogin(_ref) {
|
|
184
214
|
var handleVerify = useCallback(function () {}, []);
|
185
215
|
var onSuccessGoogle = function onSuccessGoogle(res) {
|
186
216
|
try {
|
187
|
-
var _exit = false;
|
188
217
|
return Promise.resolve(function () {
|
189
218
|
if (!!(res !== null && res !== void 0 && res.accessToken)) {
|
190
|
-
var _temp2 = function _temp2(_result) {
|
191
|
-
if (_exit) return _result;
|
192
|
-
dispatch(setLoading(false));
|
193
|
-
};
|
194
219
|
var _res$profileObj = res.profileObj,
|
195
220
|
email = _res$profileObj.email,
|
196
221
|
imageUrl = _res$profileObj.imageUrl,
|
197
222
|
name = _res$profileObj.name;
|
198
223
|
var accessToken = res.tokenObj.id_token;
|
199
224
|
var googleId = res.googleId;
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
225
|
+
return Promise.resolve(clickHandler()).then(function (clickHandlerRes) {
|
226
|
+
function _temp2() {
|
227
|
+
dispatch(setLoading(false));
|
228
|
+
}
|
229
|
+
if (!clickHandlerRes) return;
|
230
|
+
var infoLogin = {
|
231
|
+
imageUrl: imageUrl,
|
232
|
+
fullName: name,
|
233
|
+
email: email,
|
234
|
+
token: accessToken,
|
235
|
+
googleId: googleId,
|
236
|
+
captcha: clickHandlerRes
|
237
|
+
};
|
238
|
+
var role = isTeacher ? "Teacher" : "Student";
|
239
|
+
dispatch(setLoading(true));
|
240
|
+
var _temp = _catch(function () {
|
241
|
+
return Promise.resolve(apiLoginGoogle(infoLogin, role)).then(function (res1) {
|
242
|
+
var isFirstLogin = res1.data.isFirstLogin;
|
243
|
+
var tokenJWT = res1.data.token;
|
244
|
+
localStorage.setItem("USER_INFORMATION", JSON.stringify(infoLogin));
|
245
|
+
localStorage.setItem(ACCESS_TOKEN, tokenJWT);
|
246
|
+
if (!isTeacher && isFirstLogin) {
|
247
|
+
onNavigate("/register/info");
|
248
|
+
} else {
|
249
|
+
onNavigate("/");
|
250
|
+
}
|
251
|
+
});
|
252
|
+
}, function (error) {
|
253
|
+
var _error$response, _error$response$data;
|
254
|
+
var message = undefined;
|
255
|
+
var type = error === null || error === void 0 ? void 0 : (_error$response = error.response) === null || _error$response === void 0 ? void 0 : (_error$response$data = _error$response.data) === null || _error$response$data === void 0 ? void 0 : _error$response$data.type;
|
256
|
+
if (type === AuthenticationMessage.NotAllowedToRegister) {
|
257
|
+
alert("가입 권한이 없는 계정입니다. 관리자에게 문의하세요.");
|
258
|
+
} else if (type) {
|
259
|
+
var _error$response2, _error$response2$data;
|
260
|
+
message = (error === null || error === void 0 ? void 0 : (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.message) || ERROR_MESSAGE;
|
222
261
|
} else {
|
223
|
-
|
262
|
+
var _error$response3;
|
263
|
+
message = (error === null || error === void 0 ? void 0 : (_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.data) || ERROR_MESSAGE;
|
224
264
|
}
|
265
|
+
message && alert(message);
|
266
|
+
handleSignOut();
|
225
267
|
});
|
226
|
-
|
227
|
-
var _error$response, _error$response$data;
|
228
|
-
var message = undefined;
|
229
|
-
var type = error === null || error === void 0 ? void 0 : (_error$response = error.response) === null || _error$response === void 0 ? void 0 : (_error$response$data = _error$response.data) === null || _error$response$data === void 0 ? void 0 : _error$response$data.type;
|
230
|
-
if (type === AuthenticationMessage.NotAllowedToRegister) {
|
231
|
-
alert("가입 권한이 없는 계정입니다. 관리자에게 문의하세요.");
|
232
|
-
} else if (type) {
|
233
|
-
var _error$response2, _error$response2$data;
|
234
|
-
message = (error === null || error === void 0 ? void 0 : (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.message) || ERROR_MESSAGE;
|
235
|
-
} else {
|
236
|
-
var _error$response3;
|
237
|
-
message = (error === null || error === void 0 ? void 0 : (_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.data) || ERROR_MESSAGE;
|
238
|
-
}
|
239
|
-
signOut();
|
240
|
-
!!message && dispatch(setAlert({
|
241
|
-
type: "danger",
|
242
|
-
message: message
|
243
|
-
}));
|
268
|
+
return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
|
244
269
|
});
|
245
|
-
return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
|
246
270
|
}
|
247
271
|
}());
|
248
272
|
} catch (e) {
|
@@ -258,14 +282,10 @@ var BlockLogin = function BlockLogin(_ref) {
|
|
258
282
|
validationSchema: schema,
|
259
283
|
onSubmit: function (values) {
|
260
284
|
try {
|
261
|
-
return Promise.resolve(
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
});
|
266
|
-
}, function (err) {
|
267
|
-
console.error(err);
|
268
|
-
}));
|
285
|
+
return Promise.resolve(clickHandler()).then(function (clickHandlerRes) {
|
286
|
+
if (!clickHandlerRes) return;
|
287
|
+
values.captcha = clickHandlerRes;
|
288
|
+
});
|
269
289
|
} catch (e) {
|
270
290
|
return Promise.reject(e);
|
271
291
|
}
|
@@ -301,13 +321,21 @@ var BlockLogin = function BlockLogin(_ref) {
|
|
301
321
|
});
|
302
322
|
};
|
303
323
|
|
324
|
+
var getAccessToken$1 = (function () {
|
325
|
+
try {
|
326
|
+
return localStorage.getItem(ACCESS_TOKEN);
|
327
|
+
} catch (err) {
|
328
|
+
return null;
|
329
|
+
}
|
330
|
+
});
|
331
|
+
|
304
332
|
var defaultInfo = {
|
305
333
|
email: "",
|
306
334
|
password: "",
|
307
335
|
captcha: "",
|
308
336
|
rememberMe: false
|
309
337
|
};
|
310
|
-
var useLogin = function useLogin() {
|
338
|
+
var useLogin = function useLogin(onNavigate) {
|
311
339
|
var _useState = useState(false),
|
312
340
|
openLogin = _useState[0],
|
313
341
|
setOpenLogin = _useState[1];
|
@@ -327,7 +355,11 @@ var useLogin = function useLogin() {
|
|
327
355
|
scope: 'email'
|
328
356
|
});
|
329
357
|
};
|
330
|
-
gapi.load('client:auth2', start);
|
358
|
+
!!gapi && gapi.load('client:auth2', start);
|
359
|
+
}, [gapi]);
|
360
|
+
useEffect(function () {
|
361
|
+
var token = getAccessToken$1();
|
362
|
+
if (!!token) onNavigate("/");
|
331
363
|
}, []);
|
332
364
|
return {
|
333
365
|
defaultInfo: defaultInfo,
|
@@ -343,7 +375,7 @@ var useLogin = function useLogin() {
|
|
343
375
|
var Login = function Login(_ref) {
|
344
376
|
var onNavigate = _ref.onNavigate,
|
345
377
|
isTeacher = _ref.isTeacher;
|
346
|
-
var _useLogin = useLogin(),
|
378
|
+
var _useLogin = useLogin(onNavigate),
|
347
379
|
defaultInfo = _useLogin.defaultInfo;
|
348
380
|
return React.createElement("div", {
|
349
381
|
className: styles["login"] + " container-fluid font-family-lato"
|
@@ -582,6 +614,8 @@ var commonReducer = createReducer(initialState, function (builder) {
|
|
582
614
|
state.user = action.payload;
|
583
615
|
}).addCase(setLanguage, function (state, action) {
|
584
616
|
state.language = action.payload;
|
617
|
+
}).addCase(reset, function (_state, _action) {
|
618
|
+
return initialState;
|
585
619
|
});
|
586
620
|
});
|
587
621
|
|
@@ -658,14 +692,6 @@ var encodeParams$1 = (function (params) {
|
|
658
692
|
}).join('&');
|
659
693
|
});
|
660
694
|
|
661
|
-
var getAccessToken$1 = (function () {
|
662
|
-
try {
|
663
|
-
return localStorage.getItem(ACCESS_TOKEN);
|
664
|
-
} catch (err) {
|
665
|
-
return null;
|
666
|
-
}
|
667
|
-
});
|
668
|
-
|
669
695
|
var api$1 = axios.create({
|
670
696
|
baseURL: BASE_URL,
|
671
697
|
timeout: 0,
|
@@ -717,15 +743,28 @@ var getInfo = function getInfo() {
|
|
717
743
|
|
718
744
|
var LayoutContext = function LayoutContext(_ref) {
|
719
745
|
var children = _ref.children,
|
720
|
-
|
746
|
+
role = _ref.role;
|
721
747
|
var _useGoogleSignOut = useGoogleSignOut({}),
|
722
|
-
|
748
|
+
handleSignOut = _useGoogleSignOut.handleSignOut;
|
723
749
|
var dispatch = useDispatch();
|
750
|
+
var user = useSelector(function (state) {
|
751
|
+
var _state$common;
|
752
|
+
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
753
|
+
});
|
724
754
|
var resetAuth = function resetAuth() {
|
725
|
-
|
726
|
-
signOut();
|
727
|
-
onNavigate("/login");
|
755
|
+
handleSignOut();
|
728
756
|
};
|
757
|
+
var checkRoleUser = useCallback(function () {
|
758
|
+
var _user$roles, _user$roles2;
|
759
|
+
if (!user) return;
|
760
|
+
var isAdmin = (_user$roles = user.roles) === null || _user$roles === void 0 ? void 0 : _user$roles.includes("Admin");
|
761
|
+
if (isAdmin && role !== "Teacher") alert(user.email + " not allow to register " + role);
|
762
|
+
if (isAdmin) return;
|
763
|
+
if (!((_user$roles2 = user.roles) !== null && _user$roles2 !== void 0 && _user$roles2.includes(role))) {
|
764
|
+
alert(user.email + " not allow to register " + role);
|
765
|
+
resetAuth();
|
766
|
+
}
|
767
|
+
}, [role, JSON.stringify(user)]);
|
729
768
|
var loadInfo = function loadInfo() {
|
730
769
|
try {
|
731
770
|
var _temp2 = function _temp2() {
|
@@ -744,7 +783,11 @@ var LayoutContext = function LayoutContext(_ref) {
|
|
744
783
|
}
|
745
784
|
dispatch(setUser(info.data));
|
746
785
|
});
|
747
|
-
}, function () {
|
786
|
+
}, function (err) {
|
787
|
+
console.log({
|
788
|
+
err: err
|
789
|
+
});
|
790
|
+
role === "Student" ? alert("학생, 다시 로그인해주세요.") : alert("선생님, 다시 로그인해주세요.");
|
748
791
|
resetAuth();
|
749
792
|
});
|
750
793
|
return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
|
@@ -753,8 +796,9 @@ var LayoutContext = function LayoutContext(_ref) {
|
|
753
796
|
}
|
754
797
|
};
|
755
798
|
useEffect(function () {
|
756
|
-
loadInfo();
|
757
|
-
|
799
|
+
!user && loadInfo();
|
800
|
+
!!user && checkRoleUser();
|
801
|
+
}, [JSON.stringify(user)]);
|
758
802
|
return React.createElement(Fragment, null, children);
|
759
803
|
};
|
760
804
|
|
@@ -971,6 +1015,7 @@ var description_success = "스터디 터치는 엄태욱 선생님의 수업에
|
|
971
1015
|
var logout = "로그 아웃";
|
972
1016
|
var overall_status = "전체 현황";
|
973
1017
|
var exam_status = "시험별 현";
|
1018
|
+
var student_status = "학생 신분";
|
974
1019
|
var user_manager = "사용자 목록";
|
975
1020
|
var recent_exam_results = "최근 시험 결과";
|
976
1021
|
var instructor_name = "강사이름";
|
@@ -1015,6 +1060,7 @@ var no_data = "데이터 없음";
|
|
1015
1060
|
var internet_connection_was_lost = "인터넷 연결이 끊어졌습니다";
|
1016
1061
|
var problem = "문제";
|
1017
1062
|
var problem_solving_time = "문제풀이 시간";
|
1063
|
+
var minutes = "분";
|
1018
1064
|
var lang_ko = {
|
1019
1065
|
problem_solving: problem_solving,
|
1020
1066
|
my_story: my_story,
|
@@ -1026,6 +1072,7 @@ var lang_ko = {
|
|
1026
1072
|
logout: logout,
|
1027
1073
|
overall_status: overall_status,
|
1028
1074
|
exam_status: exam_status,
|
1075
|
+
student_status: student_status,
|
1029
1076
|
user_manager: user_manager,
|
1030
1077
|
recent_exam_results: recent_exam_results,
|
1031
1078
|
instructor_name: instructor_name,
|
@@ -1069,7 +1116,8 @@ var lang_ko = {
|
|
1069
1116
|
no_data: no_data,
|
1070
1117
|
internet_connection_was_lost: internet_connection_was_lost,
|
1071
1118
|
problem: problem,
|
1072
|
-
problem_solving_time: problem_solving_time
|
1119
|
+
problem_solving_time: problem_solving_time,
|
1120
|
+
minutes: minutes
|
1073
1121
|
};
|
1074
1122
|
|
1075
1123
|
var problem_solving$1 = "Problem Solving";
|
@@ -1082,6 +1130,7 @@ var description_success$1 = "Study Touch is a learning tool used in teacher Taew
|
|
1082
1130
|
var logout$1 = "Logout";
|
1083
1131
|
var overall_status$1 = "Overall Status";
|
1084
1132
|
var exam_status$1 = "Exam Status";
|
1133
|
+
var student_status$1 = "Student Status";
|
1085
1134
|
var user_manager$1 = "User Manager";
|
1086
1135
|
var recent_exam_results$1 = "Recent exam";
|
1087
1136
|
var instructor_name$1 = "Instructor name";
|
@@ -1126,6 +1175,7 @@ var no_data$1 = "No data";
|
|
1126
1175
|
var internet_connection_was_lost$1 = "Internet connection was lost";
|
1127
1176
|
var problem$1 = "Problem ";
|
1128
1177
|
var problem_solving_time$1 = "Problem solving time";
|
1178
|
+
var minutes$1 = "m";
|
1129
1179
|
var lang_en = {
|
1130
1180
|
problem_solving: problem_solving$1,
|
1131
1181
|
my_story: my_story$1,
|
@@ -1137,6 +1187,7 @@ var lang_en = {
|
|
1137
1187
|
logout: logout$1,
|
1138
1188
|
overall_status: overall_status$1,
|
1139
1189
|
exam_status: exam_status$1,
|
1190
|
+
student_status: student_status$1,
|
1140
1191
|
user_manager: user_manager$1,
|
1141
1192
|
recent_exam_results: recent_exam_results$1,
|
1142
1193
|
instructor_name: instructor_name$1,
|
@@ -1180,7 +1231,8 @@ var lang_en = {
|
|
1180
1231
|
no_data: no_data$1,
|
1181
1232
|
internet_connection_was_lost: internet_connection_was_lost$1,
|
1182
1233
|
problem: problem$1,
|
1183
|
-
problem_solving_time: problem_solving_time$1
|
1234
|
+
problem_solving_time: problem_solving_time$1,
|
1235
|
+
minutes: minutes$1
|
1184
1236
|
};
|
1185
1237
|
|
1186
1238
|
i18n.use(initReactI18next).init({
|
@@ -1312,7 +1364,20 @@ var toISOString = (function (time) {
|
|
1312
1364
|
}
|
1313
1365
|
});
|
1314
1366
|
|
1367
|
+
var canAccess = function canAccess(userRoles, componentRoles) {
|
1368
|
+
if (!Array.isArray(userRoles)) {
|
1369
|
+
return false;
|
1370
|
+
}
|
1371
|
+
if (Array.isArray(componentRoles)) {
|
1372
|
+
var intersects = userRoles.filter(function (i) {
|
1373
|
+
return componentRoles.includes(i);
|
1374
|
+
});
|
1375
|
+
return intersects.length > 0;
|
1376
|
+
}
|
1377
|
+
return true;
|
1378
|
+
};
|
1379
|
+
|
1315
1380
|
var historyCore = createBrowserHistory();
|
1316
1381
|
|
1317
|
-
export { ACCESS_TOKEN, BASE_URL, CommonAlert, CommonDialog, ConfirmDialog, CustomPagination, DATE_MIN_VALUE, EXAM_CHANNEL, ExamEvent, LayoutContext, Loading, Login, NotFound, PUSHER_CONFIG, TheLanguageDropdown, api$1 as api, diffFromNow, formatTime, historyCore, i18n, minutesToTimeSpan, setAlert, setLanguage, setLoading, setUser, store, toISOString, useGoogleSignOut, utcToLocalTime };
|
1382
|
+
export { ACCESS_TOKEN, BASE_URL, CommonAlert, CommonDialog, ConfirmDialog, CustomPagination, DATE_MIN_VALUE, EXAM_CHANNEL, ExamEvent, LayoutContext, Loading, Login, NotFound, PUSHER_CONFIG, TheLanguageDropdown, api$1 as api, canAccess as canAccessRoute, diffFromNow, formatTime, historyCore, i18n, minutesToTimeSpan, setAlert, setLanguage, setLoading, setUser, store, toISOString, useGoogleSignOut, utcToLocalTime };
|
1318
1383
|
//# sourceMappingURL=index.modern.js.map
|