request = $request; $this->trusted_devices_storage = $trusted_devices_storage; } /** * @param null|WP_Error|WP_User $user * * @return bool */ public function supports( $user ) { if ( $this->is_wp_user( $user ) ) { return false; } $response = $this->login_support->get_final_response(); if ( is_null( $response ) ) { return false; } $remember_device = $this->request->post( Authenticate_Filter::TWOFAS_REMEMBER_DEVICE_KEY ); return 200 === $response->get_status_code() && ! empty( $remember_device ) && $this->request->is_login_action_equal_to(Login_Action::VERIFY_TOTP_CODE); } /** * @param null|WP_Error|WP_User $user * * @return bool|JSON_Response|Redirection_Response|View_Response */ protected function handle( $user ) { $response = $this->login_support->get_final_response(); $body = $response->get_body(); $user_id = $body['user_id']; $this->trusted_devices_storage->add_trusted_device( $user_id ); return $this->fallback( $user ); } }