Пример #1
0
 public function testHandleCallback_FailNoToken()
 {
     $ss = array('nkconnect_some_key_otp' => 'aaaa_bbbb_ccc');
     $r = array('nkconnect_state' => 'callback', 'state' => 'aaaa_bbbb_ccc', 'code' => 'auth_code_1234');
     $this->request->expects($this->any())->method('getRequestData')->will($this->returnValue($r));
     $this->request->expects($this->any())->method('getSessionData')->will($this->returnValue($ss));
     $this->request->expects($this->any())->method('unsetSessionData')->will($this->returnValue($this->request));
     $this->http_client->expects($this->once())->method('exec');
     $this->http_client->expects($this->once())->method('getResponseCode')->will($this->returnValue(400));
     $this->http_client->expects($this->once())->method('getResponse')->will($this->returnValue(json_encode(array())));
     $this->object->expects($this->once())->method('authenticated')->will($this->returnValue(false));
     $this->assertFalse($this->object->handleCallback());
     $this->assertArrayHasKey('auth_error', $this->object->getErrors());
 }
Пример #2
0
 */
// Załaduj bibliotekę NK
require '../src/NK.php';
/*
 * Konfiguracja Twojej aplikacji, wszystkie potrzebne informacje znajdziesz w panelu konfiguracyjnym aplikacji
 * Jeśli preferujesz bardziej obiektowy styl, popatrz na klasę NKConfig
 */
$conf = array('permissions' => array(NKPermissions::BASIC_PROFILE), 'key' => 'demo', 'secret' => 'b27d8aa6-74ee-4bbc-9ea1-0a3e5acc9bb8');
/*
 * Zanim rozpoczniesz renderowanie HTMLa utwórz obiekt NKConnect i pozwól mu obsłużyć na tej proces
 * logowania (handleCallback). Jeśli chcesz lub musisz obsłużyć callback na osobnej stronie, zaimplementować jakąś logikę
 * wykonywaną w momencie zalogowania w NK lub połączyć rejestrację/własną bazę użytkowników popatrz na przykład z pliku
 * authentication2.php
 */
$auth = new NKConnect($conf);
$auth->handleCallback();
?>
<html>
  <head>
    <title>Demo autentykacji z użyciem NKConnect</title>
  </head>
  <body>
    <p>Ten przykład pokazuje sposób w jaki można użyć NKConnect do logowania bez potrzeby używania dodatkowej strony
    obsługującej callback. Dla nie zalogowanego użytkownika wyświetlamy przycisk "Zaloguj z NK" który otworzy stronę
    logowania w portalu NK i poprosi użytkownika o akceptację dostępu do danych. Po zalogowaniu uruchamiana jest sesja,
    dzięki czemu na dowolnej stronie, poprzez użycie</p>
    <pre>
    $auth = new NKConnect($conf);
    $user = $auth->user()
    </pre>
    <p>masz dostęp do informacji o zalogowanym użytkowniku.</p>
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Załaduj wspólny plik konfiguracji
require 'authentication2config.php';
$auth = new NKConnect($conf);
if ($auth->handleCallback()) {
    // Tutaj umieść kod, który wykonany zostanie po udanym zalogowaniu użytkownika na NK, wsztstkie dane użytkownika
    // dostępne są poprzez $auth->user() - możesz także skorzystać z dostępnych serwisów NK, przykłady znajdziesz w
    // pliku services.php.
    // Poniższy kawałek kodu jest prostym przykładem, służy do zademonstrowania *przykładowego* sposobu obsługi
    // użytkowników we własnej bazie danych
    // Sprawdź używając NK id, czy użytkownik znajduje się w bazie danych
    $q = $db->prepare("SELECT * FROM `users` WHERE `nk_person_id` = :nk_person_id");
    $q->bindValue('nk_person_id', $auth->user()->id(), PDO::PARAM_STR);
    $q->execute();
    if (false === ($u = $q->fetch(PDO::FETCH_ASSOC))) {
        // W bazie nie ma użytkownika, zarejestrujmy go
        $q = $db->prepare("INSERT INTO `users` (`nk_person_id`, `name`, `last_login_1`, `last_login_2`, `login_count`) VALUES (:nk_person_id, :name, :now, :now, 1)");
        $q->bindValue('nk_person_id', $auth->user()->id(), PDO::PARAM_STR);
        $q->bindValue('name', $auth->user()->name(), PDO::PARAM_STR);
        $q->bindValue('now', @date("Y-m-d H:i:s"), PDO::PARAM_STR);