digestauth.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. /**
  3. * This example shows how to do Digest authentication.
  4. * *.
  5. *
  6. * @copyright Copyright (C) 2009-2015 fruux GmbH (https://fruux.com/).
  7. * @author Markus Staab
  8. * @license http://sabre.io/license/ Modified BSD License
  9. */
  10. $userList = [
  11. 'user1' => 'password',
  12. 'user2' => 'password',
  13. ];
  14. use Sabre\HTTP\Auth;
  15. use Sabre\HTTP\Response;
  16. use Sabre\HTTP\Sapi;
  17. // Find the autoloader
  18. $paths = [
  19. __DIR__.'/../vendor/autoload.php',
  20. __DIR__.'/../../../autoload.php',
  21. __DIR__.'/vendor/autoload.php',
  22. ];
  23. foreach ($paths as $path) {
  24. if (file_exists($path)) {
  25. include $path;
  26. break;
  27. }
  28. }
  29. $request = Sapi::getRequest();
  30. $response = new Response();
  31. $digestAuth = new Auth\Digest('Locked down area', $request, $response);
  32. $digestAuth->init();
  33. if (!$userName = $digestAuth->getUsername()) {
  34. // No username given
  35. $digestAuth->requireLogin();
  36. } elseif (!isset($userList[$userName]) || !$digestAuth->validatePassword($userList[$userName])) {
  37. // Username or password are incorrect
  38. $digestAuth->requireLogin();
  39. } else {
  40. // Success !
  41. $response->setBody('You are logged in!');
  42. }
  43. // Sending the response
  44. Sapi::sendResponse($response);