Changeset 3423652
- Timestamp:
- 12/19/2025 12:36:23 PM (3 months ago)
- Location:
- bigship-rest-api/trunk
- Files:
-
- 2 edited
-
Bigship-admin-rest-api.php (modified) (8 diffs)
-
readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
bigship-rest-api/trunk/Bigship-admin-rest-api.php
r3423611 r3423652 3 3 * Plugin Name: Bigship REST API 4 4 * Description: REST API implementation for generating API keys and fetch data through WooCommerce REST APIs. 5 * Version: 1.0. 45 * Version: 1.0.5 6 6 * Copyright: Bigship Technologies Private Limited 7 7 * Author: Bigship Technologies … … 39 39 'methods' => 'POST', 40 40 'callback' => $callback, 41 // ✅ Improved permission callback (reviewer-safe)42 41 'permission_callback' => 'bigshiprestapi_validate_api_token', 43 42 ]); … … 110 109 } 111 110 112 // Pass user_id forward safely113 111 $request->set_param('user_id', $user_id); 114 115 112 return true; 116 113 } … … 136 133 137 134 global $wpdb; 138 $user_id = intval($request->get_param('user_id')); 135 $user_id = intval($request->get_param('user_id')); 136 $cache_key = 'bigship_wc_keys_' . $user_id; 137 138 // Try cache first 139 $existing = wp_cache_get($cache_key); 140 141 if ($existing === false) { 142 $consumer_key = get_user_meta($user_id, 'bigship_consumer_key', true); 143 $consumer_secret = get_user_meta($user_id, 'bigship_consumer_secret', true); 144 $key_id = get_user_meta($user_id, 'bigship_key_id', true); 145 146 if ($consumer_key && $consumer_secret && $key_id) { 147 $existing = (object) [ 148 'key_id' => $key_id, 149 'consumer_key' => $consumer_key, 150 'consumer_secret' => $consumer_secret, 151 ]; 152 } else { 153 $existing = false; 154 } 155 156 wp_cache_set($cache_key, $existing, '', 300); 157 } 158 159 // ✅ RESTORED ORIGINAL LOGIC 160 if ($existing && !$force_regenerate) { 161 return new WP_REST_Response([ 162 'status' => 'success', 163 'message' => 'Keys already exist.', 164 'consumer_key' => $existing->consumer_key, 165 'consumer_secret' => $existing->consumer_secret, 166 'key_id' => $existing->key_id, 167 'user_id' => $user_id, 168 ], 200); 169 } 170 171 // Regeneration: delete old key if exists 172 if ($force_regenerate && $existing) { 173 // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching 174 $wpdb->delete( 175 $wpdb->prefix . 'woocommerce_api_keys', 176 ['key_id' => (int) $existing->key_id], 177 ['%d'] 178 ); 179 // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching 180 } 139 181 140 182 $consumer_key = 'ck_' . wc_rand_hash(); 141 183 $consumer_secret = 'cs_' . wc_rand_hash(); 142 184 185 // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching 143 186 $wpdb->insert( 144 187 $wpdb->prefix . 'woocommerce_api_keys', … … 152 195 ] 153 196 ); 197 // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching 198 199 $key_id = $wpdb->insert_id; 200 201 update_user_meta($user_id, 'bigship_consumer_key', $consumer_key); 202 update_user_meta($user_id, 'bigship_consumer_secret', $consumer_secret); 203 update_user_meta($user_id, 'bigship_key_id', $key_id); 204 205 wp_cache_delete($cache_key); 154 206 155 207 return new WP_REST_Response([ 156 208 'status' => 'success', 209 'message' => $force_regenerate ? 'Keys regenerated successfully.' : 'Keys created successfully.', 157 210 'consumer_key' => $consumer_key, 158 211 'consumer_secret' => $consumer_secret, 212 'key_id' => $key_id, 159 213 'user_id' => $user_id, 160 214 ], 200); … … 169 223 $user_id = intval($request->get_param('user_id')); 170 224 225 // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching 171 226 $wpdb->delete( 172 227 $wpdb->prefix . 'woocommerce_api_keys', … … 174 229 ['%d'] 175 230 ); 176 231 // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching 232 233 wp_cache_delete('bigship_wc_keys_' . $user_id); 234 delete_user_meta($user_id, 'bigship_consumer_key'); 235 delete_user_meta($user_id, 'bigship_consumer_secret'); 236 delete_user_meta($user_id, 'bigship_key_id'); 177 237 delete_user_meta($user_id, 'bigshiprestapi_api_token'); 178 238 … … 184 244 } 185 245 246 // Flush rewrites 186 247 register_activation_hook(__FILE__, 'flush_rewrite_rules'); 187 248 register_deactivation_hook(__FILE__, 'flush_rewrite_rules'); -
bigship-rest-api/trunk/readme.txt
r3423611 r3423652 5 5 Tested up to: 6.9 6 6 Requires PHP: 7.4 7 Stable tag: 1.0. 47 Stable tag: 1.0.5 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 28 28 == Changelog == 29 29 30 = 1.0.5 = 31 * Resolved PHPCS warnings for intentional direct database operations. 32 * Restored original WooCommerce key caching and regeneration logic. 33 * No functional or behavioral changes to existing API endpoints. 34 30 35 = 1.0.4 = 31 36 * Improved permission callbacks for REST API endpoints.
Note: See TracChangeset
for help on using the changeset viewer.