예제 #1
0
파일: Settings.php 프로젝트: Smony/njphoto
 public function index_onSave()
 {
     $yandex_services_auth_client_id = post('yandex_services_auth_client_id');
     $yandex_services_auth_client_secret = post('yandex_services_auth_client_secret');
     if (!strlen($yandex_services_auth_client_id)) {
         throw new ValidationException(['yandex_services_auth_client_id' => trans('xeor.yandexservicesauth::lang.settings.required_client_id')]);
     } else {
         $settings = YandexServicesAuthSettings::instance();
         $settings->yandex_services_auth_client_id = $yandex_services_auth_client_id;
         $settings->yandex_services_auth_client_secret = $yandex_services_auth_client_secret;
         $settings->save();
         return redirect()->away('https://oauth.yandex.ru/authorize?response_type=code&client_id=' . $yandex_services_auth_client_id);
     }
 }
예제 #2
0
 /**
  * Helper function to determine the authorization status.
  */
 public static function authStatus($period = 604800)
 {
     $settings = Settings::instance();
     $auth_token = $settings->yandex_services_auth_token;
     $auth_timestamp = $settings->yandex_services_auth_timestamp;
     if (empty($auth_token)) {
         return 'not authorized';
     }
     if (empty($auth_timestamp)) {
         return 'authorized';
     }
     if ($auth_timestamp - $_SERVER['REQUEST_TIME'] < 0) {
         return 'expired';
     }
     if ($auth_timestamp - $_SERVER['REQUEST_TIME'] < $period) {
         return 'expiring';
     } else {
         return 'authorized';
     }
 }
예제 #3
0
파일: routes.php 프로젝트: Smony/njphoto
<?php

use Xeor\YandexServicesAuth\Models\YandexServicesAuthSettings as Settings;
Route::get('yandex_services_auth/oauth', function () {
    if (empty($_GET['code'])) {
        Log::warning('Yandex Services Auth: The "code" parameter is empty.');
        return redirect('/backend/xeor/yandexservicesauth/settings');
    }
    $settings = Settings::instance();
    $client_id = $settings->yandex_services_auth_client_id;
    $client_secret = $settings->yandex_services_auth_client_secret;
    $query = array('grant_type' => 'authorization_code', 'client_id' => $client_id, 'code' => $_GET['code']);
    if (!empty($client_secret)) {
        $query['client_secret'] = $client_secret;
    }
    $query = http_build_query($query);
    $header = "Content-type: application/x-www-form-urlencoded";
    $opts = array('http' => array('method' => 'POST', 'header' => $header, 'content' => $query));
    $context = stream_context_create($opts);
    $result = file_get_contents('https://oauth.yandex.ru/token', false, $context);
    if ($result === FALSE) {
        Log::warning('Yandex Services Auth: Token request failed.');
        return redirect('/backend/xeor/yandexservicesauth/settings');
    }
    $response = json_decode($result);
    $settings->yandex_services_auth_token = $response->access_token;
    if (isset($response->expires_in)) {
        $settings->yandex_services_auth_timestamp = $_SERVER['REQUEST_TIME'] + $response->expires_in;
    } else {
        $settings->yandex_services_auth_timestamp = NULL;
    }