Skip to content

Add MemberMatters support#3

Open
rechner wants to merge 8 commits into
mainfrom
rechner/membermatters
Open

Add MemberMatters support#3
rechner wants to merge 8 commits into
mainfrom
rechner/membermatters

Conversation

@rechner
Copy link
Copy Markdown
Member

@rechner rechner commented Oct 17, 2025

Currently, all access control decisions at Pawprint are being made using LDAP as our source of truth. Keeping LDAP users synced and turning off access after a user's payment has lapsed is a manual process.

MemberMatters has direct support for access control using a websocket protocol, this PR adds support for emulating a MemberMatters access control device to Doorman.

Doorman will first consult the access list from Member Matters, and can optionally fall-back to querying a card in LDAP.

The access list from MemberMatters is cached locally in the file specified by DOORMAN_MM_DATA_FILE, so even for our instance hosted in the cloud, the doorman instance running locally will continue to work during an internet outage.

Copy link
Copy Markdown
Member

@kataze kataze left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lookin' hot 🔥

I think this will help remove a lot of maintenance overhead now that people are pausing and restarting their memberships all the time. Couple thoughts, nothing crazy.

Comment thread doorman/app.py
Comment thread doorman/app.py Outdated
Comment thread websocket_client.py
Comment on lines +87 to +88
# Not implemented (lol)
pass
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lol

Comment thread websocket_client.py
Co-authored-by: Kataze the Skunk <kataze@fursplosion.com>
rechner added 3 commits May 7, 2026 16:11
- Add doorman/ipc.py with shared threading.Queue
- Push door_access events from Flask on RFID auth success
- Poll queue in websocket client, send door_access to MM server
- Add main.py entrypoint running Flask + WS client in one process
- Update Dockerfile to use main module with WEB_CONCURRENCY=1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants