Allow account deletion from the user agreement page

This commit is contained in:
ErickSkrauch 2020-08-01 01:40:11 +03:00
parent 7eeeb7cc61
commit 60e892d993
No known key found for this signature in database
GPG Key ID: 669339FCBB30EE0E
4 changed files with 25 additions and 6 deletions

View File

@ -78,7 +78,7 @@ export function authenticate(
sessionStorage.setItem(`stranger${newAccount.id}`, '1');
}
if (auth && auth.oauth && auth.oauth.clientId) {
if (auth?.oauth?.clientId) {
// if we authenticating during oauth, we disable account chooser
// because user probably has made his choise now
// this may happen, when user registers, logs in or uses account

View File

@ -7,6 +7,7 @@ import Body from './AcceptRulesBody';
const messages = defineMessages({
title: 'User Agreement',
declineAndLogout: 'Decline and logout',
deleteAccount: 'Delete account',
});
export default factory({
@ -17,7 +18,13 @@ export default factory({
autoFocus: true,
children: <Message key="accept" defaultMessage="Accept" />,
},
links: {
label: messages.declineAndLogout,
},
links: [
{
label: messages.declineAndLogout,
},
{
label: messages.deleteAccount,
payload: { deleteAccount: true },
},
],
});

View File

@ -83,7 +83,13 @@ describe('AcceptRulesState', () => {
it('should logout', () => {
expectRun(mock, 'logout');
state.reject(context);
state.reject(context, {});
});
it('should navigate to the account deletion page', () => {
expectNavigate(mock, '/profile/delete');
state.reject(context, { deleteAccount: true });
});
});
});

View File

@ -22,7 +22,13 @@ export default class AcceptRulesState extends AbstractState {
.catch((err = {}) => err.errors || logger.warn('Error accepting rules', err));
}
reject(context: AuthContext): void {
reject(context: AuthContext, payload: Record<string, any>): void {
if (payload.deleteAccount) {
context.navigate('/profile/delete');
return;
}
context.run('logout');
}
}