Page MenuHomePhabricator

D5823.id19312.diff
No OneTemporary

D5823.id19312.diff

diff --git a/keyserver/src/endpoints.js b/keyserver/src/endpoints.js
--- a/keyserver/src/endpoints.js
+++ b/keyserver/src/endpoints.js
@@ -1,5 +1,6 @@
// @flow
+import { policyTypes } from 'lib/facts/policies.js';
import type { Endpoint } from 'lib/types/endpoints';
import {
@@ -56,48 +57,173 @@
import { codeVerificationResponder } from './responders/verification-responders';
import { uploadDeletionResponder } from './uploads/uploads';
+const baseLegalPolicies = [policyTypes.tosAndPrivacyPolicy];
+
const jsonEndpoints: { [id: Endpoint]: JSONResponder } = {
- create_account: accountCreationResponder,
- create_entry: entryCreationResponder,
- create_error_report: reportCreationResponder,
- create_message_report: messageReportCreationResponder,
- create_multimedia_message: multimediaMessageCreationResponder,
- create_report: reportCreationResponder,
- create_reports: reportMultiCreationResponder,
- create_text_message: textMessageCreationResponder,
- create_thread: threadCreationResponder,
- delete_account: accountDeletionResponder,
- delete_entry: entryDeletionResponder,
- delete_thread: threadDeletionResponder,
- delete_upload: uploadDeletionResponder,
- fetch_entries: entryFetchResponder,
- fetch_entry_revisions: entryRevisionFetchResponder,
- fetch_error_report_infos: errorReportFetchInfosResponder,
- fetch_messages: messageFetchResponder,
- get_session_public_keys: getSessionPublicKeysResponder,
- join_thread: threadJoinResponder,
- leave_thread: threadLeaveResponder,
- log_in: logInResponder,
- log_out: logOutResponder,
- policy_acknowledgment: policyAcknowledgmentResponder,
- remove_members: memberRemovalResponder,
- restore_entry: entryRestorationResponder,
- search_users: userSearchResponder,
- send_password_reset_email: sendPasswordResetEmailResponder,
- send_verification_email: sendVerificationEmailResponder,
- set_thread_unread_status: threadSetUnreadStatusResponder,
- update_account: passwordUpdateResponder,
- update_activity: updateActivityResponder,
- update_calendar_query: calendarQueryUpdateResponder,
- update_user_settings: updateUserSettingsResponder,
- update_device_token: deviceTokenUpdateResponder,
- update_entry: entryUpdateResponder,
- update_password: oldPasswordUpdateResponder,
- update_relationships: updateRelationshipsResponder,
- update_role: roleUpdateResponder,
- update_thread: threadUpdateResponder,
- update_user_subscription: userSubscriptionUpdateResponder,
- verify_code: codeVerificationResponder,
+ create_account: {
+ responder: accountCreationResponder,
+ requiredPolicies: [],
+ },
+ create_entry: {
+ responder: entryCreationResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ create_error_report: {
+ responder: reportCreationResponder,
+ requiredPolicies: [],
+ },
+ create_message_report: {
+ responder: messageReportCreationResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ create_multimedia_message: {
+ responder: multimediaMessageCreationResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ create_report: {
+ responder: reportCreationResponder,
+ requiredPolicies: [],
+ },
+ create_reports: {
+ responder: reportMultiCreationResponder,
+ requiredPolicies: [],
+ },
+ create_text_message: {
+ responder: textMessageCreationResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ create_thread: {
+ responder: threadCreationResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ delete_account: {
+ responder: accountDeletionResponder,
+ requiredPolicies: [],
+ },
+ delete_entry: {
+ responder: entryDeletionResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ delete_thread: {
+ responder: threadDeletionResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ delete_upload: {
+ responder: uploadDeletionResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ fetch_entries: {
+ responder: entryFetchResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ fetch_entry_revisions: {
+ responder: entryRevisionFetchResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ fetch_error_report_infos: {
+ responder: errorReportFetchInfosResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ fetch_messages: {
+ responder: messageFetchResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ get_session_public_keys: {
+ responder: getSessionPublicKeysResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ join_thread: {
+ responder: threadJoinResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ leave_thread: {
+ responder: threadLeaveResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ log_in: {
+ responder: logInResponder,
+ requiredPolicies: [],
+ },
+ log_out: {
+ responder: logOutResponder,
+ requiredPolicies: [],
+ },
+ policy_acknowledgment: {
+ responder: policyAcknowledgmentResponder,
+ requiredPolicies: [],
+ },
+ remove_members: {
+ responder: memberRemovalResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ restore_entry: {
+ responder: entryRestorationResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ search_users: {
+ responder: userSearchResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ send_password_reset_email: {
+ responder: sendPasswordResetEmailResponder,
+ requiredPolicies: [],
+ },
+ send_verification_email: {
+ responder: sendVerificationEmailResponder,
+ requiredPolicies: [],
+ },
+ set_thread_unread_status: {
+ responder: threadSetUnreadStatusResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ update_account: {
+ responder: passwordUpdateResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ update_activity: {
+ responder: updateActivityResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ update_calendar_query: {
+ responder: calendarQueryUpdateResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ update_user_settings: {
+ responder: updateUserSettingsResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ update_device_token: {
+ responder: deviceTokenUpdateResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ update_entry: {
+ responder: entryUpdateResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ update_password: {
+ responder: oldPasswordUpdateResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ update_relationships: {
+ responder: updateRelationshipsResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ update_role: {
+ responder: roleUpdateResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ update_thread: {
+ responder: threadUpdateResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ update_user_subscription: {
+ responder: userSubscriptionUpdateResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
+ verify_code: {
+ responder: codeVerificationResponder,
+ requiredPolicies: baseLegalPolicies,
+ },
};
export { jsonEndpoints };
diff --git a/keyserver/src/responders/handlers.js b/keyserver/src/responders/handlers.js
--- a/keyserver/src/responders/handlers.js
+++ b/keyserver/src/responders/handlers.js
@@ -5,6 +5,7 @@
import { ServerError } from 'lib/utils/errors';
import { deleteCookie } from '../deleters/cookie-deleters';
+import type { PolicyType } from '../lib/facts/policies.js';
import {
fetchViewerForJSONRequest,
addCookieToJSONResponse,
@@ -16,7 +17,11 @@
import { type AppURLFacts, getAppURLFactsFromRequestURL } from '../utils/urls';
import { getMessageForException } from './utils';
-export type JSONResponder = (viewer: Viewer, input: any) => Promise<*>;
+export type JSONResponder = {
+ responder: (viewer: Viewer, input: any) => Promise<*>,
+ requiredPolicies: $ReadOnlyArray<PolicyType>,
+};
+
export type DownloadResponder = (
viewer: Viewer,
req: $Request,
@@ -37,7 +42,7 @@
}
const { input } = req.body;
viewer = await fetchViewerForJSONRequest(req);
- const responderResult = await responder(viewer, input);
+ const responderResult = await responder.responder(viewer, input);
if (res.headersSent) {
return;
}
diff --git a/keyserver/src/socket/socket.js b/keyserver/src/socket/socket.js
--- a/keyserver/src/socket/socket.js
+++ b/keyserver/src/socket/socket.js
@@ -628,7 +628,7 @@
const { viewer } = this;
invariant(viewer, 'should be set');
const responder = jsonEndpoints[message.payload.endpoint];
- const response = await responder(viewer, message.payload.input);
+ const response = await responder.responder(viewer, message.payload.input);
return [
{
type: serverSocketMessageTypes.API_RESPONSE,

File Metadata

Mime Type
text/plain
Expires
Thu, Dec 19, 4:14 PM (21 h, 27 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2677957
Default Alt Text
D5823.id19312.diff (8 KB)

Event Timeline