@@ -65,11 +65,9 @@ function get_token_from_request() {
65
65
return $ token ;
66
66
}
67
67
68
- // Please note that the following includes PHP 5.3+ code. Ryan said it would be fine, soon. ;)
69
- add_filter ( 'rest_authentication_errors ' , function ( $ error ) use ( $ token ) {
70
- return null === $ error ? create_invalid_token_error ( $ token ) : null ;
71
- } );
72
-
68
+ // Got a token, but it's not valid.
69
+ global $ oauth2_error ;
70
+ $ oauth2_error = create_invalid_token_error ( $ token );
73
71
return null ;
74
72
}
75
73
@@ -83,6 +81,8 @@ function get_token_from_request() {
83
81
function attempt_authentication ( $ user = null ) {
84
82
// Lock against infinite loops when querying the token itself.
85
83
static $ is_querying_token = false ;
84
+ global $ oauth2_error ;
85
+ $ oauth2_error = null ;
86
86
87
87
if ( ! empty ( $ user ) || $ is_querying_token ) {
88
88
return $ user ;
@@ -101,13 +101,31 @@ function attempt_authentication( $user = null ) {
101
101
$ is_querying_token = false ;
102
102
103
103
if ( empty ( $ token ) ) {
104
- return create_invalid_token_error ( $ token );
104
+ $ oauth2_error = create_invalid_token_error ( $ token_value );
105
+ return $ user ;
105
106
}
106
107
107
108
// Token found, authenticate as the user.
108
109
return $ token ->get_user_id ();
109
110
}
110
111
112
+ /**
113
+ * Report our errors, if we have any.
114
+ *
115
+ * Attached to the rest_authentication_errors filter. Passes through existing
116
+ * errors registered on the filter.
117
+ *
118
+ * @return WP_Error|null Error if one is set, otherwise null.
119
+ */
120
+ function maybe_report_errors ( $ error = null ) {
121
+ if ( ! empty ( $ error ) ) {
122
+ return $ error ;
123
+ }
124
+
125
+ global $ oauth2_error ;
126
+ return $ oauth2_error ;
127
+ }
128
+
111
129
function create_invalid_token_error ( $ token ) {
112
130
return new \WP_Error (
113
131
'oauth2.authentication.attempt_authentication.invalid_token ' ,
0 commit comments