@coursebuilder/utils-auth
v1.0.1
Published
Authentication and authorization utilities for the CourseBuilder monorepo.
Downloads
10
Readme
@coursebuilder/utils-auth
Authentication and authorization utilities for the CourseBuilder monorepo.
Installation
pnpm add @coursebuilder/utils-authUsage
Current Ability Rules
This package provides interfaces and types for handling user permission rules within the application. Since these functions are highly dependent on application-specific implementations, they're designed to be overridden by the consuming application.
getCurrentAbilityRules
Gets the current ability rules for a user based on lesson, module, and other contextual information.
import { getCurrentAbilityRules } from '@coursebuilder/utils-auth/current-ability-rules'
// In your application, implement this function:
Object.defineProperty(exports, 'getCurrentAbilityRules', {
value: async function({
lessonId,
moduleId,
organizationId,
}: {
lessonId?: string
moduleId?: string
organizationId?: string
}) {
// Your application-specific implementation
// ...
return rules
}
})
// Then use it in your code:
const rules = await getCurrentAbilityRules({
lessonId: '123',
moduleId: '456'
})
const ability = createAppAbility(rules)
const canView = ability.can('read', 'Content')getViewingAbilityForResource
Checks if a user can view a specific resource.
import { getViewingAbilityForResource } from '@coursebuilder/utils-auth/current-ability-rules'
// Use after implementing in your application:
const canView = await getViewingAbilityForResource('lesson123', 'module456')
if (canView) {
// Show the resource
}getAbilityForResource
Gets detailed ability information for a resource.
import { getAbilityForResource, type AbilityForResource } from '@coursebuilder/utils-auth/current-ability-rules'
// Use after implementing in your application:
const ability = await getAbilityForResource('lesson123', 'module456')
if (ability.canView && !ability.isRegionRestricted) {
// Show the resource
}Contributing
To add a new utility to this package:
- Create a new file in the
srcdirectory - Implement your utility with proper TSDoc comments
- Export it from the package by updating
package.json - Add tests in a corresponding
.test.tsfile - Build and test your changes:
cd packages/utils-auth
pnpm build
pnpm test