Permissions
Permissions control what your app can access on the Teachfloor platform.
Overview
Permissions control two types of access:
- Contextual Data: Data the platform includes in event callbacks (course, module, element)
- Storage & Features: Platform features your app can use (data storage, AI generation)
All permissions must be declared in your app manifest with a user-facing explanation.
How Permissions Work
When your app subscribes to events, the platform includes an objectContext parameter containing contextual data based on your granted permissions. For example, with course_read permission, objectContext.course includes the current course data when in a course viewport.
See Integration Guide - Events for detailed objectContext structure and usage examples.
Available Permissions
Your app can request the following permissions:
Contextual Data Permissions
| Permission | Description | Access Type |
|---|---|---|
user_read | Access user profile information | User data in objectContext |
user_events_read | Access user activity events | User events |
course_read | Access course contextual data | Course object in objectContext |
module_read | Access module contextual data | Module object in objectContext |
element_read | Access element contextual data | Element object in objectContext |
Storage Permissions
| Permission | Description | Access Type | Hierarchy |
|---|---|---|---|
appdata_read | Read organization-wide app data | Storage API - App Data | Read only |
appdata_write | Write organization-wide app data | Storage API - App Data | Includes read |
userdata_read | Read user-specific app data | Storage API - User Data | Read only |
userdata_write | Write user-specific app data | Storage API - User Data | Includes read |
usercollection_read | Read user data collections | Storage API - Collections | Read only |
usercollection_write | Write to user data collections | Storage API - Collections | Includes read |
Important: Write permissions (*_write) automatically grant read access. Requesting *_write is sufficient for both reading and writing.
AI & Feature Permissions
| Permission | Description | Access Type |
|---|---|---|
ai_text_generate | Generate text using AI models | AI Generation API |
ai_context_external_send | Send platform data to AI models | AI Context Sharing |
Permission Details
User Permissions
user_read
Access basic user profile information.
Data available in objectContext:
- User ID
- Full name
- Email address
- Avatar URL
- Language preference
- Timezone
Use cases:
- Personalization
- User greetings
- Profile displays
Example:
Code
user_events_read
Access user activity and learning events.
Data available in objectContext:
- Course enrollments
- Module completions
- Element interactions
- Login history
- Activity timestamps
Use cases:
- Progress tracking
- Analytics dashboards
- Activity feeds
- Engagement metrics
Example:
Code
Contextual Permissions
These permissions control what data appears in the objectContext parameter based on the current viewport.
course_read
Access course information when user is in a course viewport.
Data available in objectContext.course:
- Course ID
- Course title
- Description
- Status
- Enrollment data
- Course settings
Available in viewports:
teachfloor.dashboard.course.detailteachfloor.dashboard.course.module.detailteachfloor.dashboard.course.element.detail
Example:
Code
Usage:
Code
module_read
Access module information when user is viewing a module.
Data available in objectContext.module:
- Module ID
- Module title
- Description
- Order/sequence
- Completion status
Available in viewports:
teachfloor.dashboard.course.module.detailteachfloor.dashboard.course.element.detail
Example:
Code
Usage:
Code
element_read
Access learning element information when user is viewing an element.
Data available in objectContext.element:
- Element ID
- Element type (video, assignment, quiz, etc.)
- Title and description
- Content metadata
- Completion status
Available in viewports:
teachfloor.dashboard.course.element.detail
Example:
Code
Usage:
Code
Storage Permissions
Storage permissions allow your app to persist data on the Teachfloor platform. See Data Storage for detailed usage.
appdata_read & appdata_write
Store and retrieve organization-wide app data shared across all users.
Permission Hierarchy: appdata_write includes appdata_read access.
Use cases:
- App configuration
- Global settings
- Shared templates
- Feature flags
Example (Read and Write):
Code
Example (Read-Only):
Code
Usage:
Code
userdata_read & userdata_write
Store and retrieve user-specific data.
Permission Hierarchy: userdata_write includes userdata_read access.
Use cases:
- User preferences
- Personal settings
- User state
- Draft content
Example (Read and Write):
Code
Example (Read-Only):
Code
Usage:
Code
usercollection_read & usercollection_write
Store and retrieve collections of data items for a user, with pagination support.
Permission Hierarchy: usercollection_write includes usercollection_read access.
Use cases:
- Activity logs
- User notes or annotations
- Saved items
- History data
Example (Read and Write):
Code
Example (Read-Only):
Code
Usage:
Code
AI Permissions
ai_text_generate
Generate text using AI language models.
Use cases:
- Content generation
- Text completion
- Summarization
- Translation
Example:
Code
Usage:
Code
ai_context_external_send
Permission to use platform data placeholders in AI prompts.
How it works: This permission is only checked when you use placeholders like {{course.name}} or {{module.content}} in your AI prompts. Without this permission, you can still use generate() with regular prompts.
Supported Placeholders:
{{course.name}}- Course title{{course.content}}- Course content (text format){{module.name}}- Module title{{module.content}}- Module content (text format){{element.name}}- Element title{{element.content}}- Element content (text format)
Important: When using placeholders, you must also have the corresponding read permission:
- Course placeholders require
course_read - Module placeholders require
module_read - Element placeholders require
element_read
Example:
Code
Usage:
Code
Permission Management
Adding Permissions
Using CLI
Code
Select permission and enter purpose when prompted.
Manual Addition
Edit teachfloor-app.json:
Code
Removing Permissions
Using CLI
Code
Manual Removal
Remove from manifest:
Code
Permission Purposes
Each permission must have a clear, user-facing explanation.
Good purposes:
- "Display course information in your notes" ✓
- "Show your current module progress" ✓
- "Track your learning progress for analytics" ✓
Poor purposes:
- "Access data" ✗ (too vague)
- "Platform integration" ✗ (not user-facing)
- "Required for functionality" ✗ (not specific)
Using Permissions
Always check if contextual data exists before accessing it:
Code
See Integration Guide - Events for complete objectContext usage examples.
Next Steps
→ Continue to Deployment
Additional Resources
- Integration Guide - Using permissions with events and storage
- Best Practices - Permission best practices and patterns
- Examples - Complete permission usage examples