Initial commit

main
Denny Cave 2023-01-21 22:11:01 -06:00
commit 05145b7b5a
7 changed files with 338 additions and 0 deletions

2
.gitattributes vendored 100644
View File

@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto

View File

@ -0,0 +1,3 @@
[Click to login](${response.out})
*(Link will expire in 15 minutes)*

78
instant-login.yaml 100644
View File

@ -0,0 +1,78 @@
type: update
name: Instant Login
description: Login to your WordPress site as an administrator with a single click.
targetNodes:
nodeGroup: cp
onInstall:
cmd [cp]:
- cd /var/www/webroot/ROOT/
- wp package install aaemnnosttv/wp-cli-login-command
- wp login install --yes --activate
setGlobals:
userToLoginAs: 1
actions:
instant_login:
#log: ${placeholders}
cmd [cp]:
- cd /var/www/webroot/ROOT/
- wp login create ${globals.userToLoginAs} --url-only
#- user=$(wp user list --field=user_login --format=csv)
#- wp login create $user --url-only
return:
type: success
message: |
[Click to login](${response.out})
*(Link will expire in 15 minutes)*
save_config:
#empty method to allow userToLoginAs to save
#log: ${placeholders}
# lookup user that was entered
cmd [cp]:
- cd /var/www/webroot/ROOT/
- user=$(wp user get ${settings.userToLoginAs} --field=ID)
# see if number (user ID) returned or not. Return 1 if yes.
- re='^[0-9]+$'
- if ! [[ $user =~ $re ]]; then echo 0; else echo 1; fi
#check if the user was found
# returns ID if so
# returns 'Error: Invalid user ID, email or login: '24342''
if (response.out == 0):
script: |
return {"result": "error", "message": "User not found. Try again."}
else:
- setGlobals:
userToLoginAs: ${settings.userToLoginAs}
- script: |
return {"result": "success", "message": "User saved!"}
settings:
configure:
fields:
- type: string
name: userToLoginAs
caption: User to login as
placeholder: Enter user ID, user email, or user login
buttons:
- caption: Instant Login
loadingText: Generating login...
confirmText: Generate a login link for the configured user? This will log you out of any existing sessions.
action: instant_login
- caption: Configure
action: save_config
settings: configure
# problem - only saves the user name/id/email on initial creation. Since adding custom code to save_config, it will not update with new user value after saving again
# tried to use setGlobals but doesn't seem like that works any better
#SOLUTION: Combine these two options into one button - the button shows the input form, filled out with the username that was previously used. Then upon saving, it checks to see if that's a real user and if so it generates the login for that user.

31
old-manifest.jps 100644
View File

@ -0,0 +1,31 @@
jpsType: update
jpsVersion: '1.7.2'
id: wp-instant-login
name: Instant Login
description: Login to your WordPress site as an administrator with a single click.
baseUrl: https://deploy.mightybox.site/instant-login/
targetNodes:
nodeGroup: cp
onInstall:
cmd [nodes.cp[0]]:
- cd /var/www/webroot/ROOT
- touch newfile.txt
- wp package install aaemnnosttv/wp-cli-login-command
- wp login install --yes --activate
actions:
instant_login:
cmd [cp]:
- cd /var/www/webroot/ROOT
- user=$(wp user list --fields=user_login --format=csv | sed -n '2 p')
- wp login create $user --url-only
return:
type: success
message: Yes!
buttons:
- caption: Instant Login
loadingText: Generating login...
action: instant_login

View File

@ -0,0 +1,100 @@
type: update
name: One-Click Admin
targetNodes:
nodeGroup: cp
onInstall:
cmd [nodes.cp[0]]:
- cd /var/www/webroot/ROOT/wp-content
- mkdir mu-plugins -p
- cd mu-plugins
- wget https://raw.githubusercontent.com/aaemnnosttv/wp-cli-login-command/master/plugin/wp-cli-login-server.php
- cd /var/www/webroot/ROOT
- wp package install aaemnnosttv/wp-cli-login-command
actions:
instantlogin:
cmd [cp]:
- cd /var/www/webroot/ROOT
- wp user list --fields=user_login,user_email --format=json
choose_admin_login:
cmd [cp]:
- cd /var/www/webroot/ROOT
- wp user list --fields=user_login,user_email --format=json
buttons:
- confirmText: Custom confirm text
loadingText: Load text while waiting
action: instantlogin
caption: Instant Login
successText: Configuration saved successfully!
- confirmText: Custom confirm text
loadingText: Load text while waiting
action: choose_admin_login
caption: Choose Admin
successText: Configuration saved successfully!
# onUninstall - remove mu-plugin
# to make a button open a prompt and choose the admin users use a settings page:
# settings:
# main:
# fields:
# - type: text
# caption: Main form
# config:
# fields:
# - type: text
# caption: Custom form from button action
#
# buttons:
# - settings: config
# action: customAction
# caption: Configure
# submitButtonText: Button Text
# logsPath: "/var/lib/jelastic/keys/111"
# old style - copy directly to mu-plugins
- cd /var/www/webroot/ROOT/wp-content
- mkdir mu-plugins -p
- cd mu-plugins
- wget https://raw.githubusercontent.com/aaemnnosttv/wp-cli-login-command/master/plugin/wp-cli-login-server.php
# type: update
# name: Custom buttons
#
# targetNodes:
# nodeGroup: bl
#
# actions:
# - "..."
#
# buttons:
# - confirmText: Custom confirm text
# loadingText: Load text while waiting
# action: "{String}"
# caption: Configure
# successText: Configuration saved successfully!
# href: http://example.com/
#
# type: install
# name: Addon installation
#
# onInstall:
# installAddon:
# id: wp-automatic-login
#
# addons:
# - id: wp-automatic-login
# name: Automatic WP Login
# onInstall:
# createFile [cp]: /var/log/test.log

View File

@ -0,0 +1,47 @@
type: update
name: Load admins
description: Testing grounds for dynamically loading admins from the CP[0] node.
targetNodes:
nodeGroup: cp
settings:
configure:
fields:
- type: string
name: userToLoginAs
caption: User to login as
placeholder: Enter user ID, user email, or user login
default: 1
actions:
save_config:
#empty method to allow userToLoginAs to save
# lookup user that was entered
cmd [cp]:
- cd /var/www/webroot/ROOT/
- user=$(wp user get ${settings.userToLoginAs} --field=ID)
# see if number (user ID) returned or not. Return 1 if yes.
- re='^[0-9]+$'
- if ! [[ $user =~ $re ]]; then echo 0; else echo 1; fi
#check if the user was found
# returns ID if so
# returns 'Error: Invalid user ID, email or login: '24342''
if (response.out == 0):
script: |
return {"result": "error", "message": "User not found. Try again."}
else:
script: |
return {"result": "success", "message": "User saved!"}
buttons:
- caption: Configure
settings: configure
action: save_config
# can't seem to get the field to save unless it's input during admin

View File

@ -0,0 +1,77 @@
type: update
name: Load admins
description: Testing grounds for dynamically loading admins from the CP[0] node.
targetNodes:
nodeGroup: cp
globals:
admin_users: denny
OnInstall:
settings:
userToLoginAs: ${settings.jelastic_email}
settings:
main:
fields:
- type: string
name: userToLoginAs
caption: User to login as
default: ${settings.userToLoginAs}
buttons:
- caption: Configure
settings: main
# settings:
# main:
# fields:
# - type: list
# caption: List
# values:
# one: ${fn.password}
# required: true
# forceSelection: true
-------
# returns user login without header
wp user list --field=user_login --format=csv
can we save a value between addon loads/opens?
Yes - Lets encrypt does it. But how? It always shows the same value for me.
can I just have plain text input field to type email, ID, username you want to login as?
can I create a static placeholder with manually-defined values and even get that to load in "values" for listbox instead of a manaully-defined list inline?
# how to populate list with values:
onBeforeInit: |
var zones = toNative(java.time.ZoneId.getAvailableZoneIds()).sort();
var serverTimeZone = toNative(java.time.ZoneId.systemDefault());
var values = {};
for (var i = 0, n = zones.length; i < n; i++) {
values[zones[i]] = zones[i];
}
return {
result: 0,
settings: {
fields: [{
name: "timeZone",
caption: "TimeZone Name",
type: "list",
required: true,
editable: true,
"default": serverTimeZone,
values: values
}]
}
}