mirror of
https://github.com/outline/outline.git
synced 2026-06-13 03:14:59 +03:00
b4cbb39f17
* feat: Request document access Allow users without permission to a document to request access. Notifies document managers via in-app notification and email; managers can grant or dismiss the request. - Adds AccessRequest model, migration, policy, presenter - Adds accessRequests.create/info/approve/dismiss endpoints - Adds DocumentAccessRequestNotificationsTask + email - Adds Error403 request flow with loading state and pending indicator - Auto-opens notifications popover via ?notifications=true (used in email) - Adds SplitButton primitive for permission selection in notifications - Refactors useConsumeQueryParam hook * refactor * fix: Make approve/dismiss idempotent on access requests Return success when the access request has already been dismissed, or when the user already has document membership at approve time, instead of throwing 400. Avoids racy double-clicks on notification actions producing user-visible errors. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Minor fixes --------- Co-authored-by: Tom Moor <tom@getoutline.com> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
78 lines
2.4 KiB
TypeScript
78 lines
2.4 KiB
TypeScript
import presentApiKey from "./apiKey";
|
|
import presentAttachment from "./attachment";
|
|
import presentAuthenticationProvider from "./authenticationProvider";
|
|
import presentAvailableTeam from "./availableTeam";
|
|
import presentCollection from "./collection";
|
|
import presentComment from "./comment";
|
|
import presentDocument, { presentDocuments } from "./document";
|
|
import presentDocumentInsight from "./documentInsight";
|
|
import presentEvent from "./event";
|
|
import presentExternalGroup from "./externalGroup";
|
|
import presentFileOperation from "./fileOperation";
|
|
import presentGroup from "./group";
|
|
import presentGroupMembership from "./groupMembership";
|
|
import presentGroupUser from "./groupUser";
|
|
import presentImport from "./import";
|
|
import presentIntegration from "./integration";
|
|
import presentMembership from "./membership";
|
|
import presentNavigationNode from "./navigationNode";
|
|
import presentOAuthClient, { presentPublishedOAuthClient } from "./oauthClient";
|
|
import presentPin from "./pin";
|
|
import presentPolicies from "./policy";
|
|
import presentProviderConfig from "./providerConfig";
|
|
import presentPublicTeam from "./publicTeam";
|
|
import presentReaction from "./reaction";
|
|
import presentRelationship from "./relationship";
|
|
import presentRevision from "./revision";
|
|
import presentSearchQuery from "./searchQuery";
|
|
import presentShare from "./share";
|
|
import presentStar from "./star";
|
|
import presentSubscription from "./subscription";
|
|
import presentTeam from "./team";
|
|
import presentTemplate from "./template";
|
|
import presentUser from "./user";
|
|
import presentView from "./view";
|
|
import presentEmoji from "./emoji";
|
|
import presentAccessRequest from "./accessRequest";
|
|
|
|
export {
|
|
presentApiKey,
|
|
presentAttachment,
|
|
presentAuthenticationProvider,
|
|
presentAvailableTeam,
|
|
presentCollection,
|
|
presentComment,
|
|
presentDocument,
|
|
presentDocuments,
|
|
presentDocumentInsight,
|
|
presentEvent,
|
|
presentExternalGroup,
|
|
presentFileOperation,
|
|
presentGroup,
|
|
presentGroupUser,
|
|
presentGroupMembership,
|
|
presentImport,
|
|
presentIntegration,
|
|
presentMembership,
|
|
presentNavigationNode,
|
|
presentOAuthClient,
|
|
presentPublishedOAuthClient,
|
|
presentPublicTeam,
|
|
presentPin,
|
|
presentPolicies,
|
|
presentProviderConfig,
|
|
presentReaction,
|
|
presentRelationship,
|
|
presentRevision,
|
|
presentSearchQuery,
|
|
presentShare,
|
|
presentStar,
|
|
presentSubscription,
|
|
presentTeam,
|
|
presentTemplate,
|
|
presentUser,
|
|
presentView,
|
|
presentEmoji,
|
|
presentAccessRequest,
|
|
};
|