Advertisement
Guest User

Untitled

a guest
Jul 5th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.06 KB | None | 0 0
  1. <?php
  2.  
  3. sessionHandler::$config['loginPage'] = "login.php";
  4. sessionHandler::$config['logoutPage'] = "logout.php";
  5. sessionHandler::$config['afterLoginPage'] = "dashboard.php";
  6. sessionHandler::$config['afterLogoutPage'] = "login.php";
  7. sessionHandler::$config['permissionsRefreshInterval'] = 300; // seconds
  8.  
  9. class sessionHandler
  10. {
  11. public static $config;
  12.  
  13. function __construct($special = NULL)
  14. {
  15. session_start();
  16.  
  17. if ($special == 'LOGOUT') {
  18. // This is the logout page, clear the session and
  19. // send the user to the afterLogout page
  20.  
  21. session_destroy(); // clear session files on server
  22. $_SESSION = NULL; // clear session variable for this session
  23.  
  24. $this->sendToPage(sessionHandler::$config['afterLogoutPage']);
  25. }
  26.  
  27. $userID = $_SESSION['userID'];
  28.  
  29. if ($special == 'LOGIN' && $userID) {
  30. // user is already logged in, so bypass the login page
  31. $this->sendToPage(sessionHandler::$config['afterLoginPage']);
  32. }
  33.  
  34. if (!$userID && ($special != 'LOGIN')) {
  35. // If there's no session (no $userID) AND this
  36. // isn't the login page, send them to the login page
  37.  
  38. sessionHandler::sendToLoginPage();
  39. }
  40.  
  41. $nextRefreshTime = sessionHandler::$config['permissionsRefreshInterval'] + $_SESSION['lastPermissionRefreshTime'];
  42. if (time() > $nextRefreshTime) {
  43. sessionHandler::loadUserPermissions($userID);
  44. }
  45.  
  46. }
  47.  
  48. function sendToPage($page)
  49. {
  50. header("Location: $page");
  51. }
  52.  
  53. function sendToLoginPage()
  54. {
  55. // redirect user to login page.
  56. // pass along current page, so we can
  57. // redirect them after a successful login
  58.  
  59. $sourcePage = basename($_SERVER['REQUEST_URI']); // #TODO: make this work with deeper urls example.com/path/file.php
  60.  
  61. if ($sourcePage == sessionHandler::$config['logoutPage']) {
  62. // don't do this if they are coming from the logout page
  63. $sourcePage = NULL;
  64. } else {
  65. $sourcePage = '?d=' . urlencode($sourcePage);
  66. }
  67.  
  68. $loginPage = sessionHandler::$config['loginPage'] . $sourcePage;
  69.  
  70. $this->sendToPage($loginPage);
  71. }
  72.  
  73. static function loadUserPermissions($userid)
  74. {
  75. if (!$userid) {
  76. return FALSE;
  77. } else {
  78. $query = "SELECT userID, firstName, lastName, email, phone, permissions FROM users WHERE userID = ? AND active = 1;";
  79. $user = $GLOBALS['db']->SQL_SINGLE($query, Array($userid));
  80.  
  81. if ($user) {
  82. $_SESSION['userID'] = $user['userID'];
  83. $_SESSION['displayName'] = $user['firstName'] . ' ' . $user['lastName'];
  84. $_SESSION['userEmail'] = $user['email'];
  85. $_SESSION['userPhone'] = $user['phone'];
  86.  
  87. // currently I'm just storing user permissions as a comma separated
  88. // list in the DB. I'll make it more elegant in the future
  89.  
  90. $permissions = explode(",", $user['permissions']);
  91. foreach ($permissions as $p) {
  92. $_SESSION['permissions'][$p] = 1;
  93. }
  94.  
  95. $_SESSION['lastPermissionRefreshTime'] = time();
  96.  
  97. return TRUE;
  98. } else {
  99. return FALSE;
  100. }
  101. }
  102. }
  103.  
  104. function p_check($permission, $echo = NULL)
  105. {
  106. // if user has the named permission, then echo the supplied HTML code
  107. if ($_SESSION['permissions'][$permission]) {
  108. echo $echo;
  109. return TRUE;
  110. } else {
  111. return FALSE;
  112. }
  113. }
  114.  
  115. static function login($username, $password)
  116. {
  117. // validates user credentials and loads up user properties
  118.  
  119. $user = $GLOBALS['db']->SQL_SINGLE("SELECT userID FROM users WHERE username = ? AND password = ? AND active = 1;", Array($username, $password));
  120.  
  121. if ($user) {
  122. $_SESSION['sessionStartTime'] = time();
  123. sessionHandler::loadUserPermissions($user['userID']);
  124. return TRUE;
  125.  
  126. } else {
  127. return FALSE;
  128. }
  129. }
  130. }
  131.  
  132. <?PHP
  133. require_once('_classes.php');
  134. $db = new db_controller(); // use this globally for all DB work.
  135. $session = new sessionHandler('LOGIN');
  136. ?>
  137. <html>
  138.  
  139. <body>
  140.  
  141. <div>
  142. <div>
  143. <div>
  144. <img src="img/logo.png">
  145. </div>
  146.  
  147. <h3>Welcome to myApp</h3>
  148. <p>Login in to see it in action!</p>
  149.  
  150. <form id="loginForm">
  151. <input name="username">
  152. <input type="password" name="password">
  153. <button type="submit">Login</button>
  154. </form>
  155. </div>
  156. </div>
  157.  
  158. <!-- scripts -->
  159. <script src="js/jquery-2.1.1.js"></script>
  160. <script src="js/bootstrap.min.js"></script>
  161. <script>
  162. $('#loginForm').submit(function (e) {
  163. e.preventDefault();
  164. $.ajax({
  165. type: 'POST',
  166. url: '_functions.php?function=login',
  167. data: $('form').serialize(),
  168. dataType: 'JSON',
  169. success: function (data) {
  170. if (data['success']) {
  171. // determine if the user has been redirected from another
  172. // page prior to getting to the login page, if so, send them
  173. // back to it instead of the default page
  174. var urlParams = {};window.location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) {params[key] = value; });
  175. var redirectPage = decodeURIComponent(urlParams['d']);
  176.  
  177. if (redirectPage == 'undefined') {
  178. // if there is not redirect parameter on the URL,
  179. // then send them to the default page
  180. redirectPage = data['redirectPage'];
  181. }
  182.  
  183. window.location.replace(redirectPage);
  184. } else {
  185. alert(data['error']);
  186. }
  187. }
  188. });
  189. });
  190.  
  191. </script>
  192.  
  193. </body>
  194.  
  195. </html>
  196.  
  197. <?PHP
  198. require_once('_classes.php');
  199. $db = new db_controller();
  200. $session = new sessionHandler('LOGOUT');
  201. ?>
  202.  
  203. <?PHP
  204. require_once('_classes.php');
  205. $db = new db_controller(); // use this globally for all DB work.
  206. $session = new sessionHandler();
  207. ?>
  208. <html>
  209.  
  210. <body>
  211.  
  212. <div>
  213. <nav role="navigation">
  214. <div class="sidebar-collapse">
  215. <ul>
  216. <li><a href="#"><i class="fa fa-user"></i> <span>Home</span><span class="fa arrow"></span></a>
  217. <ul class="nav nav-second-level collapse">
  218. <li><a href="dashboard.php">My Dashboard</a></li>
  219. <li><a href="record-multiple.php">Record Data</a></li>
  220. </ul>
  221. </li>
  222.  
  223. <?php $session->p_check('maintenance', '
  224. <li>
  225. <a href="#"><i class="fa fa-wrench"></i> <span class="nav-label">Maintenance</span><span class="fa arrow"></span></a>
  226. <ul class="nav nav-second-level collapse">
  227. <li><a href="maintenance.php?filter=overdue">Overdue <span>' . $statusCount['overdue'] . '</span></a></li>
  228. <li><a href="maintenance.php?filter=due-soon">Due Soon <span>' . $statusCount['due soon'] . '</span></a></li>
  229. <li><a href="maintenance.php?filter=good">Good <span>' . $statusCount['good'] . '</span></a></li>
  230. <li><a href="maintenance.php?filter=no-history">No History <span>' . $statusCount['no history'] . '</span></a></li>
  231. <li><a href="maintenance.php">All Equipment <span>' . $statusCount['all'] . '</span></a></li>
  232. </ul>
  233. </li>
  234. '); ?>
  235.  
  236. <?php $session->p_check('equipment', '
  237. <li>
  238. <a href="#"><i class="fa fa-truck"></i> <span class="nav-label">Equipment</span><span class="fa arrow"></span></a>
  239. <ul class="nav nav-second-level collapse">
  240. <li><a href="equipment.php">Equipment List</a></li>
  241. <li><a href="maintenance-plans.php">Maintenance Plans</a></li>
  242. <li><a href="maintenance-log.php">Maintenance Log</a></li>
  243. </ul>
  244. </li>
  245. '); ?>
  246.  
  247. <li><a href="#"><i class="fa fa-sign-out"></i> <span>Exit</span><span class="fa arrow"></span></a>
  248. <ul class="nav nav-second-level collapse">
  249. <li><a href="logout.php" id="logOut">Log Out</a></li>
  250. </ul>
  251. </li>
  252. </ul>
  253.  
  254. </div>
  255. </nav>
  256. <div id="page-wrapper" class="gray-bg">
  257.  
  258. <div class="row wrapper wrapper-content">
  259. <div class="col-lg-12">
  260.  
  261. <!-- Main Page Content......-->
  262. <!-- Main Page Content......-->
  263. <!-- Main Page Content......-->
  264. <!-- Main Page Content......-->
  265. <!-- Main Page Content......-->
  266.  
  267. </div>
  268. </div>
  269.  
  270. </div>
  271. </div>
  272.  
  273. </body>
  274. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement