diff options
Diffstat (limited to 'plugins/jetpack/json-endpoints/jetpack/class.jetpack-json-api-user-create-endpoint.php')
-rw-r--r-- | plugins/jetpack/json-endpoints/jetpack/class.jetpack-json-api-user-create-endpoint.php | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/plugins/jetpack/json-endpoints/jetpack/class.jetpack-json-api-user-create-endpoint.php b/plugins/jetpack/json-endpoints/jetpack/class.jetpack-json-api-user-create-endpoint.php index 07d1c219..bd71249b 100644 --- a/plugins/jetpack/json-endpoints/jetpack/class.jetpack-json-api-user-create-endpoint.php +++ b/plugins/jetpack/json-endpoints/jetpack/class.jetpack-json-api-user-create-endpoint.php @@ -12,6 +12,7 @@ class Jetpack_JSON_API_User_Create_Endpoint extends Jetpack_JSON_API_Endpoint { function validate_input( $object ) { $this->user_data = $this->input(); + if ( empty( $this->user_data ) ) { return new WP_Error( 'input_error', __( 'user_data is required', 'jetpack' ) ); } @@ -26,22 +27,32 @@ class Jetpack_JSON_API_User_Create_Endpoint extends Jetpack_JSON_API_Endpoint { function create_or_get_user() { require_once JETPACK__PLUGIN_DIR . 'modules/sso/class.jetpack-sso-helpers.php'; - // Check for an existing user $user = get_user_by( 'email', $this->user_data['email'] ); + $roles = (array) $this->user_data['roles']; + $role = array_pop( $roles ); + + $query_args = $this->query_args(); + if ( isset( $query_args['invite_accepted'] ) && $query_args['invite_accepted'] ) { + Jetpack_Constants::set_constant( 'JETPACK_INVITE_ACCEPTED', true ); + } if ( ! $user ) { // We modify the input here to mimick the same call structure of the update user endpoint. $this->user_data = (object) $this->user_data; - $roles = (array) $this->user_data->roles; - $this->user_data->role = array_pop( $roles ); - $this->user_data->url = $this->user_data->roles; + $this->user_data->role = $role; + $this->user_data->url = isset( $this->user_data->URL ) ? $this->user_data->URL : ''; $this->user_data->display_name = $this->user_data->name; $this->user_data->description = ''; $user = Jetpack_SSO_Helpers::generate_user( $this->user_data ); } + if ( is_multisite() ) { + add_user_to_blog( get_current_blog_id(), $user->ID, $role ); + } + if ( ! $user ) { + return false; } |