1. Users & Authentication
Authentication (Auth) is how a user logs in. Moodle supports multiple simultaneous methods.
- Manual Accounts: Created by admin.
- Email-based Self-registration: Users sign up themselves.
- LDAP / Active Directory: Sync users from an enterprise directory.
- OAuth2: Login with Google, Microsoft, or Facebook.
- SAML (SSO): Enterprise Single Sign-On (often requires a plugin like `auth_saml2`).
Tip: Use "Bulk user actions" to message, confirm, or delete users en masse.
2. Courses & Enrolment
Enrolment is how a user gets access to a course. A user can be authenticated (logged in) but not enrolled in anything.
- Manual Enrolment: Teacher/Admin adds users one by one.
- Self Enrolment: Users click "Enrol me" (can be protected by a key).
- Cohort Sync: Automatically enrols members of a system-wide group (Cohort).
- Guest Access: View-only access without enrolment.
- External Database: Sync enrolments from an SIS/MIS.
3. Roles & Permissions
Moodle's permission system is granular and context-based.
The Context Hierarchy
- System: Global permissions (Site Admin).
- Category: Permissions apply to all courses in a category.
- Course: Teacher/Student roles.
- Module (Activity): Specific permissions for a single quiz or forum.
- Block: Permissions for a specific side block.
Capabilities: Specific actions (e.g., `mod/forum:viewdiscussion`).
Roles: A collection of capabilities (e.g., "Student", "Teacher").
4. Web Services & Mobile
To connect external apps (like the Moodle Mobile App) or integrate with other systems, use Web Services.
- Enable Web Services: Site admin > Advanced features.
- Protocols: Enable REST (recommended) or SOAP.
- External Services: Define which functions are available.
- Tokens: Generate a token for the external application to authenticate.
# Example REST Call
curl "https://moodle.example.com/webservice/rest/server.php?wstoken=YOUR_TOKEN&wsfunction=core_course_get_courses&moodlewsrestformat=json"
5. Site-wide Settings
Key configurations that affect the entire installation:
- Language: Install language packs via Site admin > Language.
- Location: Set default timezone and country in Location settings.
- Front Page: Configure the landing page items (news, courses) in Front page settings.
- Appearance: Customize logos, colors, and navigation in Themes.
6. Server & Security Tools
- Cron: The heartbeat of Moodle. Must run every minute. Checks for emails, cleanup, and sync tasks.
- Debugging: Development > Debugging. Set to "Developer" to see PHP errors.
- Purge Caches: Clears MUC, Theme, and JS caches. Use when changes aren't showing up.
- Scheduled Tasks: Fine-tune when specific background jobs run.
- IP Blocker: Restrict access to specific IP ranges.
7. Plugin Management
Moodle is modular. You can extend functionality with plugins from the Moodle Plugins Directory or custom-built ones.
- Install: Site administration > Plugins > Install plugins (Upload ZIP).
- Overview: Site administration > Plugins > Plugins overview. Check for updates and verify versions.
- Uninstall: Always uninstall via the Overview page to ensure database tables are dropped correctly.
- Disk: Plugins live in the
/moodle/directory (e.g.,/mod/,/blocks/,/local/).
8. Privacy & GDPR
Moodle includes a robust toolset for data privacy compliance (GDPR).
- Policy Tool: Define site policy and require user consent.
- Data Registry: Map data purposes to contexts (e.g., "Course data is kept for 1 year").
- Data Requests: Users can request to export or delete their data. Admins approve/deny these requests in Site administration > Privacy and policies > Data requests.
9. Language Customization
Don't hack the core code to change a text string! Use the Language Customization tool.
- Go to Site administration > Language > Language customization.
- Select the language pack (e.g., English (en)).
- "Open language pack for editing".
- Search for the string (e.g., "Log in").
- Enter your custom string (e.g., "Sign In") and save to the local language pack.
This creates a file in moodledata/lang/xx_local/ which persists across upgrades.