aaemnnosttv / wp-cli-login-command

Log in to WordPress with secure passwordless magic links.
https://aaemnnost.tv/wp-cli-commands/login/
MIT License
292 stars 47 forks source link

Login command fails when installing server plugin as a mu-plugin via Composer #69

Open thunderdw opened 1 year ago

thunderdw commented 1 year ago

Problem

I'd like to install the server plugin via Composer as a mu-plugin. I'm doing that by modifying the installer path for the server plugin in my composer.json, like so:

"installer-paths": {
    "path/to/mu-plugins/{$name}/": [
        "type:wordpress-muplugin",
        "aaemnnosttv/wp-cli-login-server",
    ],

This results in a server plugin PHP file installed inside a subdirectory of the mu-plugins folder located at mu-plugins/wp-cli-login-server/wp-cli-login-server.php.

However, the command only checks for the mu-plugin PHP file at mu-plugins/wp-cli-login-server.php. https://github.com/aaemnnosttv/wp-cli-login-command/blob/ab20aee280de98974ac5b22b635c533d41faf296/src/ServerPlugin.php#L60-L63

Since the command is unable to locate that file, it assumes that the plugin is installed as a normal plugin. So when you attempt to execute a command like wp login as 1, the command fails and you get an error like file_get_contents(/path/to/plugins/wp-cli-login-server/wp-cli-login-server.php): Failed to open stream: No such file or directory

This error happens instead of a message that the server plugin isn't installed because the command doesn't test for the location of the server plugin, but rather the existence of the WP_CLI_Login\WP_CLI_Login_Server class. https://github.com/aaemnnosttv/wp-cli-login-command/blob/ab20aee280de98974ac5b22b635c533d41faf296/src/ServerPlugin.php#L36-L39

Potential fixes

Happy to submit a PR if this makes sense