Hello, I need a basic OAuth2 authentication plugin prototype for Matomo (Piwik).
Users must be able to log in using an OAuth2 authentication provider & then be able to do what a regular Matomo user is capable of.
I have the following requirements:
1. The plugin must be compatible with Matomo 3.5.1 (most recent version).
2. You need to follow the documented best practices for creating the plugin: [login to view URL]
3. Unless stated otherwise in the Matomo docs, the plugin code must adhere to the accepted PSR standards: [login to view URL], especially in regard to code formatting, logging, autoloading, etc.
4. You must use [login to view URL] vendor package for implementing the [login to view URL] not develop a custom OAuth2 flow implementation.
5. Please restrict the OAuth2 provider compatibility to [login to view URL] & its web application flow: [login to view URL]
6. All rights (copyright, usage rights, etc.) regarding the plugin are passed over from you to me. You get paid for the time you take for developing the plugin prototype.
7. I will need an invoice from you that carries the following information:
- Name & address of the contractor,
- date of fulfillment,
- relevant tax IDs of any kind (for example VAT ID) IF EXISTING,
- the actual service provided (that would be "Develop an OAuth2 plugin prototype for Matomo"),
- the amount of hours charged & the hourly rate,
- the complete amount charged WITHOUT tax,
- taxes charged (even if 0),
- the complete amount charged WITH tax,
- the currency in which the values are given.
8. I will provide you with an account in my Gitlab installation. The code must be hosted there. There will be issue tickets that must be processed within that Gitlab installation (thus you should be able to use Git & Gitlab).
9. When submitting offers for this assignment, please provide relevant reference projects & please provide your normal working hours (and time zone).
10. This assignment should be completed within 3 weeks after the contract has been awarded.
11. Nothing can be hard-coded in Matomo of course. It is not allowed to change any Matomo file (except config files).
12. After uninstallation of the plugin, Matomo must operate normally (especially regular logins).
13. The plugin must not communicate with any cloud services & must not include any files loaded dynamically from cloud services. The only contact with the "outside world" from Matomo's point of view are the redirects to & from [login to view URL] & the interactions with the users & admin.
The assignment is complete when I can do the following after installing & activating the plugin:
1. Within Matomo: The admin requests the plugin settings & enters the OAuth2 client ID & the OAuth2 client secret from [login to view URL] & saves.
2. A yet unregistered user requests the Matomo login form & opts to log in via [login to view URL] by clicking "Log in via Github" (the user must have registered with [login to view URL] before of course). The user gets directed to [login to view URL] & completes the authentication process & then the app authorization process (only the first time).
3. After [login to view URL] has redirected the user back to Matomo, the user is logged in & is able to do everything a normal Matomo user can do.
4. The user logs out & requests the Matomo login form again & opts to log in via Github.com.
5. The user gets redirected to [login to view URL] & completes the authentication (but not the app authorization because that's been done already).
6. The admin can see that user in the user list.
7. The plugin code is easily comprehensible, all methods have a docblock that explains what the method does.
8. The plugin code is written in PHP & utilizes the full range of PHP 7.2 features where applicable (especially type declarations for method parameters & return values).
Looking forward to reading your bids!