Skip to content

schenedx/registrar

Repository files navigation

Registrar service Travis Codecov

This is the prototype to explore the concept of linking an edX learner user with an edX program stored in course discovery. The prototype should prove the concepts below:

  1. Make API call from this repo to LMS and Discovery through DOT JWT
    1. Have viable linkage table between LMS learner and here
    2. Have viable linkage table between Discovery Programs and here
  2. Integrate with SSO module on LMS to facilitate LMS account creation
  3. Explore a generic pending learner/enrollment concept
  4. Provide API to external parties to retrieve the following:
    1. Given a program, which learners are enrolled in it
    2. Given a learner, which program, if any, is the learner enrolled in
    3. Given a learner, return the list of course the learner is enrolled in within the enrolled program
    4. An RESTful API endpoint for uploading enrollment information for a program (Pending Enrollments required)
    5. Can this act as a proxy to pull learner grades and completion data

Using with Docker Devstack

This can be run locally with docker. It uses the devstack_default network. To bring up the application container, memcache container, and DB container, do:

make up

To bring these containers down:

make down

How Authentication Works

Authentication from the Registrar service against LMS or Discovery

  1. Create a registrar_worker user on LMS.
  2. Using the worker user above, setup a Django Oauth Toolkit (DOT) application for Registrar service on LMS. See examples at http://localhost:18000/admin/oauth2_provider/application/
  3. Store the client_key and client_secret created from step above in Registrar service settings
  4. When making API calls into LMS or Discovery service within Registrar, leverage the edx-rest-api-client library https://github.com/edx/edx-rest-api-client/blob/master/edx_rest_api_client/client.py#L88 by providing the client_key and client_secret above

Authentication from External system against Registrar API

  1. Configure the registrar service with the proper value for JWT token authentication. This should be automatically done using the configuration playbook at https://github.com/edx/configuration/blob/master/playbooks/roles/edx_django_service/defaults/main.yml#L158
  2. Create a new worker user for the school's system on LMS
  3. Using the worker user above, setup a Django Oauth Toolkit (DOT) application on LMS. This is done at http://localhost:18000/admin/oauth2_provider/application/
  4. Send the school their client_key and client_secret created from the step above
  5. The school's system need to use the client_key and client_secret above to get auth token from LMS, then use the auth token for API calls against registrar service

License

The code in this repository is licensed under version 3 of the AGPL unless otherwise noted. Please see the LICENSE file for details.

About

registrar prototype

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published