diff --git a/packages/backend/src/apps/wordpress/actions/create-user/index.js b/packages/backend/src/apps/wordpress/actions/create-user/index.js new file mode 100644 index 00000000..9cec14eb --- /dev/null +++ b/packages/backend/src/apps/wordpress/actions/create-user/index.js @@ -0,0 +1,135 @@ +import defineAction from '../../../../helpers/define-action.js'; +import isEmpty from 'lodash/isEmpty.js'; +import omitBy from 'lodash/omitBy.js'; + +export default defineAction({ + name: 'Create user', + key: 'createUser', + description: 'Creates a new user.', + arguments: [ + { + label: 'Email', + key: 'email', + type: 'string', + required: true, + description: '', + variables: true, + }, + { + label: 'Username', + key: 'username', + type: 'string', + required: true, + description: '', + variables: true, + }, + { + label: 'Password', + key: 'password', + type: 'string', + required: true, + description: '', + variables: true, + }, + { + label: 'First Name', + key: 'firstName', + type: 'string', + required: false, + description: '', + variables: true, + }, + { + label: 'Last Name', + key: 'lastName', + type: 'string', + required: false, + description: '', + variables: true, + }, + { + label: 'Display Name', + key: 'displayName', + type: 'string', + required: false, + description: '', + variables: true, + }, + { + label: 'Nickname', + key: 'nickname', + type: 'string', + required: false, + description: '', + variables: true, + }, + { + label: 'Description', + key: 'description', + type: 'string', + required: false, + description: '', + variables: true, + }, + { + label: 'Website', + key: 'website', + type: 'string', + required: false, + description: '', + variables: true, + }, + { + label: 'Role', + key: 'role', + type: 'dropdown', + required: false, + description: '', + variables: true, + options: [ + { label: 'Administrator', value: 'administrator' }, + { label: 'Author', value: 'author' }, + { label: 'Contributor', value: 'contributor' }, + { label: 'Editor', value: 'editor' }, + { label: 'Subscriber', value: 'subscriber' }, + ], + }, + ], + + async run($) { + const { + email, + username, + password, + firstName, + lastName, + displayName, + nickname, + description, + website, + role, + } = $.step.parameters; + + let body = { + email, + username, + password, + first_name: firstName, + last_name: lastName, + name: displayName, + nickname, + description, + url: website, + }; + + if (role) { + body.roles = [role]; + } + + body = omitBy(body, isEmpty); + + const response = await $.http.post('?rest_route=/wp/v2/users', body); + + $.setActionItem({ raw: response.data }); + }, +}); diff --git a/packages/backend/src/apps/wordpress/actions/index.js b/packages/backend/src/apps/wordpress/actions/index.js index f042211b..843fd079 100644 --- a/packages/backend/src/apps/wordpress/actions/index.js +++ b/packages/backend/src/apps/wordpress/actions/index.js @@ -1,5 +1,6 @@ import createPost from './create-post/index.js'; +import createUser from './create-user/index.js'; import findPost from './find-post/index.js'; import updatePost from './update-post/index.js'; -export default [createPost, findPost, updatePost]; +export default [createPost, createUser, findPost, updatePost]; diff --git a/packages/docs/pages/apps/wordpress/actions.md b/packages/docs/pages/apps/wordpress/actions.md index 1c68b98c..a9b06455 100644 --- a/packages/docs/pages/apps/wordpress/actions.md +++ b/packages/docs/pages/apps/wordpress/actions.md @@ -3,6 +3,8 @@ favicon: /favicons/wordpress.svg items: - name: Create post desc: Creates a new post. + - name: Create user + desc: Creates a new user. - name: Find post desc: Finds a post. - name: Update post