mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 17:00:15 +01:00
- Implement RBAC with viewer/editor/owner roles using bitwise permissions
- Add AccessRole, AclEntry, and Group models for permission management
- Create PermissionService for core permission logic and validation
- Integrate Microsoft Graph API for Entra ID user/group search
- Add middleware for resource access validation with custom ID resolvers
- Implement bulk permission updates with transaction support
- Create permission management UI with people picker and role selection
- Add public sharing capabilities for resources
- Include database migration for existing agent ownership
- Support hybrid local/Entra ID identity management
- Add comprehensive test coverage for all new services
chore: Update @librechat/data-schemas to version 0.0.9 and export common module in index.ts
fix: Update userGroup tests to mock logger correctly and change principalId expectation from null to undefined
55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
import logger from '~/config/winston';
|
|
|
|
/**
|
|
* Checks if the connected MongoDB deployment supports transactions
|
|
* This requires a MongoDB replica set configuration
|
|
*
|
|
* @returns True if transactions are supported, false otherwise
|
|
*/
|
|
export const supportsTransactions = async (
|
|
mongoose: typeof import('mongoose'),
|
|
): Promise<boolean> => {
|
|
try {
|
|
const session = await mongoose.startSession();
|
|
try {
|
|
session.startTransaction();
|
|
|
|
await mongoose.connection.db?.collection('__transaction_test__').findOne({}, { session });
|
|
|
|
await session.abortTransaction();
|
|
logger.debug('MongoDB transactions are supported');
|
|
return true;
|
|
} catch (transactionError: unknown) {
|
|
logger.debug(
|
|
'MongoDB transactions not supported (transaction error):',
|
|
(transactionError as Error)?.message || 'Unknown error',
|
|
);
|
|
return false;
|
|
} finally {
|
|
await session.endSession();
|
|
}
|
|
} catch (error) {
|
|
logger.debug(
|
|
'MongoDB transactions not supported (session error):',
|
|
(error as Error)?.message || 'Unknown error',
|
|
);
|
|
return false;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Gets whether the current MongoDB deployment supports transactions
|
|
* Caches the result for performance
|
|
*
|
|
* @returns True if transactions are supported, false otherwise
|
|
*/
|
|
export const getTransactionSupport = async (
|
|
mongoose: typeof import('mongoose'),
|
|
transactionSupportCache: boolean | null,
|
|
): Promise<boolean> => {
|
|
let transactionsSupported = false;
|
|
if (transactionSupportCache === null) {
|
|
transactionsSupported = await supportsTransactions(mongoose);
|
|
}
|
|
return transactionsSupported;
|
|
};
|