Note: You are currently viewing documentation for Moodle 2.0. Up-to-date documentation for the latest stable version is available here: Roles FAQ.

Roles FAQ

From MoodleDocs

This page requires updating for Moodle 2.0. Please do so and remove this template when finished.

What is the definition of a...

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."
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.)
A named set of permissions that are associated with each capability. For example. the "Teacher" and "Student" roles come with the standard Moodle install.
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?

Manual role assignments and overrides take effect immediately. However automatic role assignments that result from changes to certain user policies (for example, Default front page role) may be delayed until the next login.

If you are testing a new role, here are some suggestions.

Also, please check the context in which the role is assigned. Certain capabilities e.g. moodle/user:update may only be applied in the System context, so giving such permissions in the course context will have no effect.

Why do I not have my Course creator role when I also have a student role in my course?

When you are assigned a role in a context,like a course, that role's permissions for every capability will take over in that context. You were probably given the course creator role in the system or category context, but then in the lower context of a course, you were enrolled as a student.

If you need to be a student a best practice is to create a phantom or test user, then enrol that user in the course as a student. Teachers and others who know the user name and password, can see the course from the student perspective.

On a deeper level, consider the "Master Teacher" who is made a teacher on the system level. If they are given a student role in a specific course, they "lose" many of their abilities to do things as a teacher in that course. However, it can get complicated when a student capability has a "Not set" permission and the teacher role has an "Allow" permission. Here the "student" maybe able to do things other students can not do. Thus the reason for the best practice mentioned above.

Why are there differences in the users listed as course participants and users assigned roles in a course?

Users assigned roles in a higher context, for example users assigned the role of teacher in a course category context, may appear as course participants. The discussion Discrepancies between Assign Roles lists and Participants list contains a longer explanation.

When defining roles, what is the difference between Prevent and Not set?

Short answer: "Not set" means whatever permission was in effect when the user entered the context is still in effect. "Prevent" do not allow this capability in this context.

Best practice: when defining roles, you almost always want to use Allow or Not set.

Can you give me some examples about permissions?

When you logged into the site you were given the system role of Authenticated User. You are also enrolled in a course and given the student role. Let's look at a single capability called X (the capability could be to create a blog) to see how permissions work.

In the example below we are just talking about the permissions for a single capability in the course role of a Student and the system role of Authenticated user for 1 user.

  • If Student permission is Not set, and Authenticated user permission is Not set, then you are not allowed to do X.
  • If Student is Not set, and Authenticated user is Allow, then you are allowed to do X.
  • If Student is Prevent , and Authenticated user is Allow, then you are not allowed to do X.
  • If Student is Allow, and Authenticated user is Prevent, then you are allowed to do X.
  • If Student is Prohibit, and Authenticated user i Allow, then you are not allowed to do X.
  • If Student is Allow, and Authenticated user is Prohibit, then you are notallowed to do X.

For the full story, see How permissions are calculated.

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 (in Moodle 1.9 onwards) = 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:

  1. Edit Authenticated user, setting moodle/user:changeownpassword = Not set
  2. Create a new role CannotChangeOwnPassword with moodle/user:changeownpassword = Prevent 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 (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 (in Moodle 1.9 onwards) for moodle/user:changeownpassword.

Do roles have an inheritance relationship?

No. Roles are completely independent.

  • When you create a new role by copying an existing role, it is just like copying a file: the original and the copy are identical at the outset, but the copy has no ongoing relationship with the original. Changes to the original do not affect the copy and vice versa.
  • When you create a new role and select a value such as LEGACY:Student from the Legacy role type dropdown, you are not "inheriting" from the Student role. You are simply indicating that you want your role to have the same defaults as Student.
  • Course creator does not "inherit" from Teacher (a common misconception). As with all roles, the two roles are completely independent. Course creator is actually a very simple role that can basically only create courses and not much else. However a user who creates a course can be automatically assigned the role of Teacher in the newly-created course (the default in site settings). This is how a course creator gets her teaching abilities within a course.
  • Since roles are independent of each other, ordering roles at Site Administration > Users > Permissions > Define roles does not have any impact on capabilities or permissions. The only effect of ordering roles is how they are displayed in each context.
  • When a Moodle site is upgraded with new capabilities, the "ARCHTYPE" role determines the initial permissions for those new capabilities.

How do I change the name for "teacher" in the course description?


  • Edit the role of Teacher via Administration > Users > Permissions > Define roles and rename it. The new name will apply site-wide.


  • 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.


  • 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.


  • 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".


How do I enable teachers to set role overrides?

  1. Access Site administration > Users > Permissions > Define roles.
  2. Edit the teacher role and change the capability moodle/role:safeoverride to allow.
  3. Click the button "Save changes".
  4. Click the tab "Allow role overrides" (in Site administration > Users > Permissions > Define roles).
  5. 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.
  6. 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. For that reason it is always preferable where possible to have a "test" student log in to use.

Further information about this feature can be found in Switch roles and the paragraph on testing a new role in Manage roles.

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
  • Quiz user with unlimited time - for allowing a user unlimited time to attempt a quiz which has a time limit set
  • Question creator - for enabling students to create questions for use in quizzes
  • Course requester role - for restricting users who can make course requests

Logged-in users can't read the site news. What can I do?

See News forum for details.

How do I enable logged-in users to participate in front page activities?


  1. Access Site administration > Front Page > Users > Permissions> Assign roles
  2. Select the role you wish to add individual users to
  3. Select all or some of the users in the potential users list
  4. Use the left-facing arrow button to add them to the existing users list


  1. Access Site Administration > Front Page > Front Page settings
  2. 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 do I copy a custom role from one Moodle site to another

There is no import and export facility for roles, but it can be achieved nearly as easily using backup and restore.

  1. Create an empty course with all the default settings
  2. Assign anybody to your custom role (or roles) within the course
  3. Backup the course (all defaults are fine)
  4. Download the backup file
  5. Upload the backup file to the site files of the target Moodle
  6. Restore the course (all defaults are fine)
  7. Delete the course.

You will find that the custom roles have been recreated in the target site.

Note: It seems this functionality is no longer working in Moodle 2.0. See MDL-30127 for details.

What is the difference between the capabilities moodle/role:override and moodle/role:safeoverride?

The capability moodle/role:safeoverride was added to Moodle 1.9.3 onwards, as a way of enabling teachers to override permissions safely. The capability moodle/role:override allows a user to override all permissions, whereas moodle/role:safeoverride only allows a user to override capabilities that do not have major risks attached to them.

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 a best practice. 'Settings > Site administration > Users> Permissions> Assign system roles .

  • 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.
  • Alternatively, you could create a new role based on the teacher or student and assign this in the System context. Then assign individuals to that role.

See also

Using Moodle forum discussions: