Problem/Motivation
DRD supports a server-side authentication of the remote sites. This is a very powerful feature when you maintain a lot of sites on a platform like Acquia or Platform.sh. Adding additional platforms is well supported by the DRD module.
But currently on the other side in drd_agent those services have been hard-coded at https://git.drupalcode.org/project/drd_agent/-/blob/4.0.x/src/Agent/Acti... . Those lines are supposed to compare information the Remote Site has, with Information the DRD host provided in the request.
I'm working on integrating another DRD PI service now and being able to provide a plugin for the drd_agent part would make the authentication work quite seamless.
Steps to reproduce
Proposed resolution
- Create a Plugin annotation/Plugin manager for DRD PI Authentications
- Make the base action invoke the plugin manager to load the corresponding plugin
- Convert the existing platforms (Acquia, Platform.sh, Pantheon) into Plugins
Remaining tasks
User interface changes
API changes
Data model changes
Issue fork drd_agent-3357098
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #2
szeidler commentedComment #4
szeidler commentedHere's a proof of concept for the plugin based authentication. I couldn't test the services, since I don't have accounts with them, but I just converted them straight forward into the plugin architecture.
I tested the functionality with my own service plugin.
Comment #5
jurgenhaasVery nice implementation! Thank you so much @szeidler
Comment #7
jurgenhaas