diff --git a/backend.dockerfile b/backend.dockerfile index b638aa8..a459e4e 100644 --- a/backend.dockerfile +++ b/backend.dockerfile @@ -2,6 +2,8 @@ FROM php:7.0-apache ARG API_URL +ARG WIAAS_CUSTOMER_INTERFACE + ARG MYSQL_DATABASE ARG MYSQL_USER ARG MYSQL_PASSWORD @@ -35,6 +37,8 @@ ENV WP_LOGGED_IN_SALT ${WP_LOGGED_IN_SALT} ENV WP_NONCE_SALT ${WP_NONCE_SALT} ENV WP_JWT_AUTH_SECRET_KEY ${WP_JWT_AUTH_SECRET_KEY} +ENV WIAAS_CUSTOMER_INTERFACE ${WIAAS_CUSTOMER_INTERFACE} + RUN apt-get update && apt-get install -y git unzip gnupg mysql-client sudo COPY docker/php/composer.phar /usr/local/bin/composer diff --git a/backend/app/plugins/wiaas/assets/css/menu.css b/backend/app/plugins/wiaas/assets/css/menu.css new file mode 100644 index 0000000..f9f10a6 --- /dev/null +++ b/backend/app/plugins/wiaas/assets/css/menu.css @@ -0,0 +1,17 @@ +#wpadminbar #wp-admin-bar-wiaas-view-as .ab-icon { + float: none; + margin-left: 10px; + color: rgba(240,245,250,0.7) !important; +} +#wpadminbar #wp-admin-bar-wiaas-view-as .ab-label { + font-weight: bold; +} + + +#wpadminbar #wp-admin-bar-wiaas-view-as a:not(:hover) .ab-icon:before { + color: rgba(240,245,250,0.7) !important; +} + +#createuser .acf-taxonomy-field, #your-profile .acf-taxonomy-field { + width: 25em; +} diff --git a/backend/app/plugins/wiaas/assets/css/package.css b/backend/app/plugins/wiaas/assets/css/package.css index 41596e8..08fe4cc 100644 --- a/backend/app/plugins/wiaas/assets/css/package.css +++ b/backend/app/plugins/wiaas/assets/css/package.css @@ -120,4 +120,12 @@ #wiaas_package_option_groups_list .wiaas_option_group h3 { background-color:#F9F9F9; +} + +#createuser label[for="role"], #createuser label[for="url"], #createuser #role, #createuser #url{ + display: none; +} + +#your-profile label[for="role"], #your-profile label[for="url"],#your-profile #role, #your-profile #url{ + display: none; } \ No newline at end of file diff --git a/backend/app/plugins/wiaas/includes/admin/class-wiaas-admin-organization.php b/backend/app/plugins/wiaas/includes/admin/class-wiaas-admin-organization.php new file mode 100644 index 0000000..b0b58f8 --- /dev/null +++ b/backend/app/plugins/wiaas/includes/admin/class-wiaas-admin-organization.php @@ -0,0 +1,160 @@ +ID); + + if (! empty($organization_id)) { + $organization_roles = wiaas_get_organization_roles($organization_id); + + foreach ($organization_roles as $organization_role) { + $role_list[$organization_role] = translate_user_role( wp_roles()->role_names[ $organization_role ] ); + } + + if (! empty($organization_role)) { + unset($role_list['none']); + } + } + + return $role_list; + } + + public static function manage_users_table_columns( $defaults = array() ) { + + $defaults['role'] = __('Roles', 'wiaas'); + + unset($defaults['posts']); + + return $defaults; + } + + /** + * Adds organization roles switcher menu to admin bar + * + * @param $admin_bar + */ + public static function add_role_switcher_menu($admin_bar) { + if (is_super_admin()) { + $roles = array( 'administrator' ); + } else { + $organization_id = wiaas_get_current_user_organization_id(); + $roles = wiaas_get_organization_roles($organization_id); + } + + $user = wp_get_current_user(); + $current_role = $user->roles[0]; + + // Add menu item. + $admin_bar->add_menu( array( + 'id' => 'wiaas-view-as', + 'parent' => 'top-secondary', + 'title' => '' . + __( 'View as:', 'wiaas' ) . + '' . + ''. + __(translate_user_role( wp_roles()->role_names[ $current_role ] ), 'wiaas') . + '' . + '', + 'href' => false, + 'meta' => array( + 'title' => __( 'View As', 'wiaas' ), + 'tabindex' => '0', + ), + ) ); + + foreach ($roles as $role) { + $role_name = translate_user_role( wp_roles()->role_names[ $role ] ); + + if ($role === $current_role) { + // highlight current role + $title = '' . __( $role_name, 'wiaas' ) . ''; + + $url = false; + + } else if ($role === 'customer') { + // set external link for customer role + $title = '' . __( $role_name, 'wiaas' ) . ''; + $title .= ''; + + $url = WIAAS_CUSTOMER_INTERFACE; + + $target = '_blank'; + + } else { + $title = '' . __( $role_name, 'wiaas' ) . ''; + + $url = wp_nonce_url(admin_url(), 'wiaas-set-role', 'wiaas-set-role-nonce'); + $url = add_query_arg( 'wiaas-role', $role, $url ); + + $target = '_parent'; + } + + $admin_bar->add_menu( array( + 'id' => 'wiaas_'.$role, + 'parent' => 'wiaas-view-as', + 'title' => $title, + 'href' => $url, + 'meta' => array( + 'title' => __( $role_name, 'wiaas' ), + 'target' => $target + ), + ) ); + } + } + + + /** + * + * Process organization role switch request if needed + * + */ + public static function maybe_change_user_role() { + if (! empty($_GET['wiaas-set-role-nonce']) && ! empty($_GET['wiaas-role'])) { + if (wp_verify_nonce($_GET['wiaas-set-role-nonce'], 'wiaas-set-role')) { + $role_name = sanitize_key($_GET['wiaas-role']); + + $role = wp_roles()->get_role($role_name); + + if (! empty($role) && $role_name !== 'customer') { + // get current user + $current_user = wp_get_current_user(); + + update_user_meta($current_user->ID, '_wiaas_current_user_admin_role', $role->name); + + // switch user role + $current_user->set_role($role->name); + } + } + + wp_safe_redirect( admin_url('index.php') ); + exit; + } + } +} + +Wiaas_Admin_Organization::init(); diff --git a/backend/app/plugins/wiaas/includes/class-wiaas-admin.php b/backend/app/plugins/wiaas/includes/class-wiaas-admin.php index 395459b..05c12ca 100644 --- a/backend/app/plugins/wiaas/includes/class-wiaas-admin.php +++ b/backend/app/plugins/wiaas/includes/class-wiaas-admin.php @@ -17,7 +17,17 @@ class Wiaas_Admin { require_once dirname(__FILE__) . '/admin/class-wiaas-admin-order-projects.php'; // Admin documents require_once dirname(__FILE__) . '/admin/class-wiaas-admin-documents.php'; + // Admin organization interface + require_once dirname(__FILE__) . '/admin/class-wiaas-admin-organization.php'; + + add_action( 'admin_enqueue_scripts', array(__CLASS__, 'enqueue_scripts'), 100 ); } + + + public static function enqueue_scripts() { + $plugin_url = untrailingslashit( plugins_url( '/', WIAAS_FILE ) ); + wp_enqueue_style( 'wiaas_admin_menu', $plugin_url . '/assets/css/menu.css' ); + } } Wiaas_Admin::init(); diff --git a/backend/app/plugins/wiaas/includes/class-wiaas-authentication.php b/backend/app/plugins/wiaas/includes/class-wiaas-authentication.php new file mode 100644 index 0000000..45c2045 --- /dev/null +++ b/backend/app/plugins/wiaas/includes/class-wiaas-authentication.php @@ -0,0 +1,200 @@ + +
+
+ ID === 1 || $is_rest_api) { + return $user; + } + + if (empty($_POST['role'])) { + return new WP_Error('error', 'You must selected role to login!'); + } + + // get selected role + $requested_role = sanitize_key($_POST['role']); + + // validate can user have requested role + $result = self::_can_user_have_role($user->ID, $requested_role, false); + + // if user organization has no requested role prevent access + if (is_wp_error($result)) { + return $result; + } + + // remember role for user and continue + update_user_meta($user->ID, '_wiaas_current_user_admin_role', $requested_role); + + return $user; + } + + + /** + * + * Filters user roles retrieval so that selected user role is retrieved for admin panel + * and customer role is retrieved for JSON API request + * + * @param $null + * @param int $user_id + * @param string $meta_key + * @return array|null + */ + public static function maybe_filter_user_roles($null, $user_id, $meta_key) { + + global $wpdb; + + if ($user_id !== 0 && $user_id !== self::SUPER_ADMIN_USER_ID && $meta_key === $wpdb->get_blog_prefix() . 'capabilities') { + + $is_rest_api = strpos($_SERVER['REQUEST_URI'], rest_get_url_prefix()); + + $role = $is_rest_api ? + 'customer' : + get_user_meta($user_id, '_wiaas_current_user_admin_role', true); + + return array( array ( "$role" => true )); + } + + return null; + } + + + + // PRIVATE + + /** + * Determines if user can have requested role based on his organization roles + * + * @param int $user_id + * @param string $user_role + * @param bool $is_rest_api + * @return bool|WP_Error + */ + private static function _can_user_have_role($user_id, $user_role, $is_rest_api) { + // check if role valid for access + if (! wp_roles()->is_role($user_role)) { + return new WP_Error('error', 'Role is not valid!'); + } + + // only customer role can access API + if ($is_rest_api && $user_role !== 'customer') { + return new WP_Error('error', 'No access!'); + } + + // customer role cannot access admin backend + if (! $is_rest_api && $user_role === 'customer') { + return new WP_Error('error', 'No access!'); + } + + // import organization functions (during user authentication it is not yet loaded) + require_once dirname( __FILE__ ) . '/user/wiaas-organization-functions.php'; + + // get user organization + $organization_id = wiaas_get_user_organization_id($user_id); + + // validate if user has organization + if (empty( $organization_id)) { + return new WP_Error('error', 'Account not completed!'); + } + // get organization roles + $roles = wiaas_get_organization_roles($organization_id); + + // validate if user has organization roles + if (!in_array($user_role, $roles)) { + return new WP_Error( 'error', 'Your account is not authorized for requested role. Please contact us for help.' ); + } + + return true; + } +} + +Wiaas_Authentication::init(); diff --git a/backend/app/plugins/wiaas/includes/class-wiaas-db-update.php b/backend/app/plugins/wiaas/includes/class-wiaas-db-update.php index 82fe426..e1a4779 100644 --- a/backend/app/plugins/wiaas/includes/class-wiaas-db-update.php +++ b/backend/app/plugins/wiaas/includes/class-wiaas-db-update.php @@ -13,7 +13,11 @@ class Wiaas_DB_Update { '20180826153509' => 'wiaas_create_broker_access_group', '20180911101010' => 'wiaas_db_setup_exclusive_taxonomies', '20180912101010' => 'wiaas_db_setup_default_cl', - '20181003164100' => 'wiaas_db_setup_customer_capabilities' + '20181003164100' => 'wiaas_db_setup_customer_capabilities', + '201810031644700' => 'wiaas_db_update_create_default_roles', + '201810101644700' => 'wiaas_db_import_aam_role_settings', + '201810111644700' => 'wiaas_db_update_add_organization_info_ui_fields', + '201810121644700' => 'wiaas_db_update_add_user_organization_ui_fields' ); public static function execute() { diff --git a/backend/app/plugins/wiaas/includes/class-wiaas-pricing.php b/backend/app/plugins/wiaas/includes/class-wiaas-pricing.php index 5f63771..2134676 100644 --- a/backend/app/plugins/wiaas/includes/class-wiaas-pricing.php +++ b/backend/app/plugins/wiaas/includes/class-wiaas-pricing.php @@ -157,15 +157,11 @@ class Wiaas_Pricing { * Determines if customer and commercial lead are in the same company * For now this is hardcoded and we have only one CL * - * TODO: This should be changed after customer leads are handled + * TODO: This will be handled in next PR for setting commercial lead prices * @return bool */ private static function _is_customer_same_company_as_cl() { - $current_user = wp_get_current_user(); - $user_organization = Wiaas_User_Organization::get_user_organization($current_user->ID); - $is_same_company_as_cl = $user_organization->name === self::COMMERCIAL_LEAD_NAME; - - return $is_same_company_as_cl; + return false; } /** diff --git a/backend/app/plugins/wiaas/includes/class-wiaas-user.php b/backend/app/plugins/wiaas/includes/class-wiaas-user.php index f61fcb1..24f3bd5 100644 --- a/backend/app/plugins/wiaas/includes/class-wiaas-user.php +++ b/backend/app/plugins/wiaas/includes/class-wiaas-user.php @@ -21,6 +21,7 @@ class Wiaas_User { public static function load_user_organization() { if (class_exists('WP_User_Taxonomy')) { require_once dirname( __FILE__ ) . '/user/class-wiaas-user-organization.php'; + require_once dirname( __FILE__ ) . '/user/wiaas-organization-functions.php'; new Wiaas_User_Organization(); } diff --git a/backend/app/plugins/wiaas/includes/cli/class-wiaas-update-db-command.php b/backend/app/plugins/wiaas/includes/cli/class-wiaas-update-db-command.php index 0de9364..fc7244c 100644 --- a/backend/app/plugins/wiaas/includes/cli/class-wiaas-update-db-command.php +++ b/backend/app/plugins/wiaas/includes/cli/class-wiaas-update-db-command.php @@ -33,7 +33,9 @@ class Wiaas_CLI_Update_DB_Command { $wpdb->hide_errors(); include_once WIAAS_DIR . '/includes/class-wiaas-db-update.php'; - include_once WIAAS_DIR . '/includes/db-updates/wiaas-db-update-functions.php'; + include_once WIAAS_DIR . '/includes/db-updates/wiaas-db-update-general.php'; + include_once WIAAS_DIR . '/includes/db-updates/wiaas-db-update-roles.php'; + include_once WIAAS_DIR . '/includes/db-updates/wiaas-db-update-ui-fields.php'; $pending_db_updates = Wiaas_DB_Update::get_pending_db_updates(); diff --git a/backend/app/plugins/wiaas/includes/db-updates/data/aam-settings.json b/backend/app/plugins/wiaas/includes/db-updates/data/aam-settings.json new file mode 100644 index 0000000..31673fb --- /dev/null +++ b/backend/app/plugins/wiaas/includes/db-updates/data/aam-settings.json @@ -0,0 +1,34 @@ +{ + "version": "5.4.3.2", + "plugin": "advanced-access-manager", + "datetime": "2018-10-10 21:41:44", + "metadata": { + "system": "roles,utilities,configpress", + "roles": "menu,metabox,post,redirect,toolbar", + "users": "menu,metabox,post,redirect,capability,toolbar", + "visitor": "metabox,post,redirect,toolbar", + "default": "menu,metabox,post,redirect,toolbar" + }, + "dataset": { + "_options": { + "_user_roles": "eyJhZG1pbmlzdHJhdG9yIjp7Im5hbWUiOiJBZG1pbmlzdHJhdG9yIiwiY2FwYWJpbGl0aWVzIjp7InN3aXRjaF90aGVtZXMiOnRydWUsImVkaXRfdGhlbWVzIjp0cnVlLCJhY3RpdmF0ZV9wbHVnaW5zIjp0cnVlLCJlZGl0X3BsdWdpbnMiOnRydWUsImVkaXRfdXNlcnMiOnRydWUsImVkaXRfZmlsZXMiOnRydWUsIm1hbmFnZV9vcHRpb25zIjp0cnVlLCJtb2RlcmF0ZV9jb21tZW50cyI6dHJ1ZSwibWFuYWdlX2NhdGVnb3JpZXMiOnRydWUsIm1hbmFnZV9saW5rcyI6dHJ1ZSwidXBsb2FkX2ZpbGVzIjp0cnVlLCJpbXBvcnQiOnRydWUsInVuZmlsdGVyZWRfaHRtbCI6dHJ1ZSwiZWRpdF9wb3N0cyI6dHJ1ZSwiZWRpdF9vdGhlcnNfcG9zdHMiOnRydWUsImVkaXRfcHVibGlzaGVkX3Bvc3RzIjp0cnVlLCJwdWJsaXNoX3Bvc3RzIjp0cnVlLCJlZGl0X3BhZ2VzIjp0cnVlLCJyZWFkIjp0cnVlLCJsZXZlbF8xMCI6dHJ1ZSwibGV2ZWxfOSI6dHJ1ZSwibGV2ZWxfOCI6dHJ1ZSwibGV2ZWxfNyI6dHJ1ZSwibGV2ZWxfNiI6dHJ1ZSwibGV2ZWxfNSI6dHJ1ZSwibGV2ZWxfNCI6dHJ1ZSwibGV2ZWxfMyI6dHJ1ZSwibGV2ZWxfMiI6dHJ1ZSwibGV2ZWxfMSI6dHJ1ZSwibGV2ZWxfMCI6dHJ1ZSwiZWRpdF9vdGhlcnNfcGFnZXMiOnRydWUsImVkaXRfcHVibGlzaGVkX3BhZ2VzIjp0cnVlLCJwdWJsaXNoX3BhZ2VzIjp0cnVlLCJkZWxldGVfcGFnZXMiOnRydWUsImRlbGV0ZV9vdGhlcnNfcGFnZXMiOnRydWUsImRlbGV0ZV9wdWJsaXNoZWRfcGFnZXMiOnRydWUsImRlbGV0ZV9wb3N0cyI6dHJ1ZSwiZGVsZXRlX290aGVyc19wb3N0cyI6dHJ1ZSwiZGVsZXRlX3B1Ymxpc2hlZF9wb3N0cyI6dHJ1ZSwiZGVsZXRlX3ByaXZhdGVfcG9zdHMiOnRydWUsImVkaXRfcHJpdmF0ZV9wb3N0cyI6dHJ1ZSwicmVhZF9wcml2YXRlX3Bvc3RzIjp0cnVlLCJkZWxldGVfcHJpdmF0ZV9wYWdlcyI6dHJ1ZSwiZWRpdF9wcml2YXRlX3BhZ2VzIjp0cnVlLCJyZWFkX3ByaXZhdGVfcGFnZXMiOnRydWUsImRlbGV0ZV91c2VycyI6dHJ1ZSwiY3JlYXRlX3VzZXJzIjp0cnVlLCJ1bmZpbHRlcmVkX3VwbG9hZCI6dHJ1ZSwiZWRpdF9kYXNoYm9hcmQiOnRydWUsInVwZGF0ZV9wbHVnaW5zIjp0cnVlLCJkZWxldGVfcGx1Z2lucyI6dHJ1ZSwiaW5zdGFsbF9wbHVnaW5zIjp0cnVlLCJ1cGRhdGVfdGhlbWVzIjp0cnVlLCJpbnN0YWxsX3RoZW1lcyI6dHJ1ZSwidXBkYXRlX2NvcmUiOnRydWUsImxpc3RfdXNlcnMiOnRydWUsInJlbW92ZV91c2VycyI6dHJ1ZSwicHJvbW90ZV91c2VycyI6ZmFsc2UsImVkaXRfdGhlbWVfb3B0aW9ucyI6dHJ1ZSwiZGVsZXRlX3RoZW1lcyI6dHJ1ZSwiZXhwb3J0Ijp0cnVlLCJtYW5hZ2Vfd29vY29tbWVyY2UiOnRydWUsInZpZXdfd29vY29tbWVyY2VfcmVwb3J0cyI6dHJ1ZSwiZWRpdF9wcm9kdWN0Ijp0cnVlLCJyZWFkX3Byb2R1Y3QiOnRydWUsImRlbGV0ZV9wcm9kdWN0Ijp0cnVlLCJlZGl0X3Byb2R1Y3RzIjp0cnVlLCJlZGl0X290aGVyc19wcm9kdWN0cyI6dHJ1ZSwicHVibGlzaF9wcm9kdWN0cyI6dHJ1ZSwicmVhZF9wcml2YXRlX3Byb2R1Y3RzIjp0cnVlLCJkZWxldGVfcHJvZHVjdHMiOnRydWUsImRlbGV0ZV9wcml2YXRlX3Byb2R1Y3RzIjp0cnVlLCJkZWxldGVfcHVibGlzaGVkX3Byb2R1Y3RzIjp0cnVlLCJkZWxldGVfb3RoZXJzX3Byb2R1Y3RzIjp0cnVlLCJlZGl0X3ByaXZhdGVfcHJvZHVjdHMiOnRydWUsImVkaXRfcHVibGlzaGVkX3Byb2R1Y3RzIjp0cnVlLCJtYW5hZ2VfcHJvZHVjdF90ZXJtcyI6dHJ1ZSwiZWRpdF9wcm9kdWN0X3Rlcm1zIjp0cnVlLCJkZWxldGVfcHJvZHVjdF90ZXJtcyI6dHJ1ZSwiYXNzaWduX3Byb2R1Y3RfdGVybXMiOnRydWUsImVkaXRfc2hvcF9vcmRlciI6dHJ1ZSwicmVhZF9zaG9wX29yZGVyIjp0cnVlLCJkZWxldGVfc2hvcF9vcmRlciI6dHJ1ZSwiZWRpdF9zaG9wX29yZGVycyI6dHJ1ZSwiZWRpdF9vdGhlcnNfc2hvcF9vcmRlcnMiOnRydWUsInB1Ymxpc2hfc2hvcF9vcmRlcnMiOnRydWUsInJlYWRfcHJpdmF0ZV9zaG9wX29yZGVycyI6dHJ1ZSwiZGVsZXRlX3Nob3Bfb3JkZXJzIjp0cnVlLCJkZWxldGVfcHJpdmF0ZV9zaG9wX29yZGVycyI6dHJ1ZSwiZGVsZXRlX3B1Ymxpc2hlZF9zaG9wX29yZGVycyI6dHJ1ZSwiZGVsZXRlX290aGVyc19zaG9wX29yZGVycyI6dHJ1ZSwiZWRpdF9wcml2YXRlX3Nob3Bfb3JkZXJzIjp0cnVlLCJlZGl0X3B1Ymxpc2hlZF9zaG9wX29yZGVycyI6dHJ1ZSwibWFuYWdlX3Nob3Bfb3JkZXJfdGVybXMiOnRydWUsImVkaXRfc2hvcF9vcmRlcl90ZXJtcyI6dHJ1ZSwiZGVsZXRlX3Nob3Bfb3JkZXJfdGVybXMiOnRydWUsImFzc2lnbl9zaG9wX29yZGVyX3Rlcm1zIjp0cnVlLCJlZGl0X3Nob3BfY291cG9uIjp0cnVlLCJyZWFkX3Nob3BfY291cG9uIjp0cnVlLCJkZWxldGVfc2hvcF9jb3Vwb24iOnRydWUsImVkaXRfc2hvcF9jb3Vwb25zIjp0cnVlLCJlZGl0X290aGVyc19zaG9wX2NvdXBvbnMiOnRydWUsInB1Ymxpc2hfc2hvcF9jb3Vwb25zIjp0cnVlLCJyZWFkX3ByaXZhdGVfc2hvcF9jb3Vwb25zIjp0cnVlLCJkZWxldGVfc2hvcF9jb3Vwb25zIjp0cnVlLCJkZWxldGVfcHJpdmF0ZV9zaG9wX2NvdXBvbnMiOnRydWUsImRlbGV0ZV9wdWJsaXNoZWRfc2hvcF9jb3Vwb25zIjp0cnVlLCJkZWxldGVfb3RoZXJzX3Nob3BfY291cG9ucyI6dHJ1ZSwiZWRpdF9wcml2YXRlX3Nob3BfY291cG9ucyI6dHJ1ZSwiZWRpdF9wdWJsaXNoZWRfc2hvcF9jb3Vwb25zIjp0cnVlLCJtYW5hZ2Vfc2hvcF9jb3Vwb25fdGVybXMiOnRydWUsImVkaXRfc2hvcF9jb3Vwb25fdGVybXMiOnRydWUsImRlbGV0ZV9zaG9wX2NvdXBvbl90ZXJtcyI6dHJ1ZSwiYXNzaWduX3Nob3BfY291cG9uX3Rlcm1zIjp0cnVlLCJncm91cHNfYWNjZXNzIjp0cnVlLCJncm91cHNfYWRtaW5fZ3JvdXBzIjp0cnVlLCJncm91cHNfYWRtaW5fb3B0aW9ucyI6dHJ1ZSwiZ3JvdXBzX3Jlc3RyaWN0X2FjY2VzcyI6dHJ1ZSwibWFuYWdlX2NhcGFiaWxpdGllcyI6dHJ1ZSwid3BjZl9jdXN0b21fcG9zdF90eXBlX3ZpZXciOnRydWUsIndwY2ZfY3VzdG9tX3Bvc3RfdHlwZV9lZGl0Ijp0cnVlLCJ3cGNmX2N1c3RvbV9wb3N0X3R5cGVfZWRpdF9vdGhlcnMiOnRydWUsIndwY2ZfY3VzdG9tX3RheG9ub215X3ZpZXciOnRydWUsIndwY2ZfY3VzdG9tX3RheG9ub215X2VkaXQiOnRydWUsIndwY2ZfY3VzdG9tX3RheG9ub215X2VkaXRfb3RoZXJzIjp0cnVlLCJ3cGNmX2N1c3RvbV9maWVsZF92aWV3Ijp0cnVlLCJ3cGNmX2N1c3RvbV9maWVsZF9lZGl0Ijp0cnVlLCJ3cGNmX2N1c3RvbV9maWVsZF9lZGl0X290aGVycyI6dHJ1ZSwid3BjZl91c2VyX21ldGFfZmllbGRfdmlldyI6dHJ1ZSwid3BjZl91c2VyX21ldGFfZmllbGRfZWRpdCI6dHJ1ZSwid3BjZl91c2VyX21ldGFfZmllbGRfZWRpdF9vdGhlcnMiOnRydWUsImVkaXRfd2lhYXNfZG9jIjp0cnVlLCJyZWFkX3dpYWFzX2RvYyI6dHJ1ZSwiZGVsZXRlX3dpYWFzX2RvYyI6dHJ1ZSwiZWRpdF93aWFhc19kb2NzIjp0cnVlLCJlZGl0X290aGVyc193aWFhc19kb2NzIjp0cnVlLCJwdWJsaXNoX3dpYWFzX2RvY3MiOnRydWUsInJlYWRfcHJpdmF0ZV93aWFhc19kb2NzIjp0cnVlLCJkZWxldGVfd2lhYXNfZG9jcyI6dHJ1ZSwiZGVsZXRlX3ByaXZhdGVfd2lhYXNfZG9jcyI6dHJ1ZSwiZGVsZXRlX3B1Ymxpc2hlZF93aWFhc19kb2NzIjp0cnVlLCJkZWxldGVfb3RoZXJzX3dpYWFzX2RvY3MiOnRydWUsImVkaXRfcHJpdmF0ZV93aWFhc19kb2NzIjp0cnVlLCJlZGl0X3B1Ymxpc2hlZF93aWFhc19kb2NzIjp0cnVlLCJtYW5hZ2Vfd2lhYXNfZG9jX3Rlcm1zIjp0cnVlLCJlZGl0X3dpYWFzX2RvY190ZXJtcyI6dHJ1ZSwiZGVsZXRlX3dpYWFzX2RvY190ZXJtcyI6dHJ1ZSwiYXNzaWduX3dpYWFzX2RvY190ZXJtcyI6dHJ1ZSwidmlld19hZG1pbl9kYXNoYm9hcmQiOnRydWV9fSwiY3VzdG9tZXIiOnsibmFtZSI6IkN1c3RvbWVyIiwiY2FwYWJpbGl0aWVzIjp7InJlYWQiOnRydWUsInJlYWRfcHJpdmF0ZV9zaG9wX29yZGVycyI6dHJ1ZSwicmVhZF9wcml2YXRlX3Byb2R1Y3RzIjp0cnVlLCJyZWFkX3Nob3Bfb3JkZXIiOnRydWUsInB1Ymxpc2hfc2hvcF9vcmRlcnMiOnRydWUsImxpc3RfdXNlcnMiOnRydWUsImVkaXRfdXNlcnMiOnRydWV9fSwiY29tbWVyY2lhbF9sZWFkIjp7Im5hbWUiOiJDb21tZXJjaWFsIExlYWQiLCJjYXBhYmlsaXRpZXMiOnsicmVhZCI6dHJ1ZSwiZWRpdF9wb3N0cyI6ZmFsc2UsImVkaXRfb3RoZXJzX3Bvc3RzIjpmYWxzZSwicHVibGlzaF9wb3N0cyI6ZmFsc2UsImVkaXRfcHVibGlzaGVkX3Bvc3RzIjpmYWxzZSwiZWRpdF9wcml2YXRlX3Bvc3RzIjpmYWxzZSwibGV2ZWxfMCI6dHJ1ZSwiZWRpdF93aWFhc19kb2MiOnRydWUsInJlYWRfd2lhYXNfZG9jIjp0cnVlLCJkZWxldGVfd2lhYXNfZG9jIjp0cnVlLCJlZGl0X3dpYWFzX2RvY3MiOnRydWUsImVkaXRfb3RoZXJzX3dpYWFzX2RvY3MiOnRydWUsInB1Ymxpc2hfd2lhYXNfZG9jcyI6dHJ1ZSwicmVhZF9wcml2YXRlX3dpYWFzX2RvY3MiOnRydWUsImRlbGV0ZV93aWFhc19kb2NzIjp0cnVlLCJkZWxldGVfcHJpdmF0ZV93aWFhc19kb2NzIjp0cnVlLCJkZWxldGVfcHVibGlzaGVkX3dpYWFzX2RvY3MiOnRydWUsImRlbGV0ZV9vdGhlcnNfd2lhYXNfZG9jcyI6dHJ1ZSwiZWRpdF9wcml2YXRlX3dpYWFzX2RvY3MiOnRydWUsImVkaXRfcHVibGlzaGVkX3dpYWFzX2RvY3MiOnRydWUsIm1hbmFnZV93aWFhc19kb2NfdGVybXMiOnRydWUsImVkaXRfd2lhYXNfZG9jX3Rlcm1zIjp0cnVlLCJkZWxldGVfd2lhYXNfZG9jX3Rlcm1zIjp0cnVlLCJhc3NpZ25fd2lhYXNfZG9jX3Rlcm1zIjp0cnVlLCJ2aWV3X2FkbWluX2Rhc2hib2FyZCI6dHJ1ZSwidXBsb2FkX2ZpbGVzIjp0cnVlfX0sInN1cHBsaWVyIjp7Im5hbWUiOiJTdXBwbGllciIsImNhcGFiaWxpdGllcyI6eyJyZWFkIjp0cnVlLCJ2aWV3X2FkbWluX2Rhc2hib2FyZCI6dHJ1ZX19LCJ1c2VyIjp7Im5hbWUiOiJ1c2VyIiwiY2FwYWJpbGl0aWVzIjp7InJlYWQiOnRydWV9fX0=", + "aam-utilities": "{\"core.settings.editCapabilities\":\"1\",\"core.settings.getStarted\":\"0\",\"ui.settings.renderAccessActionLink\":\"0\",\"core.settings.apiAccessControl\":\"0\",\"core.settings.jwtAuthentication\":\"0\",\"core.settings.restful\":\"1\",\"core.settings.secureLogin\":\"0\",\"core.settings.xmlrpc\":\"0\",\"ui.settings.renderAccessMetabox\":\"0\",\"core.settings.extensionSupport\":\"0\",\"core.settings.cron\":\"0\",\"frontend.404redirect.type\":\"callback\"}", + "aam-configpress": "W2FhbV0KZmVhdHVyZS5leHBvcnQuc3lzdGVtID0gInJvbGVzLHV0aWxpdGllcyxjb25maWdwcmVzcyIKZmVhdHVyZS5leHBvcnQucm9sZXMgPSAibWVudSxtZXRhYm94LHBvc3QscmVkaXJlY3QsdG9vbGJhciIKZmVhdHVyZS5leHBvcnQudXNlcnMgPSAibWVudSxtZXRhYm94LHBvc3QscmVkaXJlY3QsY2FwYWJpbGl0eSx0b29sYmFyIgpmZWF0dXJlLmV4cG9ydC52aXNpdG9yID0gIm1ldGFib3gscG9zdCxyZWRpcmVjdCx0b29sYmFyIgpmZWF0dXJlLmV4cG9ydC5kZWZhdWx0ID0gIm1lbnUsbWV0YWJveCxwb3N0LHJlZGlyZWN0LHRvb2xiYXIi", + "aam_menu_role_administrator": "a:19:{s:13:\"menu-edit.php\";s:1:\"1\";s:8:\"edit.php\";s:1:\"1\";s:12:\"post-new.php\";s:1:\"1\";s:31:\"edit-tags.php?taxonomy=category\";s:1:\"1\";s:31:\"edit-tags.php?taxonomy=post_tag\";s:1:\"1\";s:15:\"update-core.php\";s:1:\"1\";s:15:\"menu-upload.php\";s:1:\"0\";s:10:\"upload.php\";s:1:\"0\";s:13:\"media-new.php\";s:1:\"0\";s:22:\"menu-edit-comments.php\";s:1:\"1\";s:16:\"menu-plugins.php\";s:1:\"0\";s:11:\"plugins.php\";s:1:\"0\";s:18:\"plugin-install.php\";s:1:\"0\";s:15:\"menu-themes.php\";s:1:\"1\";s:10:\"themes.php\";s:1:\"1\";s:11:\"widgets.php\";s:1:\"1\";s:13:\"nav-menus.php\";s:1:\"1\";s:13:\"customize.php\";s:1:\"1\";s:13:\"custom-header\";s:1:\"1\";}", + "aam_menu_role_commercial_lead": "a:6:{s:14:\"menu-tools.php\";s:1:\"1\";s:9:\"tools.php\";s:1:\"1\";s:13:\"menu-edit.php\";s:1:\"1\";s:8:\"edit.php\";s:1:\"1\";s:12:\"post-new.php\";s:1:\"1\";s:22:\"menu-edit-comments.php\";s:1:\"1\";}", + "aam_metabox_role_administrator": "a:6:{s:4:\"post\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:10:\"shop_order\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:9:\"wiaas_doc\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:11:\"shop_coupon\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:7:\"product\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:4:\"page\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}}", + "aam_metabox_role_commercial_lead": "a:7:{s:4:\"post\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:4:\"page\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:7:\"product\";a:2:{s:19:\"aam-acceess-manager\";s:1:\"1\";s:10:\"postcustom\";s:1:\"1\";}s:10:\"shop_order\";a:2:{s:19:\"aam-acceess-manager\";s:1:\"1\";s:10:\"postcustom\";s:1:\"1\";}s:11:\"shop_coupon\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:9:\"wiaas_doc\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:9:\"dashboard\";a:7:{s:21:\"dashboard_quick_press\";s:1:\"1\";s:17:\"dashboard_primary\";s:1:\"1\";s:18:\"rg_forms_dashboard\";s:1:\"1\";s:19:\"dashboard_right_now\";s:1:\"1\";s:28:\"woocommerce_dashboard_status\";s:1:\"1\";s:36:\"woocommerce_dashboard_recent_reviews\";s:1:\"1\";s:18:\"dashboard_activity\";s:1:\"1\";}}", + "aam_metabox_role_supplier": "a:7:{s:4:\"post\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:4:\"page\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:7:\"product\";a:2:{s:19:\"aam-acceess-manager\";s:1:\"1\";s:10:\"postcustom\";s:1:\"1\";}s:10:\"shop_order\";a:2:{s:19:\"aam-acceess-manager\";s:1:\"1\";s:10:\"postcustom\";s:1:\"1\";}s:11:\"shop_coupon\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:9:\"wiaas_doc\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:9:\"dashboard\";a:7:{s:21:\"dashboard_quick_press\";s:1:\"1\";s:17:\"dashboard_primary\";s:1:\"1\";s:18:\"rg_forms_dashboard\";s:1:\"1\";s:19:\"dashboard_right_now\";s:1:\"1\";s:28:\"woocommerce_dashboard_status\";s:1:\"1\";s:36:\"woocommerce_dashboard_recent_reviews\";s:1:\"1\";s:18:\"dashboard_activity\";s:1:\"1\";}}", + "aam_redirect_role_administrator": "a:4:{s:21:\"backend.redirect.type\";s:7:\"default\";s:22:\"frontend.redirect.type\";s:7:\"default\";s:25:\"backend.redirect.callback\";s:23:\"wiaas_redirect_to_login\";s:26:\"frontend.redirect.callback\";s:23:\"wiaas_redirect_to_login\";}", + "aam_redirect_role_user": "a:4:{s:21:\"backend.redirect.type\";s:8:\"callback\";s:22:\"frontend.redirect.type\";s:8:\"callback\";s:26:\"frontend.redirect.callback\";s:23:\"wiaas_redirect_to_login\";s:25:\"backend.redirect.callback\";s:23:\"wiaas_redirect_to_login\";}", + "aam_loginredirect_role_administrator": "a:1:{s:19:\"login.redirect.type\";s:7:\"default\";}", + "aam_loginredirect_role_supplier": "a:2:{s:19:\"login.redirect.type\";s:8:\"callback\";s:23:\"login.redirect.callback\";s:9:\"admin_url\";}", + "aam_toolbar_role_administrator": "a:21:{s:5:\"about\";s:1:\"1\";s:15:\"toolbar-wp-logo\";s:1:\"1\";s:5:\"wporg\";s:1:\"1\";s:13:\"documentation\";s:1:\"1\";s:14:\"support-forums\";s:1:\"1\";s:8:\"feedback\";s:1:\"1\";s:17:\"toolbar-site-name\";s:1:\"0\";s:9:\"view-site\";s:1:\"0\";s:10:\"view-store\";s:1:\"1\";s:15:\"toolbar-updates\";s:1:\"1\";s:16:\"toolbar-comments\";s:1:\"1\";s:19:\"toolbar-new-content\";s:1:\"1\";s:8:\"new-post\";s:1:\"1\";s:9:\"new-media\";s:1:\"1\";s:8:\"new-page\";s:1:\"1\";s:11:\"new-product\";s:1:\"1\";s:14:\"new-shop_order\";s:1:\"1\";s:15:\"new-shop_coupon\";s:1:\"1\";s:13:\"new-wiaas_doc\";s:1:\"1\";s:8:\"new-user\";s:1:\"1\";s:21:\"gravityforms-new-form\";s:1:\"1\";}", + "aam_visitor_metabox": "a:7:{s:4:\"post\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:4:\"page\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:7:\"product\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:10:\"shop_order\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:11:\"shop_coupon\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:9:\"wiaas_doc\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:7:\"widgets\";a:34:{s:23:\"WC_Widget_Rating_Filter\";s:1:\"1\";s:18:\"WC_Widget_Products\";s:1:\"1\";s:28:\"WC_Widget_Top_Rated_Products\";s:1:\"1\";s:24:\"WC_Widget_Product_Search\";s:1:\"1\";s:22:\"WC_Widget_Price_Filter\";s:1:\"1\";s:29:\"WC_Widget_Layered_Nav_Filters\";s:1:\"1\";s:19:\"WCJ_Widget_Selector\";s:1:\"1\";s:27:\"WCJ_Widget_Country_Switcher\";s:1:\"1\";s:8:\"GFWidget\";s:1:\"1\";s:18:\"WP_Nav_Menu_Widget\";s:1:\"1\";s:13:\"WP_Widget_RSS\";s:1:\"1\";s:22:\"WP_Widget_Recent_Posts\";s:1:\"1\";s:14:\"WP_Widget_Text\";s:1:\"1\";s:14:\"WP_Widget_Meta\";s:1:\"1\";s:23:\"WP_Widget_Media_Gallery\";s:1:\"1\";s:21:\"WP_Widget_Media_Audio\";s:1:\"1\";s:18:\"WP_Widget_Calendar\";s:1:\"1\";s:24:\"WC_Widget_Recent_Reviews\";s:1:\"1\";s:25:\"WC_Widget_Recently_Viewed\";s:1:\"1\";s:27:\"WC_Widget_Product_Tag_Cloud\";s:1:\"1\";s:28:\"WC_Widget_Product_Categories\";s:1:\"1\";s:21:\"WC_Widget_Layered_Nav\";s:1:\"1\";s:14:\"WC_Widget_Cart\";s:1:\"1\";s:32:\"WCJ_Widget_Left_to_Free_Shipping\";s:1:\"1\";s:24:\"WCJ_Widget_Multicurrency\";s:1:\"1\";s:21:\"WP_Widget_Custom_HTML\";s:1:\"1\";s:19:\"WP_Widget_Tag_Cloud\";s:1:\"1\";s:25:\"WP_Widget_Recent_Comments\";s:1:\"1\";s:20:\"WP_Widget_Categories\";s:1:\"1\";s:16:\"WP_Widget_Search\";s:1:\"1\";s:21:\"WP_Widget_Media_Video\";s:1:\"1\";s:21:\"WP_Widget_Media_Image\";s:1:\"1\";s:18:\"WP_Widget_Archives\";s:1:\"1\";s:15:\"WP_Widget_Pages\";s:1:\"1\";}}", + "aam_menu_default": "a:6:{s:13:\"menu-edit.php\";s:1:\"1\";s:8:\"edit.php\";s:1:\"1\";s:12:\"post-new.php\";s:1:\"1\";s:31:\"edit-tags.php?taxonomy=category\";s:1:\"1\";s:31:\"edit-tags.php?taxonomy=post_tag\";s:1:\"1\";s:15:\"update-core.php\";s:1:\"1\";}", + "aam_metabox_default": "a:7:{s:4:\"post\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:4:\"page\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:7:\"product\";a:2:{s:19:\"aam-acceess-manager\";s:1:\"1\";s:10:\"postcustom\";s:1:\"1\";}s:10:\"shop_order\";a:2:{s:19:\"aam-acceess-manager\";s:1:\"1\";s:10:\"postcustom\";s:1:\"1\";}s:11:\"shop_coupon\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:9:\"wiaas_doc\";a:1:{s:19:\"aam-acceess-manager\";s:1:\"1\";}s:9:\"dashboard\";a:5:{s:21:\"dashboard_quick_press\";s:1:\"1\";s:17:\"dashboard_primary\";s:1:\"1\";s:18:\"rg_forms_dashboard\";s:1:\"1\";s:19:\"dashboard_right_now\";s:1:\"1\";s:28:\"woocommerce_dashboard_status\";s:1:\"1\";}}", + "aam_redirect_default": "a:4:{s:21:\"backend.redirect.type\";s:8:\"callback\";s:22:\"frontend.redirect.type\";s:8:\"callback\";s:26:\"frontend.redirect.callback\";s:23:\"wiaas_redirect_to_login\";s:25:\"backend.redirect.callback\";s:23:\"wiaas_redirect_to_login\";}", + "aam_toolbar_default": "a:21:{s:5:\"about\";s:1:\"1\";s:15:\"toolbar-wp-logo\";s:1:\"1\";s:5:\"wporg\";s:1:\"1\";s:13:\"documentation\";s:1:\"1\";s:14:\"support-forums\";s:1:\"1\";s:8:\"feedback\";s:1:\"1\";s:17:\"toolbar-site-name\";s:1:\"0\";s:9:\"view-site\";s:1:\"1\";s:10:\"view-store\";s:1:\"1\";s:15:\"toolbar-updates\";s:1:\"1\";s:16:\"toolbar-comments\";s:1:\"1\";s:19:\"toolbar-new-content\";s:1:\"1\";s:8:\"new-post\";s:1:\"1\";s:9:\"new-media\";s:1:\"1\";s:8:\"new-page\";s:1:\"1\";s:11:\"new-product\";s:1:\"1\";s:14:\"new-shop_order\";s:1:\"1\";s:15:\"new-shop_coupon\";s:1:\"1\";s:13:\"new-wiaas_doc\";s:1:\"1\";s:8:\"new-user\";s:1:\"1\";s:21:\"gravityforms-new-form\";s:1:\"1\";}" + } + } +} \ No newline at end of file diff --git a/backend/app/plugins/wiaas/includes/db-updates/data/wiaas-ui-field-organization-info.json b/backend/app/plugins/wiaas/includes/db-updates/data/wiaas-ui-field-organization-info.json new file mode 100644 index 0000000..719b954 --- /dev/null +++ b/backend/app/plugins/wiaas/includes/db-updates/data/wiaas-ui-field-organization-info.json @@ -0,0 +1,90 @@ +[ + { + "key": "group_5bbe558ba265c", + "title": "Organization Info", + "fields": [ + { + "key": "field_5bbe5c0d1f1a7", + "label": "Phone", + "name": "_wiaas_organization_phone", + "type": "text", + "instructions": "", + "required": 1, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "placeholder": "", + "prepend": "", + "append": "", + "maxlength": "" + }, + { + "key": "field_5bbe5c291f1a8", + "label": "VAT Code", + "name": "_wiaas_organization_vat", + "type": "text", + "instructions": "", + "required": 1, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "placeholder": "", + "prepend": "", + "append": "", + "maxlength": "" + }, + { + "key": "field_5bbe559d66d17", + "label": "Roles", + "name": "_wiaas_organization_roles", + "type": "select", + "instructions": "", + "required": 1, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "administrator": "Administrator", + "supplier": "Supplier", + "commercial_lead": "Commercial Lead", + "customer": "Customer" + }, + "default_value": [], + "allow_null": 0, + "multiple": 1, + "ui": 1, + "ajax": 1, + "return_format": "label", + "placeholder": "" + } + ], + "location": [ + [ + { + "param": "taxonomy", + "operator": "==", + "value": "wiaas-user-organization" + } + ] + ], + "menu_order": 0, + "position": "normal", + "style": "seamless", + "label_placement": "top", + "instruction_placement": "field", + "hide_on_screen": "", + "active": 1, + "description": "" + } +] \ No newline at end of file diff --git a/backend/app/plugins/wiaas/includes/db-updates/data/wiaas-ui-field-user-organization.json b/backend/app/plugins/wiaas/includes/db-updates/data/wiaas-ui-field-user-organization.json new file mode 100644 index 0000000..d733b45 --- /dev/null +++ b/backend/app/plugins/wiaas/includes/db-updates/data/wiaas-ui-field-user-organization.json @@ -0,0 +1,52 @@ +[ + { + "key": "group_5bbce9f38f149", + "title": "User Organization", + "fields": [ + { + "key": "field_5bbe54366aac1", + "label": "Organization", + "name": "_wiaas_organization_id", + "type": "taxonomy", + "instructions": "Select Organization for user", + "required": 1, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "taxonomy": "wiaas-user-organization", + "field_type": "select", + "allow_null": 0, + "add_term": 0, + "save_terms": 1, + "load_terms": 1, + "return_format": "id", + "multiple": 0 + } + ], + "location": [ + [ + { + "param": "user_form", + "operator": "==", + "value": "edit" + }, + { + "param": "current_user_role", + "operator": "==", + "value": "administrator" + } + ] + ], + "menu_order": 0, + "position": "normal", + "style": "seamless", + "label_placement": "left", + "instruction_placement": "field", + "hide_on_screen": "", + "active": 1, + "description": "" + } +] \ No newline at end of file diff --git a/backend/app/plugins/wiaas/includes/db-updates/wiaas-db-update-functions.php b/backend/app/plugins/wiaas/includes/db-updates/wiaas-db-update-general.php similarity index 97% rename from backend/app/plugins/wiaas/includes/db-updates/wiaas-db-update-functions.php rename to backend/app/plugins/wiaas/includes/db-updates/wiaas-db-update-general.php index ed4311c..b8923c8 100644 --- a/backend/app/plugins/wiaas/includes/db-updates/wiaas-db-update-functions.php +++ b/backend/app/plugins/wiaas/includes/db-updates/wiaas-db-update-general.php @@ -1,9 +1,9 @@ add_cap( 'administrator', $cap ); + wp_roles()->add_cap( 'commercial_lead', $cap ); + } + } + +} + + +function wiaas_db_import_aam_role_settings() { + // update role settings that are imported + $content = file_get_contents( dirname( __FILE__ ) . '/data/aam-settings.json' ); + + $importer = new AAM_Core_Importer($content); + + $importer->run(); + + // update toolbar settins manually since it does not get imported + update_option('aam_toolbar_default', array ( + 'about' => '1', + 'toolbar-wp-logo' => '1', + 'wporg' => '1', + 'documentation' => '1', + 'support-forums' => '1', + 'feedback' => '1', + 'toolbar-site-name' => '0', + 'view-site' => '1', + 'view-store' => '1', + 'toolbar-updates' => '1', + 'toolbar-comments' => '1', + 'toolbar-new-content' => '1', + 'new-post' => '1', + 'new-media' => '1', + 'new-page' => '1', + 'new-product' => '1', + 'new-shop_order' => '1', + 'new-shop_coupon' => '1', + 'new-wiaas_doc' => '1', + 'new-user' => '1', + 'gravityforms-new-form' => '1', + ) + ); +} \ No newline at end of file diff --git a/backend/app/plugins/wiaas/includes/db-updates/wiaas-db-update-ui-fields.php b/backend/app/plugins/wiaas/includes/db-updates/wiaas-db-update-ui-fields.php new file mode 100644 index 0000000..62f2edf --- /dev/null +++ b/backend/app/plugins/wiaas/includes/db-updates/wiaas-db-update-ui-fields.php @@ -0,0 +1,19 @@ + true, 'query_var' => true, 'rewrite' => array('slug' => 'wiaas_doc', 'with_front' => false), - 'capability_type' => 'post', + 'capability_type' => 'wiaas_doc', 'has_archive' => false, 'hierarchical' => false, 'taxonomies' => array(), 'menu_icon' => 'dashicons-media-document', 'exclude_from_search' => false, - 'supports' => array('title') + 'supports' => array('title'), ); @@ -390,6 +390,12 @@ class Wiaas_Document { 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'wiaas_doc_type' ), + 'capabilities' => array( + 'manage_terms' => 'manage_wiaas_doc_terms', + 'edit_terms' => 'edit_wiaas_doc_terms', + 'delete_terms' => 'delete_wiaas_doc_terms', + 'assign_terms' => 'assign_wiaas_doc_terms', + ), ); register_taxonomy( 'wiaas_doc_type', array( 'wiaas_doc' ), $args ); diff --git a/backend/app/plugins/wiaas/includes/product/class-wiaas-product-supplier.php b/backend/app/plugins/wiaas/includes/product/class-wiaas-product-supplier.php index eeb71de..ecffddb 100644 --- a/backend/app/plugins/wiaas/includes/product/class-wiaas-product-supplier.php +++ b/backend/app/plugins/wiaas/includes/product/class-wiaas-product-supplier.php @@ -48,8 +48,16 @@ class Wiaas_Product_Supplier { */ public static function on_organization_added($organization_id) { $organization = get_term_by('id', $organization_id, 'wiaas-user-organization'); - $supplier = wp_insert_term($organization->name, 'supplier'); - add_term_meta($supplier['term_id'], 'organisation_id', $organization->term_id); + + $supplier = term_exists($organization->slug, 'supplier'); + + if (! $supplier) { + $supplier = wp_insert_term($organization->name, 'supplier', array( + 'slug' => $organization->slug + )); + } + + add_term_meta($supplier['term_id'], 'organisation_id', $organization->term_id); } } diff --git a/backend/app/plugins/wiaas/includes/user/class-wiaas-user-organization.php b/backend/app/plugins/wiaas/includes/user/class-wiaas-user-organization.php index e751255..7ed5435 100644 --- a/backend/app/plugins/wiaas/includes/user/class-wiaas-user-organization.php +++ b/backend/app/plugins/wiaas/includes/user/class-wiaas-user-organization.php @@ -32,13 +32,24 @@ class Wiaas_User_Organization extends WP_User_Taxonomy { parent::hooks(); - add_action('user_new_form', array( $this, 'show_organizations_selection' )); add_action('user_register', array( $this, 'save_terms_for_user' )); add_action( 'created_' . self::TAXONOMY_NAME, array( __CLASS__, 'on_organization_added' )); add_action( 'pre_delete_term', array( __CLASS__, 'on_taxonomy_term_will_be_deleted' ), 10, 2); add_action('set_object_terms', array( __CLASS__, 'on_taxonomy_term_assigned' ), 10, 4); add_action('deleted_term_relationships', array( __CLASS__, 'on_taxonomy_term_unassigned' ), 10, 3); + + + // Remove bulk editor for organizations on users list + remove_filter( 'admin_notices', array( $this, 'bulk_notice')); + remove_filter( 'bulk_actions-users', array( $this, 'bulk_actions')); + remove_filter( 'bulk_actions-users', array( $this, 'bulk_actions_sort')); + remove_action( 'handle_bulk_actions-users', array( $this, 'handle_bulk_actions')); + + // remove default organization info from profiles + // it will be handled by custom fields + remove_action( 'show_user_profile', array( $this, 'edit_user_relationships' ), 99); + remove_action( 'edit_user_profile', array( $this, 'edit_user_relationships' ), 99 ); } // hooks functions @@ -78,7 +89,7 @@ class Wiaas_User_Organization extends WP_User_Taxonomy { if ($taxonomy === self::TAXONOMY_NAME) { $user_id = $object_id; $organization_id = $tt_ids[0]; - add_user_meta($user_id, 'organization_id', $organization_id, true); + self::_add_user_to_access_group($user_id, $organization_id); } } @@ -95,7 +106,7 @@ class Wiaas_User_Organization extends WP_User_Taxonomy { if ($taxonomy === self::TAXONOMY_NAME) { $user_id = $object_id; $organization_id = $tt_ids[0]; - delete_user_meta($user_id, 'organization_id'); + self::_remove_user_from_organization_access_groups($user_id, $organization_id); } } @@ -106,13 +117,13 @@ class Wiaas_User_Organization extends WP_User_Taxonomy { * @param null $user_id * @return mixed */ - public static function get_user_organization($user_id = null) { + public static function get_user_organization_id($user_id = null) { if (!isset($user_id)) { - $user = wp_get_current_user(); - $user_id = $user->ID; + $user_id = get_current_user_id(); } - $terms = wp_get_object_terms($user_id, self::TAXONOMY_NAME); - return $terms[0]; + $organization_id = get_user_meta($user_id, '_wiaas_organization_id', true); + + return empty($organization_id) ? null : (int) $organization_id; } /** @@ -124,8 +135,8 @@ class Wiaas_User_Organization extends WP_User_Taxonomy { * @param $user_id */ public static function assign_post_to_user_organization($post_id, $user_id) { - $organization = self::get_user_organization($user_id); - self::_assign_post_to_organization($post_id, $organization->term_id); + $organization_id = self::get_user_organization_id($user_id); + self::_assign_post_to_organization($post_id, $organization_id); } @@ -240,73 +251,4 @@ class Wiaas_User_Organization extends WP_User_Taxonomy { } } } - - /** - * Show organizations selection on new user form - */ - function show_organizations_selection() { - $terms = get_terms( array( - 'taxonomy' => self::TAXONOMY_NAME, - 'hide_empty' => false, - ) ); - $taxonomy = get_taxonomy(self::TAXONOMY_NAME); - $this->table_contents(null, $taxonomy, $terms); - } - - function edit_user_relationships($user = false) { - $tax = get_taxonomy( $this->taxonomy ); - - // Get the terms of the taxonomy. - $terms = get_terms( $this->taxonomy, array( - 'hide_empty' => false - ) ); - - $this->table_contents( $user, $tax, $terms ); - } - - function table_contents( $user, $tax, $terms ) { - $active_organization_id = -1; - if ($user) { - $active_organization = self::get_user_organization($user->ID); - $active_organization_id = $active_organization ? $active_organization->term_id : -1; - } - - ?> -| - - | -- - taxonomy, $this->get_nonce_key() ); - ?> - | -
|---|