Skip to content

Commit 22e44e8

Browse files
committed
DBC22-4971: fixed logout and redirect on deactivation
1 parent 0bc8ee6 commit 22e44e8

3 files changed

Lines changed: 22 additions & 4 deletions

File tree

src/backend/apps/authentication/adapters.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ def get_logout_redirect_url(self, request):
2828
else:
2929
redirect_url += path
3030

31+
elif request.GET.get('deactivate'):
32+
redirect_url += 'account-deactivated'
33+
3134
url = f'{settings.KEYCLOAK_URL}/protocol/openid-connect/logout'
3235

3336
token = request.session.get('id_token')

src/frontend/src/pages/AccountPage.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,9 @@ export default function AccountPage() {
5454
// Show login modal once if user is not logged in
5555
if (!authContext.username && !showedModal.current) {
5656
toggleAuthModal('Sign in');
57-
showedModal.current = true;
5857
}
58+
59+
showedModal.current = true;
5960
}, [authContext]);
6061

6162
/* Handlers */
@@ -71,11 +72,17 @@ export default function AccountPage() {
7172
credentials: 'include'
7273
});
7374

75+
return response;
76+
};
77+
78+
const handleDeactivateAndSignout = async (e) => {
79+
e.preventDefault();
80+
const response = await deactivateHandler();
7481
if (response.status === 204) {
7582
// Successfully deleted the user, handle logout or redirect
76-
setAuthContext({ ...authContext, username: null });
83+
setAuthContext({ ...authContext, showingModal: false, username: null });
7784
logoutDispatch(dispatch, selectedRoute, searchedRoutes);
78-
navigate('/account-deactivated');
85+
e.target.submit();
7986
}
8087
};
8188

@@ -169,7 +176,10 @@ export default function AccountPage() {
169176
</p>
170177

171178
<div className="modal-buttons">
172-
<Button variant="danger" onClick={deactivateHandler}>Yes, deactivate my account</Button>
179+
<form id="signout-link" className="nav-link" method='post' action={`${window.API_HOST}/accounts/logout/?deactivate=true`} onSubmit={handleDeactivateAndSignout}>
180+
<input type='hidden' name='csrfmiddlewaretoken' value={getCookie('csrftoken')} />
181+
<button type='submit' className="btn btn-outline-primary">Yes, deactivate my account</button>
182+
</form>
173183
<Button variant="outline-primary" onClick={() => setShowDeactivate(false)}>Cancel</Button>
174184
</div>
175185
</Modal.Body>

src/frontend/src/pages/AccountPage.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@
7575

7676
.modal-buttons {
7777
margin-top: 3rem;
78+
display: flex;
79+
80+
form {
81+
margin-right: .5rem;
82+
}
7883

7984
button {
8085
& + button {

0 commit comments

Comments
 (0)