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.
 
 
 

551 lines
13 KiB

  1. {
  2. "meta": {
  3. "$_GET": [
  4. {
  5. "type": "text",
  6. "name": "sort"
  7. },
  8. {
  9. "type": "text",
  10. "name": "dir"
  11. }
  12. ]
  13. },
  14. "exec": {
  15. "steps": [
  16. {
  17. "name": "identity",
  18. "module": "auth",
  19. "action": "identify",
  20. "options": {
  21. "provider": "auth"
  22. },
  23. "output": true,
  24. "meta": []
  25. },
  26. {
  27. "name": "user",
  28. "module": "dbconnector",
  29. "action": "single",
  30. "options": {
  31. "connection": "authdb",
  32. "sql": {
  33. "type": "select",
  34. "columns": [
  35. {
  36. "table": "users",
  37. "column": "id"
  38. },
  39. {
  40. "table": "users",
  41. "column": "email"
  42. },
  43. {
  44. "table": "users",
  45. "column": "regcode"
  46. },
  47. {
  48. "table": "users",
  49. "column": "validated"
  50. },
  51. {
  52. "table": "users",
  53. "column": "firstname"
  54. },
  55. {
  56. "table": "users",
  57. "column": "lastname"
  58. }
  59. ],
  60. "params": [
  61. {
  62. "operator": "equal",
  63. "type": "expression",
  64. "name": ":P1",
  65. "value": "{{identity}}",
  66. "test": ""
  67. }
  68. ],
  69. "table": {
  70. "name": "users"
  71. },
  72. "primary": "id",
  73. "joins": [],
  74. "query": "select `id`, `email`, `regcode`, `validated`, `firstname`, `lastname` from `users` where `users`.`id` = ?",
  75. "wheres": {
  76. "condition": "AND",
  77. "rules": [
  78. {
  79. "id": "users.id",
  80. "field": "users.id",
  81. "type": "double",
  82. "operator": "equal",
  83. "value": "{{identity}}",
  84. "data": {
  85. "table": "users",
  86. "column": "id",
  87. "type": "number",
  88. "columnObj": {
  89. "type": "increments",
  90. "primary": true,
  91. "unique": false,
  92. "nullable": false,
  93. "name": "id"
  94. }
  95. },
  96. "operation": "=",
  97. "table": "users"
  98. }
  99. ],
  100. "conditional": null,
  101. "valid": true
  102. }
  103. }
  104. },
  105. "meta": [
  106. {
  107. "type": "number",
  108. "name": "id"
  109. },
  110. {
  111. "type": "text",
  112. "name": "email"
  113. },
  114. {
  115. "type": "text",
  116. "name": "regcode"
  117. },
  118. {
  119. "type": "boolean",
  120. "name": "validated"
  121. },
  122. {
  123. "type": "text",
  124. "name": "firstname"
  125. },
  126. {
  127. "type": "text",
  128. "name": "lastname"
  129. }
  130. ],
  131. "outputType": "object"
  132. },
  133. {
  134. "name": "roles",
  135. "module": "dbconnector",
  136. "action": "select",
  137. "options": {
  138. "connection": "authdb",
  139. "sql": {
  140. "type": "select",
  141. "columns": [
  142. {
  143. "table": "roles",
  144. "column": "id"
  145. },
  146. {
  147. "table": "roles",
  148. "column": "name"
  149. },
  150. {
  151. "table": "roles",
  152. "column": "isDepartment"
  153. }
  154. ],
  155. "params": [
  156. {
  157. "operator": "equal",
  158. "type": "expression",
  159. "name": ":P1",
  160. "value": "{{identity}}",
  161. "test": ""
  162. }
  163. ],
  164. "table": {
  165. "name": "roles"
  166. },
  167. "primary": "id",
  168. "joins": [
  169. {
  170. "table": "xuserrole",
  171. "column": "*",
  172. "type": "INNER",
  173. "clauses": {
  174. "condition": "AND",
  175. "rules": [
  176. {
  177. "table": "xuserrole",
  178. "column": "roleid",
  179. "operator": "equal",
  180. "operation": "=",
  181. "value": {
  182. "table": "roles",
  183. "column": "id"
  184. }
  185. }
  186. ]
  187. },
  188. "primary": "id"
  189. }
  190. ],
  191. "wheres": {
  192. "condition": "AND",
  193. "rules": [
  194. {
  195. "id": "xuserrole.userid",
  196. "field": "xuserrole.userid",
  197. "type": "double",
  198. "operator": "equal",
  199. "value": "{{identity}}",
  200. "data": {
  201. "table": "xuserrole",
  202. "column": "userid",
  203. "type": "number",
  204. "columnObj": {
  205. "type": "integer",
  206. "primary": false,
  207. "unique": false,
  208. "nullable": true,
  209. "name": "userid"
  210. }
  211. },
  212. "operation": "="
  213. }
  214. ],
  215. "conditional": null,
  216. "valid": true
  217. },
  218. "query": "select `roles`.`id`, `roles`.`name`, `roles`.`isDepartment` from `roles` inner join `xuserrole` on `xuserrole`.`roleid` = `roles`.`id` where `xuserrole`.`userid` = ?"
  219. }
  220. },
  221. "meta": [
  222. {
  223. "type": "number",
  224. "name": "id"
  225. },
  226. {
  227. "type": "text",
  228. "name": "name"
  229. },
  230. {
  231. "type": "boolean",
  232. "name": "isDepartment"
  233. }
  234. ],
  235. "outputType": "array"
  236. },
  237. {
  238. "name": "validated",
  239. "module": "core",
  240. "action": "setvalue",
  241. "options": {
  242. "key": "g_validated",
  243. "value": "{{user.validated==1}}"
  244. },
  245. "meta": [
  246. {
  247. "name": "id",
  248. "type": "number"
  249. },
  250. {
  251. "name": "email",
  252. "type": "text"
  253. },
  254. {
  255. "name": "regcode",
  256. "type": "text"
  257. },
  258. {
  259. "name": "validated",
  260. "type": "boolean"
  261. },
  262. {
  263. "name": "firstname",
  264. "type": "text"
  265. },
  266. {
  267. "name": "lastname",
  268. "type": "text"
  269. }
  270. ],
  271. "outputType": "text",
  272. "metaData": {},
  273. "output": true
  274. },
  275. {
  276. "name": "associate",
  277. "module": "core",
  278. "action": "setvalue",
  279. "options": {
  280. "key": "g_associate",
  281. "value": "{{roles.where('id', '==', 4).count()>0}}"
  282. },
  283. "meta": [
  284. {
  285. "name": "id",
  286. "type": "number"
  287. },
  288. {
  289. "name": "name",
  290. "type": "text"
  291. },
  292. {
  293. "name": "isDepartment",
  294. "type": "boolean"
  295. }
  296. ],
  297. "outputType": "text",
  298. "metaData": {
  299. "setValueExpression": {
  300. "name": "roles",
  301. "type": "array"
  302. }
  303. },
  304. "output": true
  305. },
  306. {
  307. "name": "administrator",
  308. "module": "core",
  309. "action": "setvalue",
  310. "options": {
  311. "key": "g_administrator",
  312. "value": "{{roles.where('id', '==', 1).count()>0}}"
  313. },
  314. "meta": [
  315. {
  316. "name": "id",
  317. "type": "number"
  318. },
  319. {
  320. "name": "name",
  321. "type": "text"
  322. },
  323. {
  324. "name": "isDepartment",
  325. "type": "boolean"
  326. }
  327. ],
  328. "outputType": "text",
  329. "metaData": {},
  330. "output": true
  331. },
  332. {
  333. "name": "manager",
  334. "module": "core",
  335. "action": "setvalue",
  336. "options": {
  337. "key": "g_manager",
  338. "value": "{{roles.where('id', '==', 6).count()>0}}"
  339. },
  340. "meta": [
  341. {
  342. "name": "id",
  343. "type": "number"
  344. },
  345. {
  346. "name": "name",
  347. "type": "text"
  348. },
  349. {
  350. "name": "isDepartment",
  351. "type": "boolean"
  352. }
  353. ],
  354. "outputType": "text",
  355. "output": true
  356. },
  357. {
  358. "name": "lead",
  359. "module": "core",
  360. "action": "setvalue",
  361. "options": {
  362. "key": "g_lead",
  363. "value": "{{roles.where('id', '==', 7).count()>0}}"
  364. },
  365. "meta": [
  366. {
  367. "name": "id",
  368. "type": "number"
  369. },
  370. {
  371. "name": "name",
  372. "type": "text"
  373. },
  374. {
  375. "name": "isDepartment",
  376. "type": "boolean"
  377. }
  378. ],
  379. "outputType": "text",
  380. "output": true
  381. },
  382. {
  383. "name": "administration_dept",
  384. "module": "core",
  385. "action": "setvalue",
  386. "options": {
  387. "key": "g_administration_dept",
  388. "value": "{{roles.where('id', '==', 5).count()>0}}"
  389. },
  390. "meta": [
  391. {
  392. "name": "id",
  393. "type": "number"
  394. },
  395. {
  396. "name": "name",
  397. "type": "text"
  398. },
  399. {
  400. "name": "isDepartment",
  401. "type": "boolean"
  402. }
  403. ],
  404. "outputType": "text",
  405. "output": true
  406. },
  407. {
  408. "name": "engineering_dept",
  409. "module": "core",
  410. "action": "setvalue",
  411. "options": {
  412. "key": "g_engineering_dept",
  413. "value": "{{roles.where('id', '==', 3).count()>0}}"
  414. },
  415. "meta": [
  416. {
  417. "name": "id",
  418. "type": "number"
  419. },
  420. {
  421. "name": "name",
  422. "type": "text"
  423. },
  424. {
  425. "name": "isDepartment",
  426. "type": "boolean"
  427. }
  428. ],
  429. "outputType": "text",
  430. "output": true
  431. },
  432. {
  433. "name": "operations_dept",
  434. "module": "core",
  435. "action": "setvalue",
  436. "options": {
  437. "key": "g_operations_dept",
  438. "value": "{{roles.where('id', '==', 2).count()>0}}"
  439. },
  440. "meta": [
  441. {
  442. "name": "id",
  443. "type": "number"
  444. },
  445. {
  446. "name": "name",
  447. "type": "text"
  448. },
  449. {
  450. "name": "isDepartment",
  451. "type": "boolean"
  452. }
  453. ],
  454. "outputType": "text",
  455. "output": true
  456. },
  457. {
  458. "name": "ops_excellence_dept",
  459. "module": "core",
  460. "action": "setvalue",
  461. "options": {
  462. "key": "g_ops_excellence_dept",
  463. "value": "{{roles.where('id', '==', 8).count()>0}}"
  464. },
  465. "meta": [
  466. {
  467. "name": "id",
  468. "type": "number"
  469. },
  470. {
  471. "name": "name",
  472. "type": "text"
  473. },
  474. {
  475. "name": "isDepartment",
  476. "type": "boolean"
  477. }
  478. ],
  479. "outputType": "text",
  480. "output": true
  481. },
  482. {
  483. "name": "business_development_dept",
  484. "module": "core",
  485. "action": "setvalue",
  486. "options": {
  487. "key": "g_business_development_dept",
  488. "value": "{{roles.where('id', '==', 9).count()>0}}"
  489. },
  490. "meta": [
  491. {
  492. "name": "id",
  493. "type": "number"
  494. },
  495. {
  496. "name": "name",
  497. "type": "text"
  498. },
  499. {
  500. "name": "isDepartment",
  501. "type": "boolean"
  502. }
  503. ],
  504. "outputType": "text",
  505. "output": true
  506. },
  507. {
  508. "name": "",
  509. "module": "core",
  510. "action": "condition",
  511. "options": {
  512. "if": "{{!validated}}",
  513. "then": {
  514. "steps": {
  515. "name": "Forbidden",
  516. "module": "core",
  517. "action": "response",
  518. "options": {
  519. "status": 403,
  520. "data": "Unvalidated"
  521. }
  522. }
  523. }
  524. },
  525. "outputType": "boolean",
  526. "metaData": {}
  527. },
  528. {
  529. "name": "",
  530. "module": "core",
  531. "action": "condition",
  532. "options": {
  533. "if": "{{!associate&&!administrator&&!manager&&!lead}}",
  534. "then": {
  535. "steps": {
  536. "name": "Unauthorized",
  537. "module": "core",
  538. "action": "response",
  539. "options": {
  540. "status": 401,
  541. "data": "Not the correct role"
  542. }
  543. }
  544. }
  545. },
  546. "outputType": "boolean",
  547. "metaData": {}
  548. }
  549. ]
  550. }
  551. }