@mastra/auth-studio 1.3.5 → 1.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_types/@internal_auth/dist/ee/interfaces/permissions.generated.d.ts +5 -1
- package/dist/index.cjs +35 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -9
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -158,6 +158,8 @@ export declare const PERMISSION_PATTERNS: {
|
|
|
158
158
|
readonly 'datasets:write': 'datasets:write';
|
|
159
159
|
/** View embedders */
|
|
160
160
|
readonly 'embedders:read': 'embedders:read';
|
|
161
|
+
/** Delete experiments */
|
|
162
|
+
readonly 'experiments:delete': 'experiments:delete';
|
|
161
163
|
/** View experiments */
|
|
162
164
|
readonly 'experiments:read': 'experiments:read';
|
|
163
165
|
/** View infrastructure */
|
|
@@ -311,7 +313,7 @@ export type PermissionPattern = keyof typeof PERMISSION_PATTERNS;
|
|
|
311
313
|
/**
|
|
312
314
|
* All valid resource:action permission combinations (excludes wildcards).
|
|
313
315
|
*/
|
|
314
|
-
export declare const PERMISSIONS: readonly ['a2a:read', 'a2a:write', 'agent-builder:execute', 'agent-builder:read', 'agent-builder:write', 'agent-controller:execute', 'agent-controller:read', 'agents:create', 'agents:delete', 'agents:execute', 'agents:read', 'agents:write', 'auth:read', 'background-tasks:read', 'channels:read', 'channels:write', 'datasets:delete', 'datasets:execute', 'datasets:read', 'datasets:write', 'embedders:read', 'experiments:read', 'infrastructure:read', 'logs:read', 'mcp:execute', 'mcp:read', 'mcp:write', 'memory:delete', 'memory:execute', 'memory:read', 'memory:write', 'observability:read', 'observability:write', 'processor-providers:read', 'processors:execute', 'processors:read', 'schedules:delete', 'schedules:execute', 'schedules:read', 'schedules:write', 'scores:read', 'scores:write', 'stored-agents:delete', 'stored-agents:publish', 'stored-agents:read', 'stored-agents:write', 'stored-mcp-clients:delete', 'stored-mcp-clients:publish', 'stored-mcp-clients:read', 'stored-mcp-clients:write', 'stored-prompt-blocks:delete', 'stored-prompt-blocks:publish', 'stored-prompt-blocks:read', 'stored-prompt-blocks:write', 'stored-scorers:delete', 'stored-scorers:publish', 'stored-scorers:read', 'stored-scorers:write', 'stored-skills:delete', 'stored-skills:publish', 'stored-skills:read', 'stored-skills:write', 'stored-workflows:read', 'stored-workflows:write', 'stored-workspaces:delete', 'stored-workspaces:read', 'stored-workspaces:write', 'system:read', 'tool-providers:delete', 'tool-providers:read', 'tool-providers:write', 'tools:execute', 'tools:read', 'vector:delete', 'vector:execute', 'vector:read', 'vector:write', 'vectors:read', 'workflows:delete', 'workflows:execute', 'workflows:read', 'workflows:write', 'workspaces:delete', 'workspaces:read', 'workspaces:write'];
|
|
316
|
+
export declare const PERMISSIONS: readonly ['a2a:read', 'a2a:write', 'agent-builder:execute', 'agent-builder:read', 'agent-builder:write', 'agent-controller:execute', 'agent-controller:read', 'agents:create', 'agents:delete', 'agents:execute', 'agents:read', 'agents:write', 'auth:read', 'background-tasks:read', 'channels:read', 'channels:write', 'datasets:delete', 'datasets:execute', 'datasets:read', 'datasets:write', 'embedders:read', 'experiments:delete', 'experiments:read', 'infrastructure:read', 'logs:read', 'mcp:execute', 'mcp:read', 'mcp:write', 'memory:delete', 'memory:execute', 'memory:read', 'memory:write', 'observability:read', 'observability:write', 'processor-providers:read', 'processors:execute', 'processors:read', 'schedules:delete', 'schedules:execute', 'schedules:read', 'schedules:write', 'scores:read', 'scores:write', 'stored-agents:delete', 'stored-agents:publish', 'stored-agents:read', 'stored-agents:write', 'stored-mcp-clients:delete', 'stored-mcp-clients:publish', 'stored-mcp-clients:read', 'stored-mcp-clients:write', 'stored-prompt-blocks:delete', 'stored-prompt-blocks:publish', 'stored-prompt-blocks:read', 'stored-prompt-blocks:write', 'stored-scorers:delete', 'stored-scorers:publish', 'stored-scorers:read', 'stored-scorers:write', 'stored-skills:delete', 'stored-skills:publish', 'stored-skills:read', 'stored-skills:write', 'stored-workflows:read', 'stored-workflows:write', 'stored-workspaces:delete', 'stored-workspaces:read', 'stored-workspaces:write', 'system:read', 'tool-providers:delete', 'tool-providers:read', 'tool-providers:write', 'tools:execute', 'tools:read', 'vector:delete', 'vector:execute', 'vector:read', 'vector:write', 'vectors:read', 'workflows:delete', 'workflows:execute', 'workflows:read', 'workflows:write', 'workspaces:delete', 'workspaces:read', 'workspaces:write'];
|
|
315
317
|
/**
|
|
316
318
|
* Specific permission type (e.g., 'agents:read', 'workflows:execute').
|
|
317
319
|
*/
|
|
@@ -365,6 +367,8 @@ export declare const MastraFGAPermissions: {
|
|
|
365
367
|
readonly DATASETS_WRITE: 'datasets:write';
|
|
366
368
|
/** View embedders */
|
|
367
369
|
readonly EMBEDDERS_READ: 'embedders:read';
|
|
370
|
+
/** Delete experiments */
|
|
371
|
+
readonly EXPERIMENTS_DELETE: 'experiments:delete';
|
|
368
372
|
/** View experiments */
|
|
369
373
|
readonly EXPERIMENTS_READ: 'experiments:read';
|
|
370
374
|
/** View infrastructure */
|
package/dist/index.cjs
CHANGED
|
@@ -312,7 +312,7 @@ var MastraAuthProvider = class extends MastraBase {
|
|
|
312
312
|
}
|
|
313
313
|
};
|
|
314
314
|
//#endregion
|
|
315
|
-
//#region ../../packages/_internals/auth/dist/ee-
|
|
315
|
+
//#region ../../packages/_internals/auth/dist/ee-B4JkfaNy.js
|
|
316
316
|
/**
|
|
317
317
|
* FGA enforcement utility for checking fine-grained authorization.
|
|
318
318
|
*
|
|
@@ -329,6 +329,7 @@ const RESOURCE_EXPANSIONS = { stored: [
|
|
|
329
329
|
"stored-prompt-blocks",
|
|
330
330
|
"stored-scorers",
|
|
331
331
|
"stored-skills",
|
|
332
|
+
"stored-workflows",
|
|
332
333
|
"stored-workspaces"
|
|
333
334
|
] };
|
|
334
335
|
/**
|
|
@@ -758,16 +759,38 @@ var MastraAuthStudio = class extends MastraAuthProvider {
|
|
|
758
759
|
const sessionCookie = this.userSessionCookies.get(userId);
|
|
759
760
|
if (!sessionCookie) return false;
|
|
760
761
|
try {
|
|
761
|
-
|
|
762
|
-
if (me?.organizationId === organizationId) return isAdminRole(me.role);
|
|
763
|
-
const res = await fetch(`${this.sharedApiUrl}/auth/orgs`, { headers: { Cookie: `${COOKIE_NAME}=${sessionCookie}` } });
|
|
764
|
-
if (!res.ok) return false;
|
|
765
|
-
const membership = (await res.json()).organizations?.find((o) => o.id === organizationId);
|
|
766
|
-
return isAdminRole(membership?.role ?? void 0);
|
|
762
|
+
return isAdminRole(await this.fetchOrganizationRole(sessionCookie, organizationId));
|
|
767
763
|
} catch {
|
|
768
764
|
return false;
|
|
769
765
|
}
|
|
770
766
|
}
|
|
767
|
+
async fetchOrganizationRole(sessionCookie, organizationId) {
|
|
768
|
+
const me = await this.fetchMe(sessionCookie);
|
|
769
|
+
if (me?.organizationId === organizationId) return me.role;
|
|
770
|
+
return this.fetchMembershipRole(sessionCookie, organizationId);
|
|
771
|
+
}
|
|
772
|
+
async fetchMembershipRole(sessionCookie, organizationId) {
|
|
773
|
+
const res = await fetch(`${this.sharedApiUrl}/auth/orgs`, {
|
|
774
|
+
headers: { Cookie: `${COOKIE_NAME}=${sessionCookie}` },
|
|
775
|
+
signal: AbortSignal.timeout(VERIFY_FETCH_TIMEOUT_MS)
|
|
776
|
+
});
|
|
777
|
+
if (!res.ok) return void 0;
|
|
778
|
+
return (await res.json()).organizations?.find((o) => o.id === organizationId)?.role ?? void 0;
|
|
779
|
+
}
|
|
780
|
+
async asPinnedOrganizationMember(user, sessionCookie) {
|
|
781
|
+
const pinnedOrganizationId = this.organizationId;
|
|
782
|
+
if (!pinnedOrganizationId) return user;
|
|
783
|
+
const sessionAlreadyOnPinnedOrganization = user.organizationId === pinnedOrganizationId;
|
|
784
|
+
const memberOfPinnedOrganization = user.memberOrgIds?.includes(pinnedOrganizationId) ?? false;
|
|
785
|
+
if (sessionAlreadyOnPinnedOrganization || !memberOfPinnedOrganization) return user;
|
|
786
|
+
const roleInPinnedOrganization = await this.fetchMembershipRole(sessionCookie, pinnedOrganizationId);
|
|
787
|
+
return {
|
|
788
|
+
...user,
|
|
789
|
+
organizationId: pinnedOrganizationId,
|
|
790
|
+
role: roleInPinnedOrganization,
|
|
791
|
+
permissions: void 0
|
|
792
|
+
};
|
|
793
|
+
}
|
|
771
794
|
/**
|
|
772
795
|
* Record the sealed session cookie last seen for a user so
|
|
773
796
|
* {@link ensureOrganization} / {@link isOrganizationAdmin} can act on their
|
|
@@ -848,7 +871,7 @@ var MastraAuthStudio = class extends MastraAuthProvider {
|
|
|
848
871
|
}
|
|
849
872
|
const data = await res.json();
|
|
850
873
|
this.rememberUserSession(data.user.id, sessionCookie);
|
|
851
|
-
const
|
|
874
|
+
const sessionUser = {
|
|
852
875
|
id: data.user.id,
|
|
853
876
|
email: data.user.email,
|
|
854
877
|
name: [data.user.firstName, data.user.lastName].filter(Boolean).join(" ") || void 0,
|
|
@@ -858,6 +881,7 @@ var MastraAuthStudio = class extends MastraAuthProvider {
|
|
|
858
881
|
permissions: data.permissions,
|
|
859
882
|
memberOrgIds: data.memberOrgIds
|
|
860
883
|
};
|
|
884
|
+
const user = await this.asPinnedOrganizationMember(sessionUser, sessionCookie);
|
|
861
885
|
if (user.organizationId) this.cacheVerification(cacheKey, user);
|
|
862
886
|
return user;
|
|
863
887
|
} catch (error) {
|
|
@@ -880,8 +904,10 @@ var MastraAuthStudio = class extends MastraAuthProvider {
|
|
|
880
904
|
const cached = this.getCachedVerification(cacheKey);
|
|
881
905
|
if (cached) return cached;
|
|
882
906
|
try {
|
|
907
|
+
const headers = { Authorization: `Bearer ${token}` };
|
|
908
|
+
if (this.organizationId) headers["x-organization-id"] = this.organizationId;
|
|
883
909
|
const res = await fetch(`${this.sharedApiUrl}/auth/verify`, {
|
|
884
|
-
headers
|
|
910
|
+
headers,
|
|
885
911
|
signal: AbortSignal.timeout(VERIFY_FETCH_TIMEOUT_MS)
|
|
886
912
|
});
|
|
887
913
|
if (!res.ok) {
|