You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

LuticateBusiness.php 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: robin
  5. * Date: 9/30/15
  6. * Time: 7:04 PM
  7. */
  8. namespace Luticate\Auth\Business;
  9. use Illuminate\Http\Request;
  10. use Luticate\Auth\DBO\LuticateUsersDbo;
  11. use Luticate\Utils\LuRoute;
  12. class LuticateBusiness
  13. {
  14. const TOKEN_HEADER = "X-Authentication";
  15. /**
  16. * @var LuticateUsersDbo
  17. */
  18. private static $_currentUser;
  19. public static function getCurrentUser()
  20. {
  21. return self::$_currentUser;
  22. }
  23. /**
  24. * @param $permissions string[]
  25. * @param $request Request
  26. * @return bool
  27. */
  28. public static function authFilter($permissions, $request)
  29. {
  30. $token = $request->header(self::TOKEN_HEADER);
  31. if ($token != null && $token != "") {
  32. $data = JwtHelper::decode($token);
  33. if ($data != null) {
  34. $user_id = $data[JwtHelper::USER_KEY];
  35. self::$_currentUser = LuticateUsersBusiness::getById($user_id);
  36. }
  37. }
  38. if (self::$_currentUser == null && count($permissions) != 0) {
  39. return false;
  40. }
  41. foreach ($permissions as $permission) {
  42. $value = LuticatePermissionsBusiness::getUserPermission(self::$_currentUser->getId(), $permission);
  43. if (!$value->getVal()) {
  44. return false;
  45. }
  46. }
  47. return true;
  48. }
  49. /**
  50. * @param $route LuRoute
  51. */
  52. public static function setupAuth($route)
  53. {
  54. $route->setMiddleware(function($permissions, $request)
  55. {
  56. return self::authFilter($permissions, $request);
  57. });
  58. }
  59. /**
  60. * @param $route LuRoute
  61. */
  62. public static function setupRoutes($route)
  63. {
  64. $prefix = "/luticate";
  65. $ns = 'Luticate\Auth\Business\\';
  66. $route->post("$prefix/login", "${ns}LuticateUsers", "login");
  67. }
  68. }