diff --git a/LTI_SETUP.md b/LTI_SETUP.md deleted file mode 100755 index 851880ee..00000000 --- a/LTI_SETUP.md +++ /dev/null @@ -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 -``` - -## 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 diff --git a/moodle-plugins/README.md b/moodle-plugins/README.md deleted file mode 100644 index 701ee236..00000000 --- a/moodle-plugins/README.md +++ /dev/null @@ -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.