/*
 * Login - Auth User
 */
function wc_user_login($request){
	$creds = array();
	$creds['user_login'] = $request["username"];
	$creds['user_password'] =  $request["password"];
	$creds['remember'] = true;
	$user = wp_signon( $creds, false );
	if ( is_wp_error($user) )
		echo $user->get_error_message();

	wp_set_current_user( $user->ID, $user->user_login );
	
	return $user;
}
add_action('rest_api_init', function () { 
	register_rest_route('wp/v2', '/userlogin/', array(
		'methods' => 'POST',
        'callback' => 'wc_user_login', //Function name
    ));
});

Registration API

function wc_add_user($request = null) {
        $username= sanitize_text_field($request['username']);
	$firstname = sanitize_text_field($request['firstname']);
	$lastname = sanitize_text_field($request['lastname']);
	$username = sanitize_text_field($request['username']);
	$email = sanitize_text_field($request['email']);
	$password = sanitize_text_field($request['password']);


	$error = new WP_Error();
	if (empty($username)) {
		$error->add(400, __("Username field 'username' is required.", 'wp-rest-user'), array('status' => 400));
		return $error;
	}
	if (empty($email)) {
		$error->add(401, __("Email field 'email' is required.", 'wp-rest-user'), array('status' => 400));
		return $error;
	}
	if (empty($password)) {
		$error->add(404, __("Password field 'password' is required.", 'wp-rest-user'), array('status' => 400));
		return $error;
	}
	$user_id = username_exists($username);  
	if (!$user_id && email_exists($email) == false) {
		$user_id = wp_create_user($username, $password, $email);

		if (!is_wp_error($user_id)) {
			$user = get_user_by('id', $user_id);
			update_user_meta( $user_id, 'first_name', trim($firstname ) );
			update_user_meta( $user_id, 'last_name', trim( $lastname ) );
			$user->set_role('subscriber');
			if (class_exists('WooCommerce')) {
				$user->set_role('customer');
			}
			$response['code'] = 200;
			$response['user_id'] = $user_id;
		} else {
			return $user_id;
		}
	} else {
		$error->add(406, __("Email already exists, please try 'Reset Password'", 'wp-rest-user'), array('status' => 400));
		return $error;
	}
	return new WP_REST_Response($response, 123);
}

add_action('rest_api_init', function () { 
	register_rest_route('wp/v2', '/register/', array(
		'methods' => 'POST',
        'callback' => 'wc_add_user', //Function name
    ));
});