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()); }
*/ // 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);