User.class.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace Models {
  3. require_once 'Config/Settings.class.php';
  4. require_once 'External/PHP-JWT/src/JWT.php';
  5. class User {
  6. //
  7. public $ID;
  8. public $firstname;
  9. public $lastname;
  10. public $email;
  11. public $type;
  12. /**
  13. *
  14. */
  15. public function __construct() {
  16. $this->reset();
  17. }
  18. /**
  19. *
  20. */
  21. protected function reset() {
  22. $this->ID = 0;
  23. $this->firstname = '';
  24. $this->lastname = '';
  25. $this->email = '';
  26. $this->type = '';
  27. }
  28. /**
  29. *
  30. */
  31. public function logout() {
  32. $this->reset();
  33. }
  34. /**
  35. * Check provided JWT token.
  36. */
  37. public function checkToken() {
  38. $authHeader = $_SERVER['HTTP_AUTHORIZATION'];
  39. $arr = explode(" ", $authHeader);
  40. if(count($arr) == 2) {
  41. $jwt = $arr[1];
  42. if($jwt) {
  43. try {
  44. $decoded = \Firebase\JWT\JWT::decode($jwt, \Config\Settings::getTokenPrivateKey(), array('HS256'));
  45. $this->ID = $decoded->data->ID;
  46. $this->firstname = $decoded->data->firstname;
  47. $this->lastname = $decoded->data->lastname;
  48. $this->email = $decoded->data->email;
  49. $this->type = $decoded->data->type;
  50. // Update token
  51. $issuedat_claim = time(); // issued at
  52. $expire_claim = $issuedat_claim + \Config\Settings::getTokenExpiration();
  53. $decoded->iat = $issuedat_claim;
  54. $decoded->exp = $expire_claim;
  55. return \Firebase\JWT\JWT::encode($decoded, \Config\Settings::getTokenPrivateKey());
  56. }
  57. catch ( \Firebase\JWT\ExpiredException $e ) {
  58. throw new \Exception('Access denied.');
  59. }
  60. catch (\Exception $e){
  61. throw new \Exception('Access denied.');
  62. /*return json_encode(Array(
  63. "result" => "ERROR",
  64. "message" => "Access denied",
  65. "data" => $e->getMessage()
  66. ));*/
  67. }
  68. }
  69. else {
  70. throw new \Exception('Access denied.');
  71. }
  72. }
  73. else {
  74. throw new \Exception('Access denied.');
  75. }
  76. return false;
  77. }
  78. }
  79. }
  80. ?>