PageRenderTime 51ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/opensourcepos/application/controllers/acls.php

https://bitbucket.org/jit_bec/shopifine
PHP | 553 lines | 406 code | 107 blank | 40 comment | 57 complexity | 77bac465067c31a05897c148ffaf72db MD5 | raw file
Possible License(s): LGPL-3.0
  1. <?php
  2. /*
  3. * To change this template, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. /**
  7. * Description of users
  8. *
  9. * @author abhijit
  10. */
  11. require_once ("secure_area.php");
  12. class Acls extends Secure_area {
  13. function __construct()
  14. {
  15. parent::__construct('acls','adminmenu');
  16. $this->load->model('acl/User','Userview');
  17. //$this->load->model('acl/Resource','Resource');
  18. $this->load->model('acl/Role','Role');
  19. $this->load->model('acl/Permission','Permission');
  20. }
  21. function index(){
  22. $data['num_perm']= $this->Permission->totalNoOfRowsPermissionMapping();
  23. $data['num_res']= $this->Resource->totalNoOfRows();
  24. $data['num_role']= $this->Role->totalNoOfRoles();
  25. $data['num_users']= $this->User->count_all();
  26. $this->load->view("acl/dashboard",$data);
  27. }
  28. function loadUser(){
  29. $this->load->view("acl/user_grid");
  30. }
  31. function loadPermission (){
  32. $this->load->view("acl/permission_grid");
  33. }
  34. function loadResource (){
  35. $this->load->view("acl/resource_grid");
  36. }
  37. function loadRole (){
  38. $roleOptions = null;
  39. $roles = $this->Role->getAll();
  40. foreach($roles as $role) {
  41. $name=$role["role_name"];
  42. $id=$role["id"];
  43. if (!empty($name)){
  44. $roleOptions.="<OPTION VALUE=\"$id\">".$name;
  45. }
  46. }
  47. $data['roleOptions'] = $roleOptions;
  48. $this->load->view("acl/role_grid",$data);
  49. }
  50. function populateUser(){
  51. $searchOn = strip($_REQUEST['_search']);
  52. $page = $_REQUEST['page'];
  53. $limit = $_REQUEST['rows'];
  54. $sidx = $_REQUEST['sidx'];
  55. $sord = $_REQUEST['sord'];
  56. $usersdata = array();
  57. $count = $this->Userview->totalNoOfRowsUsersView();
  58. if( $count > 0 && $limit > 0) {
  59. $total_pages = ceil($count/$limit);
  60. } else {
  61. $total_pages = 0;
  62. }
  63. if ($page > $total_pages) $page=$total_pages;
  64. $start = $limit*$page - $limit;
  65. // if for some reasons start position is negative set it to 0
  66. // typical case is that the user type 0 for the requested page
  67. if($start <0) $start = 0;
  68. $clauses = array('orderBy'=>$sidx,'orderDir'=>$sord,'startLimit'=>$start,'limit'=>$limit);
  69. $data['total'] = $total_pages;
  70. $data['page'] = $page;
  71. $data['records'] = $count;
  72. if($searchOn=='true') {
  73. $filters = json_decode($_REQUEST['filters'],true);
  74. $groupOp = $filters['groupOp'];
  75. $rules = $filters['rules'];
  76. $like_condition = array();
  77. foreach ($rules as $rule){
  78. $field = $rule['field'];
  79. $op= $rule['op'];
  80. $input = $rule['data'];
  81. $like_condition[$field] = $input;
  82. }
  83. $users = $this->Userview->getAllUsersView(false,null,$clauses,$like_condition);
  84. }
  85. else {
  86. $users = $this->Userview->getAllUsersView(false,null,$clauses);
  87. }
  88. //$dp['system_name']
  89. foreach ($users as $dp){
  90. array_push($usersdata, array('id'=> $dp['person_id'],'dprow' => array($dp['username'],$dp['role_name'],$dp['first_name'],$dp['last_name'],$dp['phone_number'],$dp['email'])));
  91. }
  92. $data['userdata'] = $usersdata;
  93. echo json_encode($data);
  94. }
  95. function populateRolesEdit (){
  96. $roleOptions = null;
  97. $roles = $this->Role->getAll();
  98. foreach($roles as $role) {
  99. $name=$role["role_name"];
  100. $id=$role["id"];
  101. if (!empty($name)){
  102. $roleOptions.="<OPTION VALUE=\"$id\">".$name;
  103. }
  104. }
  105. echo $roleOptions;
  106. }
  107. function editUser (){
  108. $oper = $_REQUEST['oper'];
  109. $password = $_REQUEST['password'];
  110. $firstname = $_REQUEST['first_name'];
  111. $lastname = $_REQUEST['last_name'];
  112. $role = $_REQUEST['role_name'];
  113. $phone = $_REQUEST['phone_number'];
  114. $email = $_REQUEST['email'];
  115. $username = $_REQUEST['username'];
  116. $personid = $_REQUEST['id'];
  117. $userdata = array();
  118. if (!empty($role)){
  119. if (!is_numeric($role)) {
  120. $role_id= $this->Role->getId($role);
  121. }
  122. else {
  123. $role_id = $role;
  124. }
  125. }
  126. if (empty($role) || empty($role_id) ){
  127. $role_id= $this->Role->getId('Guest');
  128. }
  129. if ($oper == 'add'){
  130. $userdata['username'] = $username;
  131. $userdata['password'] = md5($password);
  132. $userdata['role_id'] = $role_id;
  133. }
  134. $persondata = array('first_name'=>$firstname,'last_name'=>$lastname,'phone_number'=>$phone,'email'=>$email);
  135. $this->Userview->save($persondata,$userdata,$personid);
  136. }
  137. function populateResources(){
  138. $searchOn = strip($_REQUEST['_search']);
  139. $page = $_REQUEST['page'];
  140. $limit = $_REQUEST['rows'];
  141. $sidx = $_REQUEST['sidx'];
  142. $sord = $_REQUEST['sord'];
  143. $resourcesdata = array();
  144. $count = $this->Resource->totalNoOfRows();
  145. if( $count > 0 && $limit > 0) {
  146. $total_pages = ceil($count/$limit);
  147. } else {
  148. $total_pages = 0;
  149. }
  150. if ($page > $total_pages) $page=$total_pages;
  151. $start = $limit*$page - $limit;
  152. // if for some reasons start position is negative set it to 0
  153. // typical case is that the user type 0 for the requested page
  154. if($start <0) $start = 0;
  155. $clauses = array('orderBy'=>$sidx,'orderDir'=>$sord,'startLimit'=>$start,'limit'=>$limit);
  156. $data['total'] = $total_pages;
  157. $data['page'] = $page;
  158. $data['records'] = strval($count);
  159. if($searchOn=='true') {
  160. $filters = json_decode($_REQUEST['filters'],true);
  161. $groupOp = $filters['groupOp'];
  162. $rules = $filters['rules'];
  163. $like_condition = array();
  164. foreach ($rules as $rule){
  165. $field = $rule['field'];
  166. $op= $rule['op'];
  167. $input = $rule['data'];
  168. if ($field=='parent_id'){
  169. //$input = $this->Resource->getId($input);
  170. //$field = 'resource';
  171. $resourcesparents = $this->Resource->getAll(false,null,null,array('resource'=>$input));
  172. $resourcesparentsid = array();
  173. foreach($resourcesparents as $parents){
  174. array_push($resourcesparentsid,$parents['id']);
  175. }
  176. $in_res_array = array('field_name'=>$field,'id_array'=>$resourcesparentsid);
  177. }
  178. else if ($field=='resource_type_id'){
  179. $input = $this->Resource->getResourceTypeId($input);
  180. $like_condition[$field] = $input;
  181. }
  182. else {
  183. $like_condition[$field] = $input;
  184. }
  185. }
  186. $resources = $this->Resource->getAll(false,null,$clauses,$like_condition,$in_res_array);
  187. }
  188. else {
  189. $resources = $this->Resource->getAll(false,null,$clauses);
  190. }
  191. foreach ($resources as $dp){
  192. array_push($resourcesdata, array('id'=> $dp['id'],'dprow' => array($dp['resource'],
  193. $this->Resource->getResourceTypeName($dp['resource_type_id']),$this->Resource->getResourceName($dp['parent_id']),$dp['description'],$dp['ui_display_name'],$dp['relative_path_link'],$dp['relative_order_in_category'])));
  194. }
  195. $data['resourcedata'] = $resourcesdata;
  196. echo json_encode($data);
  197. }
  198. function populateResourceTypesEdit (){
  199. $resourceTypeOptions = null;
  200. $resources = $this->Resource->getAllResourceTypes();
  201. foreach($resources as $resource) {
  202. $name=$resource["name"];
  203. $id=$resource["id"];
  204. if (!empty($name)){
  205. $resourceTypeOptions.="<OPTION VALUE=\"$id\">".$name;
  206. }
  207. }
  208. echo $resourceTypeOptions;
  209. }
  210. function populatePermissionTypesEdit (){
  211. $permissionTypeOptions = null;
  212. $permissions = $this->Permission->getAllPermissionTypes();
  213. foreach($permissions as $permission) {
  214. $name=$permission["permission"];
  215. $id=$permission["id"];
  216. if (!empty($name)){
  217. $permissionTypeOptions.="<OPTION VALUE=\"$id\">".$name;
  218. }
  219. }
  220. echo $permissionTypeOptions;
  221. }
  222. function populateParentResourcesEdit(){
  223. $parentOptions = null;
  224. $parents = $this->Resource->getAll();
  225. foreach($parents as $parent) {
  226. $name=$parent["resource"];
  227. $id=$parent["id"];
  228. if (!empty($name)){
  229. $parentOptions.="<OPTION VALUE=\"$id\">".$name;
  230. }
  231. }
  232. echo $parentOptions;
  233. }
  234. function editResource (){
  235. $oper = $_REQUEST['oper'];
  236. $resource = $_REQUEST['resource'];
  237. $resource_type_id = $_REQUEST['resource_type_id'];
  238. $parent_id = $_REQUEST['parent_id'];
  239. $description = $_REQUEST['description'];
  240. $ui_display_name = $_REQUEST['ui_display_name'];
  241. $relative_path_link = $_REQUEST['relative_path_link'];
  242. $relative_order_in_category = $_REQUEST['relative_order_in_category'];
  243. $id = $_REQUEST['id'];
  244. if ($id=='_empty'){
  245. $id=false;
  246. }
  247. $resourcedata = array();
  248. //
  249. $resourcedata['resource'] = $resource;
  250. $resourcedata['resource_type_id'] = $resource_type_id;
  251. $resourcedata['parent_id'] = $parent_id;
  252. $resourcedata['description'] = $description;
  253. $resourcedata['ui_display_name'] = $ui_display_name;
  254. $resourcedata['relative_order_in_category'] = $relative_order_in_category;
  255. $resourcedata['relative_path_link'] = $relative_path_link;
  256. $this->Resource->save($resourcedata,$id);
  257. }
  258. function populatePermissions(){
  259. $searchOn = strip($_REQUEST['_search']);
  260. $page = $_REQUEST['page'];
  261. $limit = $_REQUEST['rows'];
  262. $sidx = $_REQUEST['sidx'];
  263. $sord = $_REQUEST['sord'];
  264. $permissionsdata = array();
  265. $count = $this->Permission->totalNoOfRowsPermissionMapping();
  266. if( $count > 0 && $limit > 0) {
  267. $total_pages = ceil($count/$limit);
  268. } else {
  269. $total_pages = 0;
  270. }
  271. if ($page > $total_pages) $page=$total_pages;
  272. $start = $limit*$page - $limit;
  273. // if for some reasons start position is negative set it to 0
  274. // typical case is that the user type 0 for the requested page
  275. if($start <0) $start = 0;
  276. $clauses = array('orderBy'=>$sidx,'orderDir'=>$sord,'startLimit'=>$start,'limit'=>$limit);
  277. $data['total'] = $total_pages;
  278. $data['page'] = $page;
  279. $data['records'] = strval($count);
  280. if($searchOn=='true') {
  281. $filters = json_decode($_REQUEST['filters'],true);
  282. $groupOp = $filters['groupOp'];
  283. $rules = $filters['rules'];
  284. $like_condition = array();
  285. foreach ($rules as $rule){
  286. $field = $rule['field'];
  287. $op= $rule['op'];
  288. $input = $rule['data'];
  289. $like_condition[$field] = $input;
  290. }
  291. $permissions = $this->Permission->getAllPermissionMapping(false,null,$clauses,$like_condition);
  292. }
  293. else {
  294. $permissions = $this->Permission->getAllPermissionMapping(false,null,$clauses);
  295. }
  296. foreach ($permissions as $dp){
  297. array_push($permissionsdata, array('id'=> $dp['id'],'dprow' => array($dp['role_name'],$dp['resource_name'],$dp['permission_name'],$dp['isAllowed'])));
  298. }
  299. $data['permissiondata'] = $permissionsdata;
  300. echo json_encode($data);
  301. }
  302. function checkIfExists (){
  303. $roleid = $_REQUEST['role_name'];
  304. $resourceid = $_REQUEST['resource_name'];
  305. $permissionid = $_REQUEST['permission_name'];
  306. $status = $this->Permission->permissionExists($roleid,$resourceid,$permissionid);
  307. if ($status){
  308. return true;
  309. }
  310. else {
  311. return false;
  312. }
  313. }
  314. function editPermission (){
  315. $oper = $_REQUEST['oper'];
  316. if($oper == 'add' && $this->checkIfExists()){
  317. echo 'error';
  318. }
  319. else {
  320. $roleid = $_REQUEST['role_name'];
  321. $resourceid = $_REQUEST['resource_name'];
  322. $permissionid = $_REQUEST['permission_name'];
  323. $isAllowed = $_REQUEST['isAllowed'];
  324. $role_name = $this->Role->getName($roleid);
  325. $resource_name = $this->Resource->getResourceName($resourceid);
  326. $permission_name = $this->Permission->getPermissionName($permissionid);
  327. $id = $_REQUEST['id'];
  328. if ($id=='_empty'){
  329. $id=false;
  330. }
  331. $permissiondata = array();
  332. $permissiondata['role_id'] = $roleid;
  333. $permissiondata['role_name'] = $role_name;
  334. $permissiondata['resource_id'] = $resourceid;
  335. $permissiondata['resource_name'] = $resource_name;
  336. $permissiondata['permission_id'] = $permissionid;
  337. $permissiondata['permission_name'] = $permission_name;
  338. $permissiondata['isAllowed'] = $isAllowed;
  339. $this->Permission->save($permissiondata,$id);
  340. echo 'success';
  341. }
  342. }
  343. public function populateRoles(){
  344. $searchOn = strip($_REQUEST['_search']);
  345. $page = $_REQUEST['page'];
  346. $limit = $_REQUEST['rows'];
  347. $sidx = $_REQUEST['sidx'];
  348. $sord = $_REQUEST['sord'];
  349. $rolesdata = array();
  350. $count = $this->Role->totalNoOfRowsInParentMapping();
  351. if( $count > 0 && $limit > 0) {
  352. $total_pages = ceil($count/$limit);
  353. } else {
  354. $total_pages = 0;
  355. }
  356. if ($page > $total_pages) $page=$total_pages;
  357. $start = $limit*$page - $limit;
  358. // if for some reasons start position is negative set it to 0
  359. // typical case is that the user type 0 for the requested page
  360. if($start <0) $start = 0;
  361. $clauses = array('orderBy'=>$sidx,'orderDir'=>$sord,'startLimit'=>$start,'limit'=>$limit);
  362. $data['total'] = $total_pages;
  363. $data['page'] = $page;
  364. $data['records'] = $count;
  365. if($searchOn=='true') {
  366. $filters = json_decode($_REQUEST['filters'],true);
  367. $groupOp = $filters['groupOp'];
  368. $rules = $filters['rules'];
  369. $like_condition = array();
  370. foreach ($rules as $rule){
  371. $field = $rule['field'];
  372. $op= $rule['op'];
  373. $input = $rule['data'];
  374. $like_condition[$field] = $input;
  375. }
  376. $roles = $this->Role->getAllParentsMapping(false,null,$clauses,$like_condition);
  377. }
  378. else {
  379. $roles = $this->Role->getAllParentsMapping(false,null,$clauses);
  380. }
  381. //$dp['system_name']
  382. foreach ($roles as $dp){
  383. array_push($rolesdata, array('id'=> $dp['id'],'dprow' => array($dp['role_name'],$dp['parent_role_name'])));
  384. }
  385. $data['roledata'] = $rolesdata;
  386. echo json_encode($data);
  387. }
  388. function checkIfRoleParentExists (){
  389. $roleid = $_REQUEST['role_id'];
  390. $parentroleid = $_REQUEST['parent_role_id'];
  391. $status = $this->Role->parentExists($roleid,$parentroleid);
  392. if ($status){
  393. return true;
  394. }
  395. else {
  396. return false;
  397. }
  398. }
  399. function editRoleInheritance (){
  400. if($this->checkIfRoleParentExists()){
  401. echo 'error';
  402. }
  403. else {
  404. $oper = $_REQUEST['oper'];
  405. $roleid = $_REQUEST['role_id'];
  406. $parentid = $_REQUEST['parent_role_id'];
  407. $role_name = $this->Role->getName($roleid);
  408. $parent_name = $this->Role->getName($parentid);
  409. $id = $_REQUEST['id'];
  410. if ($id=='_empty'){
  411. $id=false;
  412. }
  413. $parentdata = array();
  414. //
  415. $parentdata['role_id'] = $roleid;
  416. $parentdata['role_name'] = $role_name;
  417. $parentdata['parent_role_id'] = $parentid;
  418. $parentdata['parent_role_name'] = $parent_name;
  419. $this->Role->saveParent($parentdata,$id);
  420. echo 'success';
  421. }
  422. }
  423. // function checkIfRoleExists
  424. function createRole (){
  425. //$oper = $_REQUEST['oper'];
  426. $rolename= $_REQUEST['name'];
  427. $parents = $_REQUEST['parent'];
  428. $role_data = array('role_name'=>$rolename);
  429. $this->Role->insert($role_data,$parents);
  430. // $role_name = $this->Role->getName($roleid);
  431. // $parent_name = $this->Role->getName($parentid);
  432. //
  433. //
  434. // $id = $_REQUEST['id'];
  435. // if ($id=='_empty'){
  436. // $id=false;
  437. // }
  438. // $parentdata = array();
  439. ////
  440. // $parentdata['role_id'] = $roleid;
  441. // $parentdata['role_name'] = $role_name;
  442. // $parentdata['parent_role_id'] = $parentid;
  443. // $parentdata['parent_role_name'] = $parent_name;
  444. }
  445. }
  446. ?>