From ffa8db5878899fb556f88ca7d84dcfcf79dbc2ef Mon Sep 17 00:00:00 2001 From: Jarka <57811074+jarkabaker@users.noreply.github.com> Date: Mon, 2 Feb 2026 14:03:21 +0000 Subject: [PATCH 1/6] User access added --- docs/advanced/administrators/user_access.md | 111 ++++++++++++++++++++ docs/advanced/index.md | 7 +- mkdocs.yml | 2 + node_modules/.yarn-integrity | 10 ++ yarn.lock | 4 + 5 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 docs/advanced/administrators/user_access.md create mode 100644 node_modules/.yarn-integrity create mode 100644 yarn.lock diff --git a/docs/advanced/administrators/user_access.md b/docs/advanced/administrators/user_access.md new file mode 100644 index 000000000..0f2e9d932 --- /dev/null +++ b/docs/advanced/administrators/user_access.md @@ -0,0 +1,111 @@ +# Purpose + +This section is intended for administrators configuring access and advanced users supporting access-related workflows. + +It explains: +- the different types of user roles +- how roles are created and configured +- how those roles affect access to modules and functionality + +This documentation focuses on access semantics and configuration rather than providing a full UI walkthrough. + +# Base User Roles + +There are currently 3 base user roles: + +## STUDENT + +Users with the STUDENT role have access only to student pages. + +## ADMIN + +Users with the ADMIN role have access to all admin pages. They also have contextual access to teacher and student pages, subject to the same module-level access rules that apply to users with the TEACHER base role. + +## TEACHER + +Users with the TEACHER role have access to teacher pages, but only for modules to which they are linked as a teacher, tutor, or moderator. They can also access student pages for those modules. + +User access to teacher-facing functionality is controlled by a set of permissions. + +These permissions currently apply only to TEACHER pages, tabs, menus, and features (such as activities or viewing statistics). + +## Mental model + +Access to teacher-facing functionality is determined by: + +1. The user’s **base role** (ADMIN or TEACHER) +2. How the user is linked to a module: + - as a **teacher** (via a teacher role) + - as a **tutor** (via global tags) + - as a **moderator** (via a role containing moderation permission) +3. The **permissions** associated with that access + +These access mechanisms are evaluated independently and may overlap in effect, but they are not interchangeable. + +# Teacher Roles + +Teacher Roles are permission groupings used to control direct module-level teacher access for users with ADMIN or TEACHER base roles. They do not apply to users with the STUDENT base role. + +The UI currently labels these permission sets as "Teacher Roles," though this terminology may evolve. + +## Teacher access + +There are currently the following types of Teacher Roles: + +### OWNER + +This is a system-defined role. The administrator can only change its description. The administrator cannot delete this role or modify its permissions. + +Role of this type grant access to modules for module owners. This role is assigned automatically to the user who creates a new module instance but can also be assigned or reassigned to other teachers on the module. + +The role of this type provides **Teacher** access to the module. + +### CUSTOM + +This role type can be added, updated, or deleted by administrators. + +Administrators (or teachers with relevant permissions) can assign this role to users to grant them access to a module instance as teachers. + +All roles of this type provide **Teacher** access to the module. + +## Tutor access + +Tutor access is not a teacher role. It is a separate access mechanism derived from student–tutor relationships. + +There is currently the following type of Tutor Roles: + +### PERSONAL TUTOR + +This is a system-defined role. The administrator cannot delete this role but can modify its description and permissions, except for the **View student data** permission. + +This role is assigned indirectly using Global Tags, which group students into student groups and assign teachers or administrators as tutors to those groups. + +A teacher or administrator gains access to a module if there is at least one student in that module who shares a Global Tag with the teacher or administrator. Access to the module is then restricted by the permissions assigned to the PERSONAL TUTOR role. + +Although the tutor role includes the **View student data** permission, this permission is limited to only those students within the same tutor group (i.e., those sharing the same Global Tag), unless the same user would have a TEACHER ROLE to the same module with **View student data** permission. This differs from teacher access, where permissions apply to all students within the module. + +Role of this type provides **Tutor** access to the module. + +## Moderator access + +Moderator access is currently defined by the presence of the **Moderate student submissions** permission. In the current implementation, moderator access is modelled as a variant of teacher role assignment rather than as a separate access mechanism. As a result, a user may be assigned either teacher access or moderator access to a module, but not both simultaneously. + +Any role (typically a CUSTOM role) with this permission enabled grants moderator access to a module. + +This reflects the current system behaviour and should not be interpreted as a conceptual requirement of the access model. + +## How to assign access to the module + +The ADMIN module instance teachers page allows administrators to grant module access to users with ADMIN or TEACHER base roles by selecting the relevant teacher role. Because the system currently allows assigning only one teacher role per user per module, moderation access is mutually exclusive with other teacher-role-based access. + +In practice, a user must be assigned either: + • a “true” teacher role (with Moderate student submissions disabled), or + • a "moderator" role that includes the Moderate student submissions permission. + +This reflects a limitation of the current role-assignment model rather than an inherent requirement of the access semantics. + +The TEACHER module teachers page allows teachers with the appropriate permissions to grant module access to other users with ADMIN or TEACHER base roles by selecting the relevant teacher role, though they can only assign “true” teacher roles (i.e. roles with Moderate student submissions permission disabled). + +>Note: A detailed description of individual permissions and their effects is maintained in the technical documentation for developers. This page focuses on access concepts and configuration rather than permission-by-permission behaviour. + +>Note: The administration UI presents teacher roles, tutor access, and moderator access in a single table for configuration convenience. This does not imply that they are equivalent access mechanisms. diff --git a/docs/advanced/index.md b/docs/advanced/index.md index d96d773d7..61a6ea131 100644 --- a/docs/advanced/index.md +++ b/docs/advanced/index.md @@ -23,6 +23,9 @@ Response areas are components in the frontend where student users can enter a re [Response areas - overview](response_areas/overview.md){ .md-button .md-button--primary style="width: 400px;"} -## Administrators +## Administrators + +This section contains documentation for users responsible for managing tenant-level configuration and advanced operational behaviour in Lambda Feedback. + +[Administrators](administrators/user_access.md){ .md-button .md-button--primary style="width: 400px;"} -Content to be added. diff --git a/mkdocs.yml b/mkdocs.yml index d183a9be8..32aac6001 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -84,6 +84,8 @@ nav: - Quickstart: "advanced/chat_functions/quickstart.md" - Testing Functions Locally: "advanced/chat_functions/local.md" - Chat Functions Information: "advanced/chat_functions/info.md" + - Administrators: + - User Access: "advanced/administrators/user_access.md" # Configuration theme: diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity new file mode 100644 index 000000000..80744eda7 --- /dev/null +++ b/node_modules/.yarn-integrity @@ -0,0 +1,10 @@ +{ + "systemParams": "darwin-arm64-120", + "modulesFolders": [], + "flags": [], + "linkedModules": [], + "topLevelPatterns": [], + "lockfileEntries": {}, + "files": [], + "artifacts": {} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 000000000..fb57ccd13 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + From 60ac9719155afdb1324c16e0a5fdaf27af57fb08 Mon Sep 17 00:00:00 2001 From: Jarka <57811074+jarkabaker@users.noreply.github.com> Date: Tue, 3 Feb 2026 13:56:20 +0000 Subject: [PATCH 2/6] Removed yarn files --- node_modules/.yarn-integrity | 10 ---------- yarn.lock | 4 ---- 2 files changed, 14 deletions(-) delete mode 100644 node_modules/.yarn-integrity delete mode 100644 yarn.lock diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity deleted file mode 100644 index 80744eda7..000000000 --- a/node_modules/.yarn-integrity +++ /dev/null @@ -1,10 +0,0 @@ -{ - "systemParams": "darwin-arm64-120", - "modulesFolders": [], - "flags": [], - "linkedModules": [], - "topLevelPatterns": [], - "lockfileEntries": {}, - "files": [], - "artifacts": {} -} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index fb57ccd13..000000000 --- a/yarn.lock +++ /dev/null @@ -1,4 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - From e83b2f2df0ac01455ac9e0f22fd569b083c24f02 Mon Sep 17 00:00:00 2001 From: Jarka <57811074+jarkabaker@users.noreply.github.com> Date: Tue, 3 Feb 2026 14:47:08 +0000 Subject: [PATCH 3/6] Clarified moderator role wording following review --- docs/advanced/administrators/user_access.md | 24 +++++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/docs/advanced/administrators/user_access.md b/docs/advanced/administrators/user_access.md index 0f2e9d932..12ca8f62e 100644 --- a/docs/advanced/administrators/user_access.md +++ b/docs/advanced/administrators/user_access.md @@ -54,15 +54,17 @@ There are currently the following types of Teacher Roles: ### OWNER -This is a system-defined role. The administrator can only change its description. The administrator cannot delete this role or modify its permissions. +This is a system-defined **role type**. Exactly one role exists with this type. -Role of this type grant access to modules for module owners. This role is assigned automatically to the user who creates a new module instance but can also be assigned or reassigned to other teachers on the module. +The administrator can modify the role’s description, but cannot delete the role or change its permissions. + +This role is assigned automatically to the user who creates a new module instance, but it may also be reassigned to other users with ADMIN or TEACHER base roles. The role of this type provides **Teacher** access to the module. ### CUSTOM -This role type can be added, updated, or deleted by administrators. +Roles of this **role type** can be added, updated, or deleted by administrators. Administrators (or teachers with relevant permissions) can assign this role to users to grant them access to a module instance as teachers. @@ -76,19 +78,27 @@ There is currently the following type of Tutor Roles: ### PERSONAL TUTOR -This is a system-defined role. The administrator cannot delete this role but can modify its description and permissions, except for the **View student data** permission. +This is a system-defined **role type**. The system provides a single role of this type. + +The administrator cannot delete this role but can modify its description and permissions, except for the **View student data** permission. This role is assigned indirectly using Global Tags, which group students into student groups and assign teachers or administrators as tutors to those groups. A teacher or administrator gains access to a module if there is at least one student in that module who shares a Global Tag with the teacher or administrator. Access to the module is then restricted by the permissions assigned to the PERSONAL TUTOR role. -Although the tutor role includes the **View student data** permission, this permission is limited to only those students within the same tutor group (i.e., those sharing the same Global Tag), unless the same user would have a TEACHER ROLE to the same module with **View student data** permission. This differs from teacher access, where permissions apply to all students within the module. +Although the tutor role includes the **View student data** permission, that permission applies **only** to students within the same tutor group (i.e. those sharing the same Global Tag), unless the same user would have a TEACHER ROLE to the same module with **View student data** permission. This differs from teacher access, where permissions apply to all students within the module. + +**Tutor access** therefore represents indirect, student-scoped access to a module, rather than full module-level teacher access. -Role of this type provides **Tutor** access to the module. +Role of this type provides **Tutor access** to the module. ## Moderator access -Moderator access is currently defined by the presence of the **Moderate student submissions** permission. In the current implementation, moderator access is modelled as a variant of teacher role assignment rather than as a separate access mechanism. As a result, a user may be assigned either teacher access or moderator access to a module, but not both simultaneously. +Moderator access is currently defined by the presence of the **Moderate student submissions** permission. In the current implementation, moderator access is modelled as a variant of teacher role assignment rather than as a separate access mechanism. + +As a result, a user may be assigned **either a “true” teacher role or a moderation-enabled teacher role** for a module, but cannot hold **both role assignments simultaneously**. A moderation-enabled role still grants teacher-level access to the module; however, it replaces any other teacher role assignment rather than layering on top of it. + +This choice affects how roles are currently assigned in the UI. It does not imply that moderation represents an additional teaching responsibility, nor that multiple teacher-role assignments are conceptually required. Any role (typically a CUSTOM role) with this permission enabled grants moderator access to a module. From 317db3bd3400adb281d7ef2f6986e97c095e928d Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Mon, 9 Feb 2026 22:02:31 +0000 Subject: [PATCH 4/6] Significant re-write admin user_access.md --- .../administrators/permissions_example.png | Bin 0 -> 120490 bytes docs/advanced/administrators/user_access.md | 110 +++++------------- docs/advanced/administrators/user_tags.md | 5 + mkdocs.yml | 23 ++-- 4 files changed, 44 insertions(+), 94 deletions(-) create mode 100644 docs/advanced/administrators/permissions_example.png create mode 100644 docs/advanced/administrators/user_tags.md diff --git a/docs/advanced/administrators/permissions_example.png b/docs/advanced/administrators/permissions_example.png new file mode 100644 index 0000000000000000000000000000000000000000..7e2dd3b598168919f72a95c83fd928d370dd018d GIT binary patch literal 120490 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 Q0}}9~qhX+4tLhN;Uqv;w?EnA( literal 0 HcmV?d00001 diff --git a/docs/advanced/administrators/user_access.md b/docs/advanced/administrators/user_access.md index 12ca8f62e..cef65af29 100644 --- a/docs/advanced/administrators/user_access.md +++ b/docs/advanced/administrators/user_access.md @@ -1,121 +1,65 @@ -# Purpose - -This section is intended for administrators configuring access and advanced users supporting access-related workflows. - -It explains: -- the different types of user roles -- how roles are created and configured -- how those roles affect access to modules and functionality - -This documentation focuses on access semantics and configuration rather than providing a full UI walkthrough. - # Base User Roles There are currently 3 base user roles: ## STUDENT -Users with the STUDENT role have access only to student pages. - -## ADMIN - -Users with the ADMIN role have access to all admin pages. They also have contextual access to teacher and student pages, subject to the same module-level access rules that apply to users with the TEACHER base role. +Users with the STUDENT role have access only to student pages. There is only one class or type of STUDENT role, however access to specific modules is subject to enrollment as a student on that module. Enrolment of students is done by a teacher. ## TEACHER -Users with the TEACHER role have access to teacher pages, but only for modules to which they are linked as a teacher, tutor, or moderator. They can also access student pages for those modules. +Users with the TEACHER role have access, in addition to student pages, to teacher pages. This includes, for example, the teacher home page (`/teacher`). Within TEACHER pages, users only have access to modules to which they are linked as a teacher or tutor. -User access to teacher-facing functionality is controlled by a set of permissions. +Access as a _teacher_ requires enrollment as a teacher on the relevant module, which can be done in two different ways: -These permissions currently apply only to TEACHER pages, tabs, menus, and features (such as activities or viewing statistics). +- by teachers on that module with the relevant permissions. +- by ADMIN users in the ADMIN pages. -## Mental model +Access as a _tutor_ to teacher pages of a module is by a link to a student who is enrolled on that module. The link is via a ['global tag'](user_tags.md), which is managed by an ADMIN. -Access to teacher-facing functionality is determined by: +On each module that a user is enrolled as a teacher, they will be assigned a teacher _role_. The number of different roles (such as 'MODULE OWNER' or 'TEACHING ASSISTANT'), and their respective permissions, is configurable by ADMIN users. Each role is defined by which permissions are, or are not, assigned to the role. Permissions include access to pages, tabs, menus, and features (such as enrolling or viewing statistics). -1. The user’s **base role** (ADMIN or TEACHER) -2. How the user is linked to a module: - - as a **teacher** (via a teacher role) - - as a **tutor** (via global tags) - - as a **moderator** (via a role containing moderation permission) -3. The **permissions** associated with that access +Permissions that can be assigned to a teacher role are visible when enrolling a teacher. The pop-up shows which permissions exist, which roles have been configured, and their intersection. An example is below. -These access mechanisms are evaluated independently and may overlap in effect, but they are not interchangeable. +![](permissions_example.png) -# Teacher Roles - -Teacher Roles are permission groupings used to control direct module-level teacher access for users with ADMIN or TEACHER base roles. They do not apply to users with the STUDENT base role. - -The UI currently labels these permission sets as "Teacher Roles," though this terminology may evolve. - -## Teacher access +Permissions are part of the application. Roles are configured by ADMIN users on the app. -There are currently the following types of Teacher Roles: +## ADMIN -### OWNER +Users with the ADMIN role have, in addtion to TEACHER and STUDET privileges, access to all admin pages. There is only one class of ADMIN. -This is a system-defined **role type**. Exactly one role exists with this type. -The administrator can modify the role’s description, but cannot delete the role or change its permissions. +# Teacher Roles -This role is assigned automatically to the user who creates a new module instance, but it may also be reassigned to other users with ADMIN or TEACHER base roles. +There are two fundamental TEACHER roles: OWNER and CUSTOM, with further configurations are possible through the CUSTOM role type, which are managed by ADMIN users. There is also a PERSONAL TUTOR role, which is an independent way to allocate permissions. -The role of this type provides **Teacher** access to the module. +## OWNER -### CUSTOM +A fixed role. ADMIN can modify the role’s name, but cannot delete the role or change its permissions. -Roles of this **role type** can be added, updated, or deleted by administrators. +OWNER is assigned automatically to the user who creates a new module instance, but it may also be reassigned to other users with TEACHER (or ADMIN) base roles. -Administrators (or teachers with relevant permissions) can assign this role to users to grant them access to a module instance as teachers. +## CUSTOM -All roles of this type provide **Teacher** access to the module. +ADMINS can configure an unlimited number of custom roles, which can then be assigned to teachers by ADMIN, and by TEACHERs with relevant enrollment permissions on a given module. -## Tutor access +## PERSONAL TUTOR Tutor access is not a teacher role. It is a separate access mechanism derived from student–tutor relationships. -There is currently the following type of Tutor Roles: - -### PERSONAL TUTOR +ADMIN cannot delete the tutor role but can modify its description and permissions, except for the `View student data` permission. -This is a system-defined **role type**. The system provides a single role of this type. +Tutors are implicitly assigned by linking a teacher to a Global (student) Tag. For example a Global Tag named '2028' could be applied to a cohort of students, and be linked to a teacher who is then a 'tutor'. -The administrator cannot delete this role but can modify its description and permissions, except for the **View student data** permission. +Tutor access to a module for a TEACHER (or ADMIN) requires at least one STUDENT in that module to share a Global Tag with the TEACHER (or ADMIN). Access to the module is then restricted by the permissions assigned to the PERSONAL TUTOR role. -This role is assigned indirectly using Global Tags, which group students into student groups and assign teachers or administrators as tutors to those groups. +Although the tutor role includes the `View student data` permission, that permission applies _only_ to students within the same tutor group (i.e. those sharing the same Global Tag); an exception is if the same user also has a TEACHER ROLE, on the same module, with `View student data` permission. Access to student data for tutors differs from normal TEACHER access, where permissions apply to all students within the module. -A teacher or administrator gains access to a module if there is at least one student in that module who shares a Global Tag with the teacher or administrator. Access to the module is then restricted by the permissions assigned to the PERSONAL TUTOR role. - -Although the tutor role includes the **View student data** permission, that permission applies **only** to students within the same tutor group (i.e. those sharing the same Global Tag), unless the same user would have a TEACHER ROLE to the same module with **View student data** permission. This differs from teacher access, where permissions apply to all students within the module. - -**Tutor access** therefore represents indirect, student-scoped access to a module, rather than full module-level teacher access. - -Role of this type provides **Tutor access** to the module. +Note that a TEACHER can be enrolled on a module with a TEACHER role, and additionally by being linked as a TUTOR. Permissions then combine and are _additive_ (a permission from either role is sufficient for permission to be granted). ## Moderator access -Moderator access is currently defined by the presence of the **Moderate student submissions** permission. In the current implementation, moderator access is modelled as a variant of teacher role assignment rather than as a separate access mechanism. - -As a result, a user may be assigned **either a “true” teacher role or a moderation-enabled teacher role** for a module, but cannot hold **both role assignments simultaneously**. A moderation-enabled role still grants teacher-level access to the module; however, it replaces any other teacher role assignment rather than layering on top of it. - -This choice affects how roles are currently assigned in the UI. It does not imply that moderation represents an additional teaching responsibility, nor that multiple teacher-role assignments are conceptually required. - -Any role (typically a CUSTOM role) with this permission enabled grants moderator access to a module. - -This reflects the current system behaviour and should not be interpreted as a conceptual requirement of the access model. - -## How to assign access to the module - -The ADMIN module instance teachers page allows administrators to grant module access to users with ADMIN or TEACHER base roles by selecting the relevant teacher role. Because the system currently allows assigning only one teacher role per user per module, moderation access is mutually exclusive with other teacher-role-based access. - -In practice, a user must be assigned either: - • a “true” teacher role (with Moderate student submissions disabled), or - • a "moderator" role that includes the Moderate student submissions permission. - -This reflects a limitation of the current role-assignment model rather than an inherent requirement of the access semantics. - -The TEACHER module teachers page allows teachers with the appropriate permissions to grant module access to other users with ADMIN or TEACHER base roles by selecting the relevant teacher role, though they can only assign “true” teacher roles (i.e. roles with Moderate student submissions permission disabled). - ->Note: A detailed description of individual permissions and their effects is maintained in the technical documentation for developers. This page focuses on access concepts and configuration rather than permission-by-permission behaviour. +Moderator features require a TEACHER role to include the `Moderate student submissions` permission. TEACHER roles with these permissions cannot be assigned by other TEACHERs (including OWNERs), but can only be assigned by an ADMIN. ->Note: The administration UI presents teacher roles, tutor access, and moderator access in a single table for configuration convenience. This does not imply that they are equivalent access mechanisms. +Moderators have privileged access to staff-specific comments on MEQ, and this privilege is above that of a module owner. Details available in [../student/MEQ#access-to-meq-data](../../../student/MEQ/#access-to-meq-data). \ No newline at end of file diff --git a/docs/advanced/administrators/user_tags.md b/docs/advanced/administrators/user_tags.md new file mode 100644 index 000000000..4b500355a --- /dev/null +++ b/docs/advanced/administrators/user_tags.md @@ -0,0 +1,5 @@ +Students can be allocated a module tag, which only applies within the relevant module; and/or a global tag, which applies across all modules. + +Tags help filter data analytics and manage user access to student data. + +Docs on applying tags will follow. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 32aac6001..3dafa4ae3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -86,6 +86,7 @@ nav: - Chat Functions Information: "advanced/chat_functions/info.md" - Administrators: - User Access: "advanced/administrators/user_access.md" + - User tags: "advanced/administrators/user_tags.md" # Configuration theme: @@ -148,17 +149,17 @@ plugins: - git-revision-date-localized: fallback_to_build_date: true - macros - - evaldocsloader: - enabled: !ENV [ENABLE_EVALDOCS, true] - functions_announce_endpoint: "https://prod-api.lambdafeedback.com/evaluation-functions/registered" - api_key: - !ENV [ - API_KEY, - "WiOS1vMpQyTuGL06ZJxjG1eZd2P0SPvuVzHpr6zjkTIJ33U2t5O5NWaZboWBv8aV", - ] - dev_section: ["Advanced", "Evaluation Functions", "Deployed Functions"] - user_section: ["Teachers", "Reference", "Evaluation Functions"] - github_token: !ENV [GITHUB_TOKEN, ""] + - evaldocsloader: + enabled: !ENV [ENABLE_EVALDOCS, true] + functions_announce_endpoint: "https://prod-api.lambdafeedback.com/evaluation-functions/registered" + api_key: + !ENV [ + API_KEY, + "WiOS1vMpQyTuGL06ZJxjG1eZd2P0SPvuVzHpr6zjkTIJ33U2t5O5NWaZboWBv8aV", + ] + dev_section: ["Advanced", "Evaluation Functions", "Deployed Functions"] + user_section: ["Teachers", "Reference", "Evaluation Functions"] + github_token: !ENV [GITHUB_TOKEN, ""] # Extra variables, accessible within markdown pages extra: From 5336cf0751b07740505dd25100352685a1058fee Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Mon, 9 Feb 2026 22:06:49 +0000 Subject: [PATCH 5/6] fix mkdocs.yml --- mkdocs.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 3dafa4ae3..2e19750b6 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -149,17 +149,17 @@ plugins: - git-revision-date-localized: fallback_to_build_date: true - macros - - evaldocsloader: - enabled: !ENV [ENABLE_EVALDOCS, true] - functions_announce_endpoint: "https://prod-api.lambdafeedback.com/evaluation-functions/registered" - api_key: - !ENV [ - API_KEY, - "WiOS1vMpQyTuGL06ZJxjG1eZd2P0SPvuVzHpr6zjkTIJ33U2t5O5NWaZboWBv8aV", - ] - dev_section: ["Advanced", "Evaluation Functions", "Deployed Functions"] - user_section: ["Teachers", "Reference", "Evaluation Functions"] - github_token: !ENV [GITHUB_TOKEN, ""] + - evaldocsloader: + enabled: !ENV [ENABLE_EVALDOCS, true] + functions_announce_endpoint: "https://prod-api.lambdafeedback.com/evaluation-functions/registered" + api_key: + !ENV [ + API_KEY, + "WiOS1vMpQyTuGL06ZJxjG1eZd2P0SPvuVzHpr6zjkTIJ33U2t5O5NWaZboWBv8aV", + ] + dev_section: ["Advanced", "Evaluation Functions", "Deployed Functions"] + user_section: ["Teachers", "Reference", "Evaluation Functions"] + github_token: !ENV [GITHUB_TOKEN, ""] # Extra variables, accessible within markdown pages extra: From 4a3cbd5f473d0bbb13398f3f46ff2247ea9bf491 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Mon, 9 Feb 2026 22:11:53 +0000 Subject: [PATCH 6/6] ADMIN user_access tweaks --- docs/advanced/administrators/user_access.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/advanced/administrators/user_access.md b/docs/advanced/administrators/user_access.md index cef65af29..719ee0c9e 100644 --- a/docs/advanced/administrators/user_access.md +++ b/docs/advanced/administrators/user_access.md @@ -44,13 +44,15 @@ OWNER is assigned automatically to the user who creates a new module instance, b ADMINS can configure an unlimited number of custom roles, which can then be assigned to teachers by ADMIN, and by TEACHERs with relevant enrollment permissions on a given module. -## PERSONAL TUTOR +# Personal tutor -Tutor access is not a teacher role. It is a separate access mechanism derived from student–tutor relationships. +Personal tutor is listed in the ADMIN panel with other teacher roles, but it is an independent access mechanism derived from student–tutor relationships (tutor access is not a teacher role). -ADMIN cannot delete the tutor role but can modify its description and permissions, except for the `View student data` permission. +Permissions for personal tutor always includes `View student data`. Other permissions are controlled by ADMIN users and can be enabled or disabled. Whatever permissions are applied, apply to all personal tutors - there is only one configuration of personal tutors. -Tutors are implicitly assigned by linking a teacher to a Global (student) Tag. For example a Global Tag named '2028' could be applied to a cohort of students, and be linked to a teacher who is then a 'tutor'. +### Assigning a personal tutor + +Personal tutors are implicitly assigned by linking a teacher to a Global (student) Tag. For example a Global Tag named '2028' could be applied to a cohort of students, and be linked to a teacher who is then a 'tutor'. Tutor access to a module for a TEACHER (or ADMIN) requires at least one STUDENT in that module to share a Global Tag with the TEACHER (or ADMIN). Access to the module is then restricted by the permissions assigned to the PERSONAL TUTOR role.