RoboJackets / jedi

Identity event bus
Apache License 2.0
0 stars 0 forks source link
hacktoberfest

JEDI

JEDI is a service that synchronizes member information from Apiary to other RoboJackets services. This enables new members to quickly and easily get access to the services they need to participate in RoboJackets, and automatically removes access from people who are no longer participating.

It operates completely transparently to the general membership, and most members will never interact with it directly or even know it exists.

Most changes are applied within 5 seconds of the change being saved in Apiary.

Local development

A Dockerfile and docker-compose.yml file are included in this repository. Both are designed for use on Linux hosts; you may need to make adjustments to run on macOS or Windows.

The Dockerfile is intended for production release but can also be used for local development. Run docker compose up --build to build and start the container. A Sanctum token will be printed during container startup. If you make code changes, you will need to stop any existing containers and run docker compose up --build again to rebuild and restart it.

Once the container is started, you can call POST /api/v1/apiary as shown below.

curl --request POST \
  --url http://127.0.0.1:8000/api/v1/apiary \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer [sanctum token]' \
  --header 'Content-Type: application/json' \
  --data '{
    "username": "example3",
    "first_name": "Example",
    "last_name": "Example",
    "is_access_active": false,
    "teams": [],
    "project_manager_of_teams": [],
    "github_username": null,
    "google_account": null,
    "model_class": "example",
    "model_id": 0,
    "model_event": "example",
    "last_attendance_time": null,
    "exists_in_sums": false,
    "clickup_email": null,
    "clickup_id": null,
    "clickup_invite_pending": false
}'

Supported applications and services

The following external services can receive updates from JEDI.

Supported membership changes

This section broadly describes what JEDI can change within other services when events occur.

When a member pays dues or receives an access override

When a member's access expires

This typically happens when a member stops paying dues. Officers may configure a grace period using the Access End Date on packages.

When a member joins or leaves a team

[!NOTE]
Due to a bug in Apiary, team changes made in Nova do not trigger updates. Users with sufficient permissions can force a sync using the Sync Access action available on users.