Guest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. namespace Lychee\Access;
  3. use Lychee\Modules\Album;
  4. use Lychee\Modules\Photo;
  5. use Lychee\Modules\Session;
  6. use Lychee\Modules\Validator;
  7. final class Guest extends Access {
  8. public static function init($fn) {
  9. switch ($fn) {
  10. // Album functions
  11. case 'Album::getAll': self::getAlbumsAction(); break;
  12. case 'Album::get': self::getAlbumAction(); break;
  13. case 'Album::getPublic': self::checkAlbumAccessAction(); break;
  14. // Photo functions
  15. case 'Photo::get': self::getPhotoAction(); break;
  16. // Session functions
  17. case 'Session::init': self::initAction(); break;
  18. case 'Session::login': self::loginAction(); break;
  19. case 'Session::logout': self::logoutAction(); break;
  20. // $_GET functions
  21. case 'Album::getArchive': self::getAlbumArchiveAction(); break;
  22. case 'Photo::getArchive': self::getPhotoArchiveAction(); break;
  23. // Error
  24. default: self::fnNotFound(); break;
  25. }
  26. return true;
  27. }
  28. // Album functions
  29. private static function getAlbumsAction() {
  30. $album = new Album(null);
  31. echo json_encode($album->getAll(true));
  32. }
  33. private static function getAlbumAction() {
  34. Validator::required(isset($_POST['albumID'], $_POST['password']), __METHOD__);
  35. $album = new Album($_POST['albumID']);
  36. if ($album->getPublic()) {
  37. // Album public
  38. if ($album->checkPassword($_POST['password'])) echo json_encode($album->get());
  39. else echo 'Warning: Wrong password!';
  40. } else {
  41. // Album private
  42. echo 'Warning: Album private!';
  43. }
  44. }
  45. private static function checkAlbumAccessAction() {
  46. Validator::required(isset($_POST['albumID'], $_POST['password']), __METHOD__);
  47. $album = new Album($_POST['albumID']);
  48. if ($album->getPublic()) {
  49. // Album public
  50. if ($album->checkPassword($_POST['password'])) echo true;
  51. else echo false;
  52. } else {
  53. // Album private
  54. echo false;
  55. }
  56. }
  57. // Photo functions
  58. private static function getPhotoAction() {
  59. Validator::required(isset($_POST['photoID'], $_POST['albumID'], $_POST['password']), __METHOD__);
  60. $photo = new Photo($_POST['photoID']);
  61. $pgP = $photo->getPublic($_POST['password']);
  62. if ($pgP===2) echo json_encode($photo->get($_POST['albumID']));
  63. else if ($pgP===1) echo 'Warning: Wrong password!';
  64. else if ($pgP===0) echo 'Warning: Photo private!';
  65. }
  66. // Session functions
  67. private static function initAction() {
  68. $session = new Session();
  69. echo json_encode($session->init(true));
  70. }
  71. private static function loginAction() {
  72. Validator::required(isset($_POST['user'], $_POST['password']), __METHOD__);
  73. $session = new Session();
  74. echo $session->login($_POST['user'], $_POST['password']);
  75. }
  76. private static function logoutAction() {
  77. $session = new Session();
  78. echo $session->logout();
  79. }
  80. // $_GET functions
  81. private static function getAlbumArchiveAction() {
  82. Validator::required(isset($_GET['albumID'], $_GET['password']), __METHOD__);
  83. $album = new Album($_GET['albumID']);
  84. if ($album->getPublic()&&$album->getDownloadable()) {
  85. // Album Public
  86. if ($album->checkPassword($_GET['password'])) $album->getArchive();
  87. else exit('Warning: Wrong password!');
  88. } else {
  89. // Album Private
  90. exit('Warning: Album private or not downloadable!');
  91. }
  92. }
  93. private static function getPhotoArchiveAction() {
  94. Validator::required(isset($_GET['photoID'], $_GET['password']), __METHOD__);
  95. $photo = new Photo($_GET['photoID']);
  96. $pgP = $photo->getPublic($_GET['password']);
  97. // Photo Download
  98. if ($pgP===2) {
  99. // Photo Public
  100. $photo->getArchive();
  101. } else {
  102. // Photo Private
  103. exit('Warning: Photo private or password incorrect!');
  104. }
  105. }
  106. }
  107. ?>