Ability to Reject an authentication request instead of ignoring it (#1453)

* Reject instead of ignore

* lint
This commit is contained in:
Thibaut Sardan 2024-09-05 14:32:22 +02:00 committed by GitHub
parent 0c7ce85805
commit fd94590ece
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 18 additions and 12 deletions

View File

@ -524,8 +524,14 @@ export default class Extension {
return { list: remAuth };
}
private deleteAuthRequest (requestId: string): void {
return this.#state.deleteAuthRequest(requestId);
private rejectAuthRequest (id: string): void {
const queued = this.#state.getAuthRequest(id);
assert(queued, 'Unable to find request');
const { reject } = queued;
reject(new Error('Rejected'));
}
private updateCurrentTabs ({ urls }: RequestActiveTabsUrlUpdate) {
@ -549,8 +555,8 @@ export default class Extension {
case 'pri(authorize.remove)':
return this.removeAuthorization(request as string);
case 'pri(authorize.delete.request)':
return this.deleteAuthRequest(request as string);
case 'pri(authorize.reject)':
return this.rejectAuthRequest(request as string);
case 'pri(authorize.requests)':
return port && this.authorizeSubscribe(id, port);

View File

@ -96,7 +96,7 @@ export interface RequestSignatures {
'pri(authorize.list)': [null, ResponseAuthorizeList];
'pri(authorize.requests)': [RequestAuthorizeSubscribe, boolean, AuthorizeRequest[]];
'pri(authorize.remove)': [string, ResponseAuthorizeList];
'pri(authorize.delete.request)': [string, void];
'pri(authorize.reject)': [string, void];
'pri(authorize.update)': [RequestUpdateAuthorizedAccounts, void];
'pri(activeTabsUrl.update)': [RequestActiveTabsUrlUpdate, void];
'pri(connectedTabsUrl.get)': [null, ConnectedTabsUrlResponse];

View File

@ -6,7 +6,7 @@ import React, { useCallback } from 'react';
import { Trans } from 'react-i18next';
import { Button, Warning } from '../../components/index.js';
import { deleteAuthRequest } from '../../messaging.js';
import { rejectAuthRequest } from '../../messaging.js';
import { styled } from '../../styled.js';
interface Props {
@ -16,7 +16,7 @@ interface Props {
function NoAccount ({ authId, className }: Props): React.ReactElement<Props> {
const _onClick = useCallback(() => {
deleteAuthRequest(authId).catch(console.error);
rejectAuthRequest(authId).catch(console.error);
}, [authId]
);

View File

@ -7,7 +7,7 @@ import React, { useCallback, useContext, useEffect } from 'react';
import { AccountContext, ActionBar, ActionContext, Button, Link } from '../../components/index.js';
import { useTranslation } from '../../hooks/index.js';
import { approveAuthRequest, deleteAuthRequest } from '../../messaging.js';
import { approveAuthRequest, rejectAuthRequest } from '../../messaging.js';
import { AccountSelection } from '../../partials/index.js';
import { styled } from '../../styled.js';
import NoAccount from './NoAccount.js';
@ -44,7 +44,7 @@ function Request ({ authId, className, isFirst, request: { origin }, url }: Prop
const _onClose = useCallback(
(): void => {
deleteAuthRequest(authId)
rejectAuthRequest(authId)
.then(() => onAction())
.catch((error: Error) => console.error(error));
},
@ -77,7 +77,7 @@ function Request ({ authId, className, isFirst, request: { origin }, url }: Prop
isDanger
onClick={_onClose}
>
{t('Ask again later')}
{t('Reject')}
</Link>
</ActionBar>
</div>

View File

@ -220,8 +220,8 @@ export async function updateAuthorization (authorizedAccounts: string[], url: st
return sendMessage('pri(authorize.update)', { authorizedAccounts, url });
}
export async function deleteAuthRequest (requestId: string): Promise<void> {
return sendMessage('pri(authorize.delete.request)', requestId);
export async function rejectAuthRequest (requestId: string): Promise<void> {
return sendMessage('pri(authorize.reject)', requestId);
}
export async function subscribeMetadataRequests (cb: (accounts: MetadataRequest[]) => void): Promise<boolean> {