mirror of
https://github.com/mediacms-io/mediacms.git
synced 2026-02-04 06:22:59 -05:00
r
This commit is contained in:
253
LTI_SETUP.md
253
LTI_SETUP.md
@@ -1,253 +0,0 @@
|
||||
# MediaCMS LTI 1.3 Integration Setup Guide
|
||||
|
||||
This guide walks you through integrating MediaCMS with a Learning Management System (LMS) like Moodle using LTI 1.3.
|
||||
|
||||
## 1. Configure MediaCMS Settings
|
||||
|
||||
Add these settings to `cms/local_settings.py`:
|
||||
|
||||
```python
|
||||
# Enable LTI integration
|
||||
USE_LTI = True
|
||||
|
||||
# Enable RBAC for course-based access control
|
||||
USE_RBAC = True
|
||||
|
||||
# Your production domain
|
||||
FRONTEND_HOST = 'https://your-mediacms-domain.com'
|
||||
ALLOWED_HOSTS = ['your-mediacms-domain.com', 'localhost']
|
||||
```
|
||||
|
||||
**Note:** LTI-specific cookie settings (SESSION_COOKIE_SAMESITE='None', etc.) are automatically applied when `USE_LTI=True`.
|
||||
|
||||
## 2. MediaCMS Configuration
|
||||
|
||||
### A. Verify HTTPS Setup
|
||||
|
||||
Ensure your MediaCMS server is running on HTTPS. LTI 1.3 requires HTTPS for security and iframe embedding.
|
||||
|
||||
### B. Register Your LMS Platform
|
||||
|
||||
1. Access Django Admin: `https://your-mediacms-domain.com/admin/lti/ltiplatform/`
|
||||
2. Add new LTI Platform with these settings:
|
||||
|
||||
**Basic Info:**
|
||||
- **Name:** My LMS (or any descriptive name)
|
||||
- **Platform ID (Issuer):** Get this from your LMS (e.g., `https://mylms.example.com`)
|
||||
- **Client ID:** You'll get this from your LMS after registering MediaCMS as an external tool
|
||||
|
||||
**OIDC Endpoints (get from your LMS):**
|
||||
- **Auth Login URL:** `https://mylms.example.com/mod/lti/auth.php`
|
||||
- **Auth Token URL:** `https://mylms.example.com/mod/lti/token.php`
|
||||
- **Key Set URL:** `https://mylms.example.com/mod/lti/certs.php`
|
||||
|
||||
**Deployment IDs:** Add the deployment ID(s) provided by your LMS as a JSON list, e.g., `["1"]`
|
||||
|
||||
**Features:**
|
||||
- ✓ Enable NRPS (Names and Role Provisioning)
|
||||
- ✓ Enable Deep Linking
|
||||
- ✓ Auto-create categories
|
||||
- ✓ Auto-create users
|
||||
- ✓ Auto-sync roles
|
||||
|
||||
### C. Note MediaCMS URLs for LMS Configuration
|
||||
|
||||
You'll need these URLs when configuring your LMS:
|
||||
|
||||
- **Tool URL:** `https://your-mediacms-domain.com/lti/launch/`
|
||||
- **OIDC Login URL:** `https://your-mediacms-domain.com/lti/oidc/login/`
|
||||
- **JWK Set URL:** `https://your-mediacms-domain.com/lti/jwks/`
|
||||
- **Redirection URI:** `https://your-mediacms-domain.com/lti/launch/`
|
||||
- **Deep Linking URL:** `https://your-mediacms-domain.com/lti/select-media/`
|
||||
|
||||
## 3. LMS Configuration (Moodle Example)
|
||||
|
||||
### A. Register MediaCMS as External Tool
|
||||
|
||||
1. Navigate to: **Site administration → Plugins → Activity modules → External tool → Manage tools**
|
||||
2. Click **Configure a tool manually** or add new tool
|
||||
|
||||
**Basic Settings:**
|
||||
- **Tool name:** MediaCMS
|
||||
- **Tool URL:** `https://your-mediacms-domain.com/lti/launch/`
|
||||
- **LTI version:** LTI 1.3
|
||||
- **Tool configuration usage:** Show in activity chooser
|
||||
|
||||
**URLs:**
|
||||
- **Public keyset URL:** `https://your-mediacms-domain.com/lti/jwks/`
|
||||
- **Initiate login URL:** `https://your-mediacms-domain.com/lti/oidc/login/`
|
||||
- **Redirection URI(s):** `https://your-mediacms-domain.com/lti/launch/`
|
||||
|
||||
**Launch Settings:**
|
||||
- **Default launch container:** Embed (without blocks) or New window
|
||||
- **Accept grades from tool:** Optional
|
||||
- **Share launcher's name:** Always ⚠️ **REQUIRED for user names**
|
||||
- **Share launcher's email:** Always ⚠️ **REQUIRED for user emails**
|
||||
|
||||
> **Important:** MediaCMS creates user accounts automatically on first LTI launch. To ensure users have proper names and email addresses in MediaCMS, you **must** set both "Share launcher's name with tool" and "Share launcher's email with tool" to **Always** in the Privacy settings. Without these settings, users will be created with only a username based on their LTI user ID.
|
||||
|
||||
**Services:**
|
||||
- ✓ IMS LTI Names and Role Provisioning (for roster sync)
|
||||
- ✓ IMS LTI Deep Linking (for media selection)
|
||||
|
||||
**Tool Settings (Important for Deep Linking):**
|
||||
- ✓ **Supports Deep Linking (Content-Item Message)** - Enable this to allow instructors to browse and select media from MediaCMS when adding activities
|
||||
|
||||
3. Save the tool configuration
|
||||
|
||||
### B. Copy Platform Details to MediaCMS
|
||||
|
||||
After saving, your LMS will provide:
|
||||
- Platform ID (Issuer URL)
|
||||
- Client ID
|
||||
- Deployment ID
|
||||
|
||||
Copy these values back to the LTIPlatform configuration in MediaCMS admin (step 2B above).
|
||||
|
||||
### C. Using MediaCMS in Courses
|
||||
|
||||
**Option 1: Embed "My Media" view (Default)**
|
||||
- In a course, add activity → External tool → MediaCMS
|
||||
- Leave the custom URL blank (uses default launch URL)
|
||||
- Students/teachers will see their MediaCMS profile in an iframe
|
||||
|
||||
**Option 2: Link to a Specific Video**
|
||||
- Add activity → External tool → MediaCMS
|
||||
- Activity name: "November 2020 Video" (or any descriptive name)
|
||||
- In the activity settings, find **"Custom parameters"** (may be under "Privacy" or "Additional Settings")
|
||||
- Add this parameter:
|
||||
```
|
||||
media_friendly_token=abc123def
|
||||
```
|
||||
- Replace `abc123def` with your video's token from MediaCMS (found in the URL: `/view?m=abc123def`)
|
||||
- Students clicking this activity will go directly to that specific video
|
||||
|
||||
**Option 3: Link to Any MediaCMS Page**
|
||||
- Add activity → External tool → MediaCMS
|
||||
- In **"Custom parameters"**, add:
|
||||
```
|
||||
redirect_path=/featured
|
||||
```
|
||||
- Supported paths:
|
||||
- `/featured` - Featured videos page
|
||||
- `/latest` - Latest videos
|
||||
- `/search/?q=keyword` - Search results
|
||||
- `/category/category-name` - Specific category
|
||||
- `/user/username` - User's profile
|
||||
- Any other MediaCMS page path
|
||||
|
||||
**Option 4: Embed Specific Media via Deep Linking (Interactive)**
|
||||
|
||||
⚠️ **Prerequisite:** Ensure "Supports Deep Linking (Content-Item Message)" is enabled in the External Tool configuration (see section 3.A above)
|
||||
|
||||
When adding the activity to your course:
|
||||
1. Add activity → External tool → MediaCMS
|
||||
2. In the activity settings, enable **"Supports Deep Linking"** checkbox (may be under "Tool settings" or "Privacy" section)
|
||||
3. Click **"Select content"** button → This launches the MediaCMS media browser
|
||||
4. Browse and select media from MediaCMS (you can select multiple)
|
||||
5. Click **"Add to course"** → Returns to Moodle with selected media configured
|
||||
6. The activity will be automatically configured with the selected media's title and embed URL
|
||||
7. Students clicking this activity will go directly to the selected media
|
||||
|
||||
### D. Custom Parameters - Complete Examples
|
||||
|
||||
**Example 1: Link to a specific video titled "Lecture 1 - Introduction"**
|
||||
```
|
||||
Activity Name: Lecture 1 - Introduction
|
||||
Custom Parameters:
|
||||
media_friendly_token=a1b2c3d4e5
|
||||
```
|
||||
|
||||
**Example 2: Link to course-specific videos**
|
||||
```
|
||||
Activity Name: Course Videos
|
||||
Custom Parameters:
|
||||
redirect_path=/category/biology101
|
||||
```
|
||||
|
||||
**Example 3: Link to search results for "genetics"**
|
||||
```
|
||||
Activity Name: Genetics Videos
|
||||
Custom Parameters:
|
||||
redirect_path=/search/?q=genetics
|
||||
```
|
||||
|
||||
**Example 4: Link to featured content**
|
||||
```
|
||||
Activity Name: Featured Videos
|
||||
Custom Parameters:
|
||||
redirect_path=/featured
|
||||
```
|
||||
|
||||
**Where to find Custom Parameters in Moodle:**
|
||||
1. When creating/editing the External Tool activity
|
||||
2. Expand **"Privacy"** section, or look for **"Additional Settings"**
|
||||
3. Find the **"Custom parameters"** text field
|
||||
4. Enter one parameter per line in the format: `key=value`
|
||||
|
||||
## 4. Testing Checklist
|
||||
|
||||
- [ ] HTTPS is working on MediaCMS
|
||||
- [ ] `USE_LTI = True` in local_settings.py
|
||||
- [ ] LTIPlatform configured in Django admin
|
||||
- [ ] External tool registered in LMS
|
||||
- [ ] Launch from LMS creates new user in MediaCMS
|
||||
- [ ] Course is mapped to MediaCMS category
|
||||
- [ ] Users are added to RBAC group with correct roles
|
||||
- [ ] Media from course category is visible to course members
|
||||
- [ ] Public media is accessible
|
||||
- [ ] Private media from other courses is not accessible
|
||||
|
||||
## 5. Default Role Mappings
|
||||
|
||||
The system automatically maps LMS roles to MediaCMS:
|
||||
|
||||
- **Instructor/Teacher** → advancedUser (global) + manager (course group)
|
||||
- **Student/Learner** → user (global) + member (course group)
|
||||
- **Teaching Assistant** → user (global) + contributor (course group)
|
||||
- **Administrator** → manager (global) + manager (course group)
|
||||
|
||||
You can customize these in Django admin under **LTI Role Mappings**.
|
||||
|
||||
## 6. User Creation and Authentication
|
||||
|
||||
### User Creation via LTI
|
||||
|
||||
When a user launches MediaCMS from your LMS for the first time, a MediaCMS account is automatically created with:
|
||||
- **Username:** Generated from email (preferred) or name, or a unique ID if neither is available
|
||||
- **Email:** From LTI claim (if shared by LMS)
|
||||
- **Name:** From LTI given_name/family_name claims (if shared by LMS)
|
||||
- **Roles:** Mapped from LTI roles to MediaCMS permissions
|
||||
- **Course membership:** Automatically added to the RBAC group for the course
|
||||
|
||||
### Privacy Settings Are Critical
|
||||
|
||||
⚠️ **For proper user accounts, you must configure the LTI tool's privacy settings in Moodle:**
|
||||
|
||||
1. Edit the External Tool configuration in Moodle
|
||||
2. Go to the **Privacy** section
|
||||
3. Set **"Share launcher's name with tool"** to **Always**
|
||||
4. Set **"Share launcher's email with tool"** to **Always**
|
||||
|
||||
Without these settings:
|
||||
- Users will not have proper names in MediaCMS
|
||||
- Users will not have email addresses
|
||||
- Usernames will be generic hashes (e.g., `lti_user_abc123def`)
|
||||
|
||||
### Authentication
|
||||
|
||||
Users created through LTI integration do **not** have a password set. They can only access MediaCMS through LTI launches from your LMS. This is intentional for security.
|
||||
|
||||
If you need a user to have both LTI access and direct login capability, manually set a password using:
|
||||
```bash
|
||||
python manage.py changepassword <username>
|
||||
```
|
||||
|
||||
## Need Help?
|
||||
|
||||
If you encounter issues, check:
|
||||
- `/admin/lti/ltilaunchlog/` for launch attempt logs
|
||||
- Django logs for detailed error messages
|
||||
- Ensure HTTPS is properly configured (required for iframe cookies)
|
||||
- Verify all URLs are correct and accessible
|
||||
- Check that the Client ID and Deployment ID match between MediaCMS and your LMS
|
||||
@@ -1,46 +0,0 @@
|
||||
# Moodle Plugins for MediaCMS
|
||||
|
||||
This directory contains plugins for integrating MediaCMS with Moodle.
|
||||
|
||||
## Available Plugins
|
||||
|
||||
### tiny_mediacms - TinyMCE MediaCMS Plugin
|
||||
|
||||
A TinyMCE editor plugin that allows users to insert MediaCMS content directly from the Moodle text editor.
|
||||
|
||||
**Features:**
|
||||
- Insert MediaCMS content with a single click
|
||||
- Visual media selection interface
|
||||
- Respects RBAC permissions
|
||||
- Supports multiple media selection
|
||||
- Works with LTI 1.3 authentication
|
||||
|
||||
**Installation:**
|
||||
See [TINYMCE_PLUGIN_INSTALLATION.md](../TINYMCE_PLUGIN_INSTALLATION.md) for detailed installation instructions.
|
||||
|
||||
**Quick Install:**
|
||||
```bash
|
||||
cp -r tiny_mediacms /path/to/moodle/lib/editor/tiny/plugins/
|
||||
```
|
||||
|
||||
Then visit Moodle's Site administration → Notifications to complete the installation.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Moodle 5.0 or later
|
||||
- MediaCMS with LTI integration configured
|
||||
- Active LTI 1.3 connection between Moodle and MediaCMS
|
||||
|
||||
## Documentation
|
||||
|
||||
- [TinyMCE Plugin Installation Guide](../TINYMCE_PLUGIN_INSTALLATION.md)
|
||||
- [LTI Setup Guide](../LTI_README.md)
|
||||
- [LTI Configuration](../LTI_README2.md)
|
||||
|
||||
## Support
|
||||
|
||||
For issues or questions, please refer to the MediaCMS documentation or open an issue in the repository.
|
||||
|
||||
## License
|
||||
|
||||
These plugins are part of MediaCMS and are licensed under the GNU General Public License v3.0 or later.
|
||||
Reference in New Issue
Block a user