Files
old-new-wiaas/backend/app/plugins/wiaas/includes/class-wiaas-user.php

107 lines
3.0 KiB
PHP

<?php
defined( 'ABSPATH' ) || exit;
/**
* Class Wiaas_User
*/
class Wiaas_User {
public static function init() {
add_action('init', array(__CLASS__, 'load_user_organization'));
add_action('plugins_loaded', array(__CLASS__, 'remove_default_user_groups'), 30);
add_action('woocommerce_rest_insert_customer', array(__CLASS__, 'test_method'), 10, 3);
add_filter('woocommerce_rest_prepare_customer', array(__CLASS__, 'transform_rest_customer'), 10, 3);
add_filter('jwt_auth_token_before_dispatch', array(__CLASS__, 'transform_jwt_token_response'), 10, 2);
}
/**
* Fires after a customer is created or updated via the REST API.
*
* @param WP_User $customer Data used to create the customer.
* @param WP_REST_Request $request Request object.
* @param boolean $creating True when creating customer, false when updating customer.
*/
public static function test_method($customer, $request, $creating){
if (isset($request['phone'])){
update_user_meta( $customer->ID, 'phone', $request['phone'] );
}
if (isset($request['vatCode'])){
update_user_meta( $customer->ID, 'vat_code', $request['vatCode']);
}
if (isset($request['companyName'])){
update_user_meta( $customer->ID, 'company_name', $request['companyName']);
}
}
public static function load_user_organization() {
if (class_exists('WP_User_Taxonomy')) {
require_once dirname( __FILE__ ) . '/user/class-wiaas-user-organization.php';
new Wiaas_User_Organization();
}
}
public static function remove_default_user_groups() {
remove_action( 'init', 'wp_register_default_user_group_taxonomy' );
remove_action( 'init', 'wp_register_default_user_type_taxonomy' );
}
/**
* Apply wiaas custom transformation on retrieved JSON customer object
*
* @param $response
* @param $order
* @param $request
*
* @return mixed
*/
public static function transform_rest_customer($response, $order, $request) {
$data = $response->get_data();
$user_id = $data['id'];
$result = array(
'id' => $user_id,
'idCompany' => 0,
'isCompanyAdmin' => 1,
'mail' => $data['email'],
'name' => $data['first_name'] . ' ' . $data['last_name'],
'phone' => get_user_meta($user_id, 'phone', true),
'companyName' => get_user_meta($user_id, 'company_name', true),
'vatCode' => get_user_meta($user_id, 'vat_code', true),
'billingAddresses' => [],
'profileAddresses' => [],
'userType' => $data['role']
);
return new WP_REST_Response($result);
}
/**
* Apply wiaas custom transformation on JWT token response
*
* @param $data
* @param $user
*
* @return mixed
*/
public static function transform_jwt_token_response($data, $user) {
return new WP_REST_Response(array(
'token' => $data['token'],
'userInfo' => array(
'wiaas_id_user' => $user->ID,
'wiaas_is_company_admin' => 1, //TODO: don't hardcode this
'wiaas_user_full_name' => $user->first_name . ' ' . $user->last_name,
'wiaas_user_type' => $user->roles,
'wiaas_username' => $user->data->user_login
)
));
}
}
Wiaas_User::init();