feat: Add legal requirements (#1306)
This commit is contained in:
@@ -119,11 +119,11 @@ export function* updateHomeView(value) {
|
||||
}
|
||||
}
|
||||
|
||||
export function* logout(invalidateAccessToken) {
|
||||
export function* logout(revokeAccessToken) {
|
||||
yield call(removeAccessToken);
|
||||
|
||||
if (invalidateAccessToken) {
|
||||
yield put(actions.logout.invalidateAccessToken());
|
||||
if (revokeAccessToken) {
|
||||
yield put(actions.logout.revokeAccessToken());
|
||||
|
||||
try {
|
||||
yield call(request, api.deleteCurrentAccessToken);
|
||||
|
||||
@@ -19,8 +19,8 @@ export default function* coreWatchers() {
|
||||
takeEvery(EntryActionTypes.HOME_VIEW_UPDATE, ({ payload: { value } }) =>
|
||||
services.updateHomeView(value),
|
||||
),
|
||||
takeEvery(EntryActionTypes.LOGOUT, ({ payload: { invalidateAccessToken } }) =>
|
||||
services.logout(invalidateAccessToken),
|
||||
takeEvery(EntryActionTypes.LOGOUT, ({ payload: { revokeAccessToken } }) =>
|
||||
services.logout(revokeAccessToken),
|
||||
),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -13,7 +13,12 @@ export default function* loginSaga() {
|
||||
const watcherTasks = yield all(watchers.map((watcher) => fork(watcher)));
|
||||
|
||||
yield fork(services.initializeLogin);
|
||||
yield take([ActionTypes.AUTHENTICATE__SUCCESS, ActionTypes.WITH_OIDC_AUTHENTICATE__SUCCESS]);
|
||||
|
||||
yield take([
|
||||
ActionTypes.AUTHENTICATE__SUCCESS,
|
||||
ActionTypes.WITH_OIDC_AUTHENTICATE__SUCCESS,
|
||||
ActionTypes.TERMS_ACCEPT__SUCCESS,
|
||||
]);
|
||||
|
||||
yield cancel(watcherTasks);
|
||||
yield call(services.goToRoot);
|
||||
|
||||
@@ -10,8 +10,10 @@ import { replace } from '../../../lib/redux-router';
|
||||
import selectors from '../../../selectors';
|
||||
import actions from '../../../actions';
|
||||
import api from '../../../api';
|
||||
import i18n from '../../../i18n';
|
||||
import { setAccessToken } from '../../../utils/access-token-storage';
|
||||
import Paths from '../../../constants/Paths';
|
||||
import AccessTokenSteps from '../../../constants/AccessTokenSteps';
|
||||
|
||||
export function* initializeLogin() {
|
||||
const { item: config } = yield call(api.getConfig); // TODO: handle error
|
||||
@@ -26,7 +28,12 @@ export function* authenticate(data) {
|
||||
try {
|
||||
({ item: accessToken } = yield call(api.createAccessToken, data));
|
||||
} catch (error) {
|
||||
yield put(actions.authenticate.failure(error));
|
||||
let terms;
|
||||
if (error.step === AccessTokenSteps.ACCEPT_TERMS) {
|
||||
({ item: terms } = yield call(api.getTerms, error.termsType, i18n.resolvedLanguage));
|
||||
}
|
||||
|
||||
yield put(actions.authenticate.failure(error, terms));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -106,7 +113,12 @@ export function* authenticateWithOidcCallback() {
|
||||
nonce,
|
||||
}));
|
||||
} catch (error) {
|
||||
yield put(actions.authenticateWithOidc.failure(error));
|
||||
let terms;
|
||||
if (error.step === AccessTokenSteps.ACCEPT_TERMS) {
|
||||
({ item: terms } = yield call(api.getTerms, error.termsType, i18n.resolvedLanguage));
|
||||
}
|
||||
|
||||
yield put(actions.authenticateWithOidc.failure(error, terms));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -118,10 +130,70 @@ export function* clearAuthenticateError() {
|
||||
yield put(actions.clearAuthenticateError());
|
||||
}
|
||||
|
||||
export function* acceptTerms(signature) {
|
||||
yield put(actions.acceptTerms(signature));
|
||||
|
||||
const { pendingToken } = yield select(selectors.selectAuthenticateForm);
|
||||
|
||||
let accessToken;
|
||||
try {
|
||||
({ item: accessToken } = yield call(api.acceptTerms, {
|
||||
pendingToken,
|
||||
signature,
|
||||
}));
|
||||
} catch (error) {
|
||||
yield put(actions.acceptTerms.failure(error));
|
||||
return;
|
||||
}
|
||||
|
||||
yield call(setAccessToken, accessToken);
|
||||
yield put(actions.acceptTerms.success(accessToken));
|
||||
}
|
||||
|
||||
export function* cancelTerms() {
|
||||
const { pendingToken } = yield select(selectors.selectAuthenticateForm);
|
||||
|
||||
yield put(actions.cancelTerms());
|
||||
|
||||
try {
|
||||
yield call(api.revokePendingToken, {
|
||||
pendingToken,
|
||||
});
|
||||
} catch (error) {
|
||||
yield put(actions.cancelTerms.failure(error));
|
||||
return;
|
||||
}
|
||||
|
||||
yield put(actions.cancelTerms.success(pendingToken));
|
||||
}
|
||||
|
||||
export function* updateTermsLanguage(value) {
|
||||
yield put(actions.updateTermsLanguage(value));
|
||||
|
||||
const {
|
||||
termsForm: {
|
||||
payload: { type },
|
||||
},
|
||||
} = yield select(selectors.selectAuthenticateForm);
|
||||
|
||||
let terms;
|
||||
try {
|
||||
({ item: terms } = yield call(api.getTerms, type, value));
|
||||
} catch (error) {
|
||||
yield put(actions.updateTermsLanguage.failure(error));
|
||||
return;
|
||||
}
|
||||
|
||||
yield put(actions.updateTermsLanguage.success(terms));
|
||||
}
|
||||
|
||||
export default {
|
||||
initializeLogin,
|
||||
authenticate,
|
||||
authenticateWithOidc,
|
||||
authenticateWithOidcCallback,
|
||||
clearAuthenticateError,
|
||||
acceptTerms,
|
||||
cancelTerms,
|
||||
updateTermsLanguage,
|
||||
};
|
||||
|
||||
@@ -15,5 +15,12 @@ export default function* loginWatchers() {
|
||||
),
|
||||
takeEvery(EntryActionTypes.WITH_OIDC_AUTHENTICATE, () => services.authenticateWithOidc()),
|
||||
takeEvery(EntryActionTypes.AUTHENTICATE_ERROR_CLEAR, () => services.clearAuthenticateError()),
|
||||
takeEvery(EntryActionTypes.TERMS_ACCEPT, ({ payload: { signature } }) =>
|
||||
services.acceptTerms(signature),
|
||||
),
|
||||
takeEvery(EntryActionTypes.TERMS_CANCEL, () => services.cancelTerms()),
|
||||
takeEvery(EntryActionTypes.TERMS_LANGUAGE_UPDATE, ({ payload: { value } }) =>
|
||||
services.updateTermsLanguage(value),
|
||||
),
|
||||
]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user