| @@ -17,42 +17,40 @@ | ||
| 17 | 17 | { |
| 18 | 18 | $this->formModel = new FormModel(); |
| 19 | 19 | } |
| 20 | 20 | |
| 21 | - // public function oneDriveAuth() | |
| 22 | - // { | |
| 23 | - // $state = $_GET['state']; | |
| 24 | - // $code = urlencode($_GET['code']); | |
| 25 | - // // echo $code; | |
| 26 | - // if (wp_redirect($state . '&code=' . $code, 302)) { | |
| 27 | - // exit; | |
| 28 | - // } | |
| 29 | - // } | |
| 21 | + public function googleAuth() | |
| 22 | + { | |
| 23 | + $state = $_GET['state']; | |
| 24 | + $code = urlencode($_GET['code']); | |
| 25 | + // echo $code; | |
| 26 | + if (wp_redirect($state . '&code=' . $code, 302)) { | |
| 27 | + exit; | |
| 28 | + } | |
| 29 | + } | |
| 30 | 30 | |
| 31 | + public function oneDriveAuth() | |
| 32 | + { | |
| 33 | + $state = $_GET['state']; | |
| 34 | + $code = urlencode($_GET['code']); | |
| 35 | + // echo $code; | |
| 36 | + if (wp_redirect($state . '&code=' . $code, 302)) { | |
| 37 | + exit; | |
| 38 | + } | |
| 39 | + } | |
| 40 | + | |
| 31 | 41 | public function authRedirect(WP_REST_Request $request) |
| 32 | 42 | { |
| 33 | 43 | $state = $request->get_param('state'); |
| 34 | - $site_url = $this->getDomain(get_site_url()); | |
| 35 | - $state_domain = $this->getDomain($state); | |
| 36 | - | |
| 37 | - if ($site_url !== $state_domain) { | |
| 38 | - return new WP_Error('404', 'Invalid redirect URL: ' . $state_domain); | |
| 44 | + $parsed_url = parse_url(get_site_url()); | |
| 45 | + $site_url = $parsed_url['scheme'] . '://' . $parsed_url['host']; | |
| 46 | + $site_url .= empty($parsed_url['port']) ? null : ':' . $parsed_url['port']; | |
| 47 | + if (false === strpos($state, $site_url)) { | |
| 48 | + return new WP_Error('404'); | |
| 39 | 49 | } |
| 40 | - | |
| 41 | 50 | $params = $request->get_params(); |
| 42 | 51 | unset($params['rest_route'], $params['state']); |
| 43 | - | |
| 44 | - $redirect_url = $state . '&' . http_build_query($params); | |
| 45 | - | |
| 46 | - if (wp_safe_redirect($redirect_url, 302)) { | |
| 52 | + if (wp_redirect($state . '&' . http_build_query($params), 302)) { | |
| 47 | 53 | exit; |
| 48 | 54 | } |
| 49 | - } | |
| 50 | - | |
| 51 | - private function getDomain($url) | |
| 52 | - { | |
| 53 | - $parsed_url = wp_parse_url($url); | |
| 54 | - $domain = $parsed_url['scheme'] . '://' . $parsed_url['host']; | |
| 55 | - $domain .= empty($parsed_url['port']) ? null : ':' . $parsed_url['port']; | |
| 56 | - return $domain; | |
| 57 | 55 | } |
| 58 | 56 | } |