Roles FAQ
What is the definition of a...
- Capability
- A configurable aspect of program behavior. Moodle has 100s of capabilities. Each capability has a computer friendly name like mod/forum:rate and a human-friendly name like "Rate posts."
- Permission
- Permissions are paired with each capability. There are four possible permission values: Allow, Prevent, Prohibit and Not set/Inherit. (It is called not-set when defining roles and inherit when overriding permissions.)
- Role
- A named set of permissions that are associated with each capability. For example. the "Teacher" and "Student" roles come with the standard Moodle install.
- Context
- A functional area of Moodle. Contexts have a hierarchy. Examples of contexts include a course, activity module, or resource.
Why isn't my role change taking effect?
Certain capabilities e.g. moodle/user:changeownpassword may only be applied in the system context, so giving such permissions by assigning a role in the course context will have no effect.
Why do some users I know are in my course not appear in Participants?
Users assigned roles in a higher context, for example users assigned the role of teacher in the course category are technically not enrolled in the course and so will not appear in the Participants link in the Navigation block but can be found via Administration>Course administration>Users>Other users
How can I prevent a user from changing their own password?
To prevent a user from changing their own password, you must make sure they do not have moodle/user:changeownpassword = Allow in the System context. The Authenticated user role (which is assigned to users in the System context) has moodle/user:changeownpassword = Allow by default, so you have two choices:
- Edit Authenticated user, setting moodle/user:changeownpassword = Not set
- Create a new role CannotChangeOwnPassword with moodle/user:changeownpassword = Prevent and all other permissions Not set. Choose "system" for the context type and assign the role to selected users in the System context via Administration>Site administration -> Users -> Permissions -> Assign system roles).
Choice (1) will prevent all users from changing their passwords (except for the administrator, who can do anything). To selectively allow selected users (say teachers) to change their passwords, you could create a new role CanChangeOwnPassword with moodle/user:changeownpassword = Allow and all other permissions not set and assign the role to selected users in the System context (Site administration -> Users -> Permissions -> Assign system roles).
Choice (2) allows you to be selective, but if you have a lot of users that you want to prevent (say, all students), you will have to make a lot of role assignments in the System context. There is currently no convenient way to do this, so you might consider choice (1).
Note that you MUST deal with this permission in the System context.
How can I prevent a user from editing their own profile?
See How can I prevent a user from changing their own password? The answer to this question is the same if you substitute edit their own profile for change their own password and moodle/user:editownprofile for moodle/user:changeownpassword.
How do I change the name for "teacher" in the course description?
Either
- Edit the role of Teacher via Administration > Users > Permissions > Define roles and rename it. The new name will apply site-wide.
Or
- Create a duplicate teacher role with an alternative name and assign users the duplicate teacher role as appropriate in the course context. In Administration > Appearance > Course contact select the alternative name for teacher that you wish to be displayed in the course description when courses are listed. For example, copy the standard teacher role and call it Instructor and only show that role as the course contact.
Or
- Create a new "dummy" role (no capabilities) with those names and assign them to teachers along with the real roles. select the alternative name for teacher that you wish to be displayed in the course description when courses are listed. For example, copy the guest role, call it Lead Teacher and make this the course contact. You may have 5 teachers in the course but only one name will appear as Lead Teacher. If nobody is assigned the role Lead Teacher, no course contact will show.
Or
- Names for different roles in a course may be changed in the Course administration > edit settings "Role renaming" fields. For example, some courses the teacher wants the title "Professor", or "Chief" or "Mentor".
Or
- Edit the language files and change any word you want.
How do I enable teachers to set role overrides?
- Access Site administration > Users > Permissions > Define roles.
- Edit the teacher role and change the capability moodle/role:safeoverride to allow.
- Click the button "Save changes".
- Click the tab "Allow role overrides" (in Site administration > Users > Permissions > Define roles).
- Check the appropriate box(s) in the teacher row to set which role(s) teachers can override. Most likely it will just be the student role (you don't want teachers to be able to override admins!), so check the box where the teacher row intersects with the student column.
- Click the button "Save changes".
How do I enable teachers to assign other teachers in a course?
This is disabled by default but it can be switched on by modifying the teacher's role. In Siite administration > Users > Permissions > Define roles select the "Allow role assignments" tab and tick the checkbox where Teacher and Teacher intersect.
Why doesn't "Switch role to.." within a course seem to work properly?
This feature is intended for teachers so that they can see how their course appears for students. It isn't a reliable view however, as some features do not display correctly when viewed by a teacher who has switched their role to a student. Certain actions (specifically submitting assignments) are excluded from working with 'switch roles' (as the submitted work would not be visible on the grading pages, due to the user not having the 'submit' permission when they have not switched roles).For that reason it is always preferable where possible to have a "test" student log in to use.
Are there any example roles?
Yes, as follows:
- Parent - for providing parents/mentors/tutors with permission to view certain information about their children/mentees/tutees
- Demo teacher - for providing a demonstration teacher account with a password which can't be changed
- Forum moderator - for providing a user with permission in a particular forum to edit or delete forum posts, split discussions and move discussions to other forums
- Calendar editor - for providing a user with permission to add site events to the calendar
- Blogger - for limiting blogging to specific users only
- Question creator - for enabling students to create questions for use in quizzes
- Course requester role - for restricting users who can make course requests
How do I enable logged-in users to participate in front page activities?
Either:
Allow front page permissions for the 'Authenticated user on frontpage' role, as described in Permissions.
Or:
- Access Site Administration > Front Page > Front Page settings
- Set the default front page role to student.
- Note: Setting the default front page role to student is not sufficient to enable logged-in users to participate in a Front Page "Choice activity". A permissions override should be used instead.
How can I prevent students from editing their profile?
If you only want students to be prevented from editing their profile, and not all users, you can create a new role, such as Restricted user as described in the Demo teacher role, with moodle/user:editownprofile set to prevent, and assign it to all students in the system context.
Alternatively, you could change moodle/user:editownprofile to not set for the Authenticated user role, then create a new role for teachers with moodle/user:editownprofile set to allow.
Why can't I add teachers or students site wide in Moodle?
You can, but it is not best practice.
- Teachers and students typically work in one or more individual courses. It is unusual for a student to be studying every single course on your Moodle and unusual for a teacher to be teaching every single course. Therefore, the default Moodle does use these as system wide roles. The Manager role might be one that makes sense to assign on a system or category context.
- To assign a teacher or student sitewide, go to Administration>Site administration>Users>Permissions>Define roles and edit the role to include the system context.
- Then search for and allow the capability moodle/course:view
- Then assign users to this role via Administration>Site administration>Users>Permissions>Assign system roles
- It might be preferable to create a new role based on the teacher or student and assign this in the System context. Then assign individuals to that role.
How can I make a role available as a front page role?
- Go to Settings > Site administration > Users > Permissions > Define roles and edit the role
- For 'Context types where this role may be assigned' tick the Course checkbox
- Scroll to the bottom of the page and click the 'Save changes' button
How can I allow a non-editing teacher to "switch role to " a student?
- In Settings > Site administration > Users > Permissions > Define roles, edit the non-editing teacher role and set the capability "moodle/role:switchroles" to "allow". This will then allow them to switch their role to a student or a guest (as defined on the Allow role switches screen.)
How can I set a role back to its default permissions?
- Go to Administration> Site administration > Users > Permissions > Define roles and click on the name of the role
- Click the 'Reset to defaults' button and then answer yes to confirm
Note that if you have students who have been given extra permissions (such as forum ratings), then they will no longer be able to do this once the role has been reset to its default.
Permissions don't seem to be working correctly. What can I do?
It is recommended that permissions for each role are reviewed and set according to the role archetype.
- Go to Administration > Site administration > Users > Permissions > Define roles and click the edit icon opposite a role
- Click the 'Show advanced' button to reveal the different permission settings
- Review permissions (filtering for particular permissions as appropriate) and, unless there is a good reason to do otherwise, change permissions so that all are set to the highlighted value
- Click the 'Save changes' button
- Repeat steps 1 to 4 for each role
What is the "none" role?
It is possible to enrol users into a course so they appear as participants, but since they do not have a standard role such as student, they do not have any particular permissions. They cannot for example, engage in course activities. For discussion about the "none" role, see MDL-29599
See also
- Using Moodle Roles and Capabilities forum