Skip to content

Package: course-access

Generated from api/packages/course-access

Source: api/packages/course-access · imported version 0.1.2. The sections after the README are extracted from the code on every docs build.

This package is used to manage access to the course for individual users and user groups.

Additionally, it introduces a mechanism where users can send access enquiries with additional information, and administrators (users with appropriate permissions) can approve or remove them.

  • composer require ulams/course-access
  • php artisan migrate
  • php artisan db:seed --class="Ulams\CourseAccess\Database\Seeders\CourseAccessPermissionSeeder"

The endpoints are defined in swagger

Run ./vendor/bin/phpunit to run tests. Test details codecov

  • CourseAccessEnquiryAdminCreatedEvent - This event is dispatched when a student creates an enquiry for course access.
  • CourseAccessEnquiryStudentCreatedEvent - This event is dispatched to all users who have the EnquiryStatusEnum::APPROVE_COURSE_ACCESS_ENQUIRY permission, allowing them to approve the course access enquiry.

These events are listened to by the ulams/templates-email package, which sends emails based on its own logic. Additionally, notifications are stored in database.

  • CourseAssigned and CourseAccessStarted - These events are dispatched when a user is assigned access to a course. It contains information about the user and the course to which access has been granted.
  • CourseUnassigned and CourseFinished - These events are dispatched when a user is denied access to a course.

The ulams/templates-email package also listens to the above events.

sequenceDiagram

    actor Student
    actor Administrator
    participant FrontApp
    participant AdminPanel
    participant Backend

    Student ->> FrontApp: Send access request
    FrontApp ->> Backend: Forward access request
    Backend ->> Backend: Process access request
    alt Request is valid
        Backend -->> Administrator: Notify about new access request
        Backend -->> Student: Send confirmation
        alt Administrator approves request
            Administrator ->> AdminPanel: Access request approval
            AdminPanel ->> Backend: Approve access request
            Backend ->> Backend: Grant access to course
            Backend ->> Student: Send access confirmation
        else Administrator remove request
            Administrator ->> AdminPanel: Access request remove
            AdminPanel ->> Backend: Remove access request
        else Setting auto_accept_access_request is true
            Backend ->> Backend: Grant access to course
            Backend ->> Student: Send access confirmation
        end
    else Request is invalid
        Backend -->> FrontApp: Send invalid request notification
        FrontApp -->> Student: Forward invalid request notification
    end
    

Permissions are defined in seeder.

Method Path Auth Action
GET /api/admin/courses/{id}/access yes CourseAccessAPIController@list
POST /api/admin/courses/{id}/access/add yes CourseAccessAPIController@add
POST /api/admin/courses/{id}/access/remove yes CourseAccessAPIController@remove
POST /api/admin/courses/{id}/access/set yes CourseAccessAPIController@set
GET /api/admin/course-access-enquiries yes CourseAccessEnquiryApiAdminController@list
DELETE /api/admin/course-access-enquiries/{id} yes CourseAccessEnquiryApiAdminController@delete
POST /api/admin/course-access-enquiries/approve/{id} yes CourseAccessEnquiryApiAdminController@approve
GET /api/course-access-enquiries yes CourseAccessEnquiryApiController@list
POST /api/course-access-enquiries yes CourseAccessEnquiryApiController@create
DELETE /api/course-access-enquiries/{id} yes CourseAccessEnquiryApiController@delete
GET /api/courses/my yes CourseAccessApiStudentController@getMyCourseIds
Permission Seeded for roles Constant
course-access_create-own admin, student CourseAccessPermissionEnum::CREATE_OWN_COURSE_ACCESS_ENQUIRY
course-access_delete-own admin, student CourseAccessPermissionEnum::DELETE_OWN_COURSE_ACCESS_ENQUIRY
course-access_list-own admin, student CourseAccessPermissionEnum::LIST_OWN_COURSE_ACCESS_ENQUIRY
course-access_list admin CourseAccessPermissionEnum::LIST_COURSE_ACCESS_ENQUIRY
course-access_delete admin CourseAccessPermissionEnum::DELETE_COURSE_ACCESS_ENQUIRY
course-access_approve admin CourseAccessPermissionEnum::APPROVE_COURSE_ACCESS_ENQUIRY

Registered with AdministrableConfig::registerConfig (editable in the admin panel under Configuration → Settings).

Key Rules Public Read-only
ulams_course_access.auto_accept_access_request required, string, in: . implode(,, SettingStatusEnum::getValues()) yes
Event Description Notification templates
CourseAccessEnquiryAdminCreatedEvent Email
CourseAccessEnquiryStudentCreatedEvent

None.

None.

None.

None.