@jazzmind/busibox-app 3.0.20 → 3.0.22
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/components/UserDropdown.d.ts.map +1 -1
- package/dist/components/UserDropdown.js +19 -7
- package/dist/components/UserDropdown.js.map +1 -1
- package/dist/lib/data/index.d.ts +1 -1
- package/dist/lib/data/index.d.ts.map +1 -1
- package/dist/lib/data/index.js +1 -1
- package/dist/lib/data/index.js.map +1 -1
- package/dist/lib/data/sharing.d.ts +13 -2
- package/dist/lib/data/sharing.d.ts.map +1 -1
- package/dist/lib/data/sharing.js +53 -14
- package/dist/lib/data/sharing.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserDropdown.d.ts","sourceRoot":"","sources":["../../src/components/UserDropdown.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGrC,MAAM,MAAM,oBAAoB,GAAG;IACjC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gBAAgB;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,qBAAqB;IACrB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACzC,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;
|
|
1
|
+
{"version":3,"file":"UserDropdown.d.ts","sourceRoot":"","sources":["../../src/components/UserDropdown.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGrC,MAAM,MAAM,oBAAoB,GAAG;IACjC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gBAAgB;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,qBAAqB;IACrB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACzC,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAqCF,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,QAAQ,EACR,WAAwF,EACxF,YAAiB,EACjB,aAAa,EACb,eAAyB,EACzB,aAA0C,GAC3C,EAAE,iBAAiB,2CAqOnB"}
|
|
@@ -26,17 +26,25 @@ function getDisplayName(user) {
|
|
|
26
26
|
[user.firstName, user.lastName].filter(Boolean).join(' ').trim() ||
|
|
27
27
|
user.email.split('@')[0]);
|
|
28
28
|
}
|
|
29
|
+
function isTeamRole(role) {
|
|
30
|
+
return role.startsWith('app:');
|
|
31
|
+
}
|
|
32
|
+
function getStandardRoles(roles) {
|
|
33
|
+
return (roles || []).filter((r) => !isTeamRole(r));
|
|
34
|
+
}
|
|
35
|
+
function getTeamRoles(roles) {
|
|
36
|
+
return (roles || []).filter(isTeamRole);
|
|
37
|
+
}
|
|
29
38
|
/**
|
|
30
|
-
* Get display role from user roles array
|
|
39
|
+
* Get display role from user roles array (excludes team roles like app:*:*)
|
|
31
40
|
*/
|
|
32
41
|
function getRoleDisplay(roles) {
|
|
33
|
-
|
|
42
|
+
const standard = getStandardRoles(roles);
|
|
43
|
+
if (standard.length === 0)
|
|
34
44
|
return 'User';
|
|
35
|
-
|
|
36
|
-
if (roles.includes('admin'))
|
|
45
|
+
if (standard.some((r) => r.toLowerCase() === 'admin'))
|
|
37
46
|
return 'Admin';
|
|
38
|
-
|
|
39
|
-
return roles[0].charAt(0).toUpperCase() + roles[0].slice(1);
|
|
47
|
+
return standard[0].charAt(0).toUpperCase() + standard[0].slice(1);
|
|
40
48
|
}
|
|
41
49
|
export function UserDropdown({ user, onLogout, accountLink = `${process.env.NEXT_PUBLIC_PORTAL_URL || 'http://localhost:3000'}/account`, menuSections = [], avatarBgColor, avatarTextColor = 'white', buttonHoverBg = 'rgba(255, 255, 255, 0.1)', }) {
|
|
42
50
|
const [dropdownOpen, setDropdownOpen] = useState(false);
|
|
@@ -75,7 +83,11 @@ export function UserDropdown({ user, onLogout, accountLink = `${process.env.NEXT
|
|
|
75
83
|
if (!dropdownOpen) {
|
|
76
84
|
e.currentTarget.style.backgroundColor = 'transparent';
|
|
77
85
|
}
|
|
78
|
-
}, children: [_jsx(UserAvatar, { size: "md", name: displayName, email: user.email, avatarUrl: user.avatarUrl, favoriteColor: user.favoriteColor, className: "shadow-md" }), _jsxs("div", { className: "hidden sm:block text-left", children: [_jsx("div", { className: "text-sm font-medium text-white", children: displayName }), _jsx("div", { className: "text-xs text-white/70", children: roleDisplay })] }), _jsx("svg", { className: `w-4 h-4 text-white/70 transition-transform ${dropdownOpen ? 'rotate-180' : ''}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })] }), dropdownOpen && (_jsxs("div", { className: "absolute right-0 mt-2 w-64 bg-white rounded-lg shadow-xl py-2 border border-gray-200 z-50", children: [_jsxs("div", { className: "px-4 py-3 border-b border-gray-100", children: [_jsx("div", { className: "text-sm font-semibold text-gray-900", children: user.email }), _jsxs("div", { className: "text-xs text-gray-500 mt-1 space-y-1", children: [_jsxs("div", { children: ["Status:", ' ', _jsx("span", { className: `font-medium ${user.status === 'ACTIVE' ? 'text-green-600' : 'text-gray-600'}`, children: user.status })] }), user.roles && user.roles.length > 0 && (
|
|
86
|
+
}, children: [_jsx(UserAvatar, { size: "md", name: displayName, email: user.email, avatarUrl: user.avatarUrl, favoriteColor: user.favoriteColor, className: "shadow-md" }), _jsxs("div", { className: "hidden sm:block text-left", children: [_jsx("div", { className: "text-sm font-medium text-white", children: displayName }), _jsx("div", { className: "text-xs text-white/70", children: roleDisplay })] }), _jsx("svg", { className: `w-4 h-4 text-white/70 transition-transform ${dropdownOpen ? 'rotate-180' : ''}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })] }), dropdownOpen && (_jsxs("div", { className: "absolute right-0 mt-2 w-64 bg-white rounded-lg shadow-xl py-2 border border-gray-200 z-50", children: [_jsxs("div", { className: "px-4 py-3 border-b border-gray-100", children: [_jsx("div", { className: "text-sm font-semibold text-gray-900", children: user.email }), _jsxs("div", { className: "text-xs text-gray-500 mt-1 space-y-1", children: [_jsxs("div", { children: ["Status:", ' ', _jsx("span", { className: `font-medium ${user.status === 'ACTIVE' ? 'text-green-600' : 'text-gray-600'}`, children: user.status })] }), user.roles && user.roles.length > 0 && (() => {
|
|
87
|
+
const standard = getStandardRoles(user.roles);
|
|
88
|
+
const team = getTeamRoles(user.roles);
|
|
89
|
+
return (_jsxs("div", { title: `All roles: ${user.roles.join(', ')}`, children: ["Roles:", ' ', _jsx("span", { className: "font-medium text-gray-700", children: standard.length > 0 ? standard.join(', ') : 'User' }), team.length > 0 && (_jsxs("span", { className: "text-gray-400 ml-1 cursor-help", title: `Team roles: ${team.join(', ')}`, children: ["(+", team.length, " team)"] }))] }));
|
|
90
|
+
})()] })] }), _jsxs("div", { className: "py-2", children: [_jsxs("a", { href: accountLink, onClick: () => setDropdownOpen(false), className: "flex items-center gap-3 px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 transition-colors", children: [_jsx("svg", { className: "w-5 h-5 text-gray-400", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z" }) }), "Account Settings"] }), menuSections.map((section, sectionIndex) => (_jsxs("div", { children: [_jsx("div", { className: "border-t border-gray-100 my-2" }), section.title && (_jsx("div", { className: "px-4 py-2 text-xs font-semibold text-gray-500 uppercase tracking-wider", children: section.title })), section.items.map((item, itemIndex) => {
|
|
79
91
|
if (item.onClick) {
|
|
80
92
|
return (_jsxs("button", { onClick: () => handleMenuItemClick(item), className: "flex items-center gap-3 px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 transition-colors w-full text-left", children: [item.icon || (_jsx("svg", { className: "w-5 h-5 text-gray-400", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }) })), item.label] }, itemIndex));
|
|
81
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserDropdown.js","sourceRoot":"","sources":["../../src/components/UserDropdown.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAqCjD;;GAEG;AACH,SAAS,cAAc,CAAC,IAAU;IAChC,OAAO,CACL,IAAI,CAAC,WAAW;QAChB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;QAChE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACzB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAgB;IACtC,
|
|
1
|
+
{"version":3,"file":"UserDropdown.js","sourceRoot":"","sources":["../../src/components/UserDropdown.tsx"],"names":[],"mappings":"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"}
|
package/dist/lib/data/index.d.ts
CHANGED
|
@@ -8,6 +8,6 @@ export type { EmbeddingsClientOptions, } from './embeddings';
|
|
|
8
8
|
export { setEmbeddingSessionJwt, clearEmbeddingSessionJwt, generateEmbeddingForUser, generateEmbeddingsForUser, } from './embeddings-session';
|
|
9
9
|
export { generateId, getNow, cleanRecord, extractRoleIdsFromToken, listDataDocuments, createDataDocument, getDocumentByName, getDocumentDetails, updateDocumentMetadata, getDocumentRoles, updateDocumentRoles, ensureSchemaAndMetadata, queryRecords, insertRecords, updateRecords, deleteRecords, ensureDocuments, } from './documents';
|
|
10
10
|
export type { DocumentInfo, DataDocument, QueryOptions, QueryFilter, QueryCondition, DataDocumentsOptions, DocumentRoleAssignment, DocumentRolesResponse, } from './documents';
|
|
11
|
-
export { ensureTeamRole, verifyRoleExists, addRoleToDocuments, removeRoleFromDocuments, addRoleToLibrary, listTeamMembers, addTeamMember, removeTeamMember, searchUsers, resolveVisibilityMode, setDocumentVisibility, getSSOTokenFromRequest, } from './sharing';
|
|
11
|
+
export { ensureTeamRole, verifyRoleExists, addRoleToDocuments, removeRoleFromDocuments, addRoleToLibrary, listTeamMembers, addTeamMember, removeTeamMember, searchUsers, resolveVisibilityMode, normalizeVisibilityMode, setDocumentVisibility, getSSOTokenFromRequest, } from './sharing';
|
|
12
12
|
export type { VisibilityMode, TeamMember, TeamRole, SearchUser, } from './sharing';
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/data/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,UAAU,EACV,MAAM,EACN,WAAW,EACX,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAEnB,YAAY,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,UAAU,GACX,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/data/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,UAAU,EACV,MAAM,EACN,WAAW,EACX,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAEnB,YAAY,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,UAAU,GACX,MAAM,WAAW,CAAC"}
|
package/dist/lib/data/index.js
CHANGED
|
@@ -8,5 +8,5 @@ export { setEmbeddingSessionJwt, clearEmbeddingSessionJwt, generateEmbeddingForU
|
|
|
8
8
|
// Data documents (generic CRUD for data-api)
|
|
9
9
|
export { generateId, getNow, cleanRecord, extractRoleIdsFromToken, listDataDocuments, createDataDocument, getDocumentByName, getDocumentDetails, updateDocumentMetadata, getDocumentRoles, updateDocumentRoles, ensureSchemaAndMetadata, queryRecords, insertRecords, updateRecords, deleteRecords, ensureDocuments, } from './documents';
|
|
10
10
|
// Document sharing (team roles, visibility, member management)
|
|
11
|
-
export { ensureTeamRole, verifyRoleExists, addRoleToDocuments, removeRoleFromDocuments, addRoleToLibrary, listTeamMembers, addTeamMember, removeTeamMember, searchUsers, resolveVisibilityMode, setDocumentVisibility, getSSOTokenFromRequest, } from './sharing';
|
|
11
|
+
export { ensureTeamRole, verifyRoleExists, addRoleToDocuments, removeRoleFromDocuments, addRoleToLibrary, listTeamMembers, addTeamMember, removeTeamMember, searchUsers, resolveVisibilityMode, normalizeVisibilityMode, setDocumentVisibility, getSSOTokenFromRequest, } from './sharing';
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/data/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAOlB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAMtB,mCAAmC;AACnC,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,6CAA6C;AAC7C,OAAO,EACL,UAAU,EACV,MAAM,EACN,WAAW,EACX,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC;AAarB,+DAA+D;AAC/D,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/data/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAOlB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAMtB,mCAAmC;AACnC,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,6CAA6C;AAC7C,OAAO,EACL,UAAU,EACV,MAAM,EACN,WAAW,EACX,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC;AAarB,+DAA+D;AAC/D,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,WAAW,CAAC"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* document/library role management.
|
|
13
13
|
*
|
|
14
14
|
* Visibility modes:
|
|
15
|
-
* - `private` → `visibility: 'personal'` — only the document owner
|
|
15
|
+
* - `private` (or `personal`) → `visibility: 'personal'` — only the document owner
|
|
16
16
|
* - `shared` → `visibility: 'authenticated'` — any app user
|
|
17
17
|
* - `team` → `visibility: 'shared'` with role(s) — only users with the role
|
|
18
18
|
*
|
|
@@ -37,7 +37,12 @@
|
|
|
37
37
|
* await addRoleToLibrary(dataToken, role.roleId, libraryId);
|
|
38
38
|
* ```
|
|
39
39
|
*/
|
|
40
|
-
export type VisibilityMode = 'private' | 'shared' | 'team';
|
|
40
|
+
export type VisibilityMode = 'private' | 'personal' | 'shared' | 'team';
|
|
41
|
+
/**
|
|
42
|
+
* Normalize a VisibilityMode so that `'personal'` is treated as `'private'`.
|
|
43
|
+
* Data-api uses `'personal'` internally, but the user-facing mode is `'private'`.
|
|
44
|
+
*/
|
|
45
|
+
export declare function normalizeVisibilityMode(mode: VisibilityMode): 'private' | 'shared' | 'team';
|
|
41
46
|
export interface TeamMember {
|
|
42
47
|
user_id: string;
|
|
43
48
|
email: string;
|
|
@@ -69,10 +74,16 @@ export interface SearchUser {
|
|
|
69
74
|
* it is returned instead of creating a duplicate.
|
|
70
75
|
*
|
|
71
76
|
* The caller is automatically assigned to the role on creation.
|
|
77
|
+
*
|
|
78
|
+
* When `appResourceId` is provided, the role is also bound to the app
|
|
79
|
+
* in authz so that it appears in app-scoped token exchanges. This is
|
|
80
|
+
* required for team roles to be included in the JWT when users launch
|
|
81
|
+
* the app from the portal.
|
|
72
82
|
*/
|
|
73
83
|
export declare function ensureTeamRole(ssoToken: string, appName: string, entityName: string, options?: {
|
|
74
84
|
description?: string;
|
|
75
85
|
scopes?: string[];
|
|
86
|
+
appResourceId?: string;
|
|
76
87
|
}): Promise<TeamRole>;
|
|
77
88
|
/**
|
|
78
89
|
* Verify a role still exists in authz. Returns `true` if it does.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharing.d.ts","sourceRoot":"","sources":["../../../src/lib/data/sharing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAkBH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"sharing.d.ts","sourceRoot":"","sources":["../../../src/lib/data/sharing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAkBH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExE;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAE3F;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E,OAAO,CAAC,QAAQ,CAAC,CAiEnB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAKlB;AAMD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAMD;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,EAAE,CAAC,CAYvB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBnE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAUf;AAMD;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,EAAE,CAAC,CAevB;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACrD,cAAc,CAUhB;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EAAE,EACrB,IAAI,EAAE,cAAc,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC,CAmCf;AAMD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE;IAAE,OAAO,EAAE;QAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAAE,GAC7E,MAAM,GAAG,IAAI,CAEf"}
|
package/dist/lib/data/sharing.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* document/library role management.
|
|
13
13
|
*
|
|
14
14
|
* Visibility modes:
|
|
15
|
-
* - `private` → `visibility: 'personal'` — only the document owner
|
|
15
|
+
* - `private` (or `personal`) → `visibility: 'personal'` — only the document owner
|
|
16
16
|
* - `shared` → `visibility: 'authenticated'` — any app user
|
|
17
17
|
* - `team` → `visibility: 'shared'` with role(s) — only users with the role
|
|
18
18
|
*
|
|
@@ -43,6 +43,13 @@ import { getDocumentRoles, updateDocumentRoles } from './documents';
|
|
|
43
43
|
// ---------------------------------------------------------------------------
|
|
44
44
|
const getAuthzBaseUrl = () => process.env.AUTHZ_BASE_URL || 'http://localhost:8010';
|
|
45
45
|
const getDataApiUrl = () => process.env.DATA_API_URL || 'http://localhost:8002';
|
|
46
|
+
/**
|
|
47
|
+
* Normalize a VisibilityMode so that `'personal'` is treated as `'private'`.
|
|
48
|
+
* Data-api uses `'personal'` internally, but the user-facing mode is `'private'`.
|
|
49
|
+
*/
|
|
50
|
+
export function normalizeVisibilityMode(mode) {
|
|
51
|
+
return mode === 'personal' ? 'private' : mode;
|
|
52
|
+
}
|
|
46
53
|
// ---------------------------------------------------------------------------
|
|
47
54
|
// Role Management (authz self-service endpoints, requires ssoToken)
|
|
48
55
|
// ---------------------------------------------------------------------------
|
|
@@ -54,11 +61,19 @@ const getDataApiUrl = () => process.env.DATA_API_URL || 'http://localhost:8002';
|
|
|
54
61
|
* it is returned instead of creating a duplicate.
|
|
55
62
|
*
|
|
56
63
|
* The caller is automatically assigned to the role on creation.
|
|
64
|
+
*
|
|
65
|
+
* When `appResourceId` is provided, the role is also bound to the app
|
|
66
|
+
* in authz so that it appears in app-scoped token exchanges. This is
|
|
67
|
+
* required for team roles to be included in the JWT when users launch
|
|
68
|
+
* the app from the portal.
|
|
57
69
|
*/
|
|
58
70
|
export async function ensureTeamRole(ssoToken, appName, entityName, options) {
|
|
59
71
|
const roleName = `app:${appName}:${entityName}-team`;
|
|
60
72
|
const authzUrl = getAuthzBaseUrl();
|
|
61
73
|
const headers = { Authorization: `Bearer ${ssoToken}` };
|
|
74
|
+
let roleId;
|
|
75
|
+
let roleNameResult;
|
|
76
|
+
let created;
|
|
62
77
|
// Try to create first — fast path when role doesn't exist
|
|
63
78
|
const createRes = await fetch(`${authzUrl}/roles`, {
|
|
64
79
|
method: 'POST',
|
|
@@ -71,21 +86,44 @@ export async function ensureTeamRole(ssoToken, appName, entityName, options) {
|
|
|
71
86
|
});
|
|
72
87
|
if (createRes.ok) {
|
|
73
88
|
const role = await createRes.json();
|
|
74
|
-
|
|
89
|
+
roleId = role.id;
|
|
90
|
+
roleNameResult = role.name;
|
|
91
|
+
created = true;
|
|
75
92
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
93
|
+
else {
|
|
94
|
+
// Creation failed (likely duplicate) — search for existing
|
|
95
|
+
const listRes = await fetch(`${authzUrl}/roles?app=${encodeURIComponent(appName)}`, { headers });
|
|
96
|
+
if (!listRes.ok) {
|
|
97
|
+
const text = await listRes.text().catch(() => '');
|
|
98
|
+
throw new Error(`Failed to list roles for ${appName}: ${listRes.status} ${text}`);
|
|
99
|
+
}
|
|
100
|
+
const roles = (await listRes.json());
|
|
101
|
+
const existing = roles.find((r) => r.name === roleName);
|
|
102
|
+
if (!existing) {
|
|
103
|
+
const createText = await createRes.text().catch(() => '');
|
|
104
|
+
throw new Error(`Failed to create or find role ${roleName}: ${createRes.status} ${createText}`);
|
|
105
|
+
}
|
|
106
|
+
roleId = existing.id;
|
|
107
|
+
roleNameResult = existing.name;
|
|
108
|
+
created = false;
|
|
81
109
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
110
|
+
// Ensure the role is bound to the app so it appears in app-scoped tokens
|
|
111
|
+
if (options?.appResourceId) {
|
|
112
|
+
try {
|
|
113
|
+
await fetch(`${authzUrl}/roles/${roleId}/bindings`, {
|
|
114
|
+
method: 'POST',
|
|
115
|
+
headers: { ...headers, 'Content-Type': 'application/json' },
|
|
116
|
+
body: JSON.stringify({
|
|
117
|
+
resource_type: 'app',
|
|
118
|
+
resource_id: options.appResourceId,
|
|
119
|
+
}),
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
console.warn(`[sharing] Failed to bind role ${roleId} to app ${options.appResourceId}:`, err);
|
|
124
|
+
}
|
|
86
125
|
}
|
|
87
|
-
|
|
88
|
-
throw new Error(`Failed to create or find role ${roleName}: ${createRes.status} ${createText}`);
|
|
126
|
+
return { roleId, roleName: roleNameResult, created };
|
|
89
127
|
}
|
|
90
128
|
/**
|
|
91
129
|
* Verify a role still exists in authz. Returns `true` if it does.
|
|
@@ -255,7 +293,8 @@ export function resolveVisibilityMode(visibility, roleIds, teamRoleName, roles)
|
|
|
255
293
|
* caller's own roles are preserved alongside the team role.
|
|
256
294
|
*/
|
|
257
295
|
export async function setDocumentVisibility(dataToken, documentIds, mode, roleId, callerRoleIds) {
|
|
258
|
-
|
|
296
|
+
const normalized = normalizeVisibilityMode(mode);
|
|
297
|
+
switch (normalized) {
|
|
259
298
|
case 'private':
|
|
260
299
|
await Promise.all(documentIds.map((docId) => updateDocumentRoles(dataToken, docId, [], 'personal')));
|
|
261
300
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharing.js","sourceRoot":"","sources":["../../../src/lib/data/sharing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEpE,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,MAAM,eAAe,GAAG,GAAG,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,uBAAuB,CAAC;AAExD,MAAM,aAAa,GAAG,GAAG,EAAE,CACzB,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"sharing.js","sourceRoot":"","sources":["../../../src/lib/data/sharing.ts"],"names":[],"mappings":"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"}
|