25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

294 lines
6.9 KiB

  1. {
  2. "meta": {
  3. "options": {
  4. "linkedFile": "/views/registration.ejs",
  5. "linkedForm": "register1"
  6. },
  7. "$_POST": [
  8. {
  9. "type": "text",
  10. "fieldName": "username",
  11. "name": "username"
  12. },
  13. {
  14. "type": "text",
  15. "fieldName": "userid",
  16. "name": "userid"
  17. },
  18. {
  19. "type": "text",
  20. "fieldName": "firstname",
  21. "options": {
  22. "rules": {
  23. "core:required": {
  24. "param": ""
  25. }
  26. }
  27. },
  28. "name": "firstname"
  29. },
  30. {
  31. "type": "text",
  32. "fieldName": "lastname",
  33. "options": {
  34. "rules": {
  35. "core:required": {
  36. "param": ""
  37. }
  38. }
  39. },
  40. "name": "lastname"
  41. },
  42. {
  43. "type": "text",
  44. "fieldName": "email",
  45. "options": {
  46. "rules": {
  47. "core:required": {
  48. "param": ""
  49. },
  50. "core:email": {
  51. "param": ""
  52. }
  53. }
  54. },
  55. "name": "email"
  56. },
  57. {
  58. "type": "text",
  59. "fieldName": "password",
  60. "options": {
  61. "rules": {
  62. "core:required": {
  63. "param": ""
  64. },
  65. "core:minlength": {
  66. "param": "8"
  67. }
  68. }
  69. },
  70. "name": "password"
  71. },
  72. {
  73. "type": "text",
  74. "fieldName": "password2",
  75. "options": {
  76. "rules": {
  77. "core:equalTo": {
  78. "param": "password"
  79. }
  80. }
  81. },
  82. "name": "password2"
  83. },
  84. {
  85. "type": "text",
  86. "name": "pwd"
  87. }
  88. ]
  89. },
  90. "exec": {
  91. "steps": [
  92. {
  93. "name": "validate",
  94. "module": "validator",
  95. "action": "validate",
  96. "options": {
  97. "data": [
  98. {
  99. "name": "validate_1",
  100. "value": "{{$_POST.email}}",
  101. "rules": {
  102. "db:notexists": {
  103. "param": {
  104. "connection": "authdb",
  105. "table": "users",
  106. "column": "email"
  107. }
  108. }
  109. }
  110. }
  111. ]
  112. }
  113. },
  114. {
  115. "name": "",
  116. "module": "core",
  117. "action": "condition",
  118. "options": {
  119. "if": "{{$_POST.username.length()>0}}",
  120. "then": {
  121. "steps": {
  122. "name": "Unauthorized",
  123. "module": "core",
  124. "action": "response",
  125. "options": {
  126. "status": 401,
  127. "data": "Unauthorized"
  128. }
  129. }
  130. }
  131. },
  132. "outputType": "boolean"
  133. },
  134. {
  135. "name": "",
  136. "module": "core",
  137. "action": "condition",
  138. "options": {
  139. "if": "{{$_POST.userid!=$_SESSION.regcode}}",
  140. "then": {
  141. "steps": {
  142. "name": "Unauthorized",
  143. "module": "core",
  144. "action": "response",
  145. "options": {
  146. "status": 401,
  147. "data": "Unauthorized"
  148. }
  149. }
  150. }
  151. },
  152. "outputType": "boolean"
  153. },
  154. {
  155. "name": "hash",
  156. "module": "crypto",
  157. "action": "passwordHash",
  158. "options": {
  159. "password": "{{$_POST.password}}"
  160. },
  161. "outputType": "text",
  162. "output": true
  163. },
  164. {
  165. "name": "validationcode",
  166. "module": "core",
  167. "action": "setvalue",
  168. "options": {
  169. "key": "g_validationcode",
  170. "value": "{{UUID}}"
  171. },
  172. "meta": [],
  173. "outputType": "text",
  174. "output": true
  175. },
  176. {
  177. "name": "insert",
  178. "module": "dbupdater",
  179. "action": "insert",
  180. "options": {
  181. "connection": "authdb",
  182. "sql": {
  183. "type": "insert",
  184. "values": [
  185. {
  186. "table": "users",
  187. "column": "email",
  188. "type": "text",
  189. "value": "{{$_POST.email}}"
  190. },
  191. {
  192. "table": "users",
  193. "column": "pwd",
  194. "type": "text",
  195. "value": "{{hash}}"
  196. },
  197. {
  198. "table": "users",
  199. "column": "regcode",
  200. "type": "text",
  201. "value": "{{validationcode}}"
  202. },
  203. {
  204. "table": "users",
  205. "column": "firstname",
  206. "type": "text",
  207. "value": "{{$_POST.firstname}}"
  208. },
  209. {
  210. "table": "users",
  211. "column": "lastname",
  212. "type": "text",
  213. "value": "{{$_POST.lastname}}"
  214. }
  215. ],
  216. "table": "users",
  217. "returning": "id",
  218. "query": "insert into `users` (`email`, `firstname`, `lastname`, `pwd`, `regcode`) values (?, ?, ?, ?, ?) returning `id`",
  219. "params": [
  220. {
  221. "name": ":P1",
  222. "type": "expression",
  223. "value": "{{$_POST.email}}",
  224. "test": ""
  225. },
  226. {
  227. "name": ":P2",
  228. "type": "expression",
  229. "value": "{{hash}}",
  230. "test": ""
  231. },
  232. {
  233. "name": ":P3",
  234. "type": "expression",
  235. "value": "{{validationcode}}",
  236. "test": ""
  237. },
  238. {
  239. "name": ":P4",
  240. "type": "expression",
  241. "value": "{{$_POST.firstname}}",
  242. "test": ""
  243. },
  244. {
  245. "name": ":P5",
  246. "type": "expression",
  247. "value": "{{$_POST.lastname}}",
  248. "test": ""
  249. }
  250. ]
  251. }
  252. },
  253. "meta": [
  254. {
  255. "name": "identity",
  256. "type": "number"
  257. },
  258. {
  259. "name": "affected",
  260. "type": "number"
  261. }
  262. ],
  263. "output": true
  264. },
  265. {
  266. "name": "",
  267. "module": "mail",
  268. "action": "send",
  269. "options": {
  270. "instance": "mail",
  271. "subject": "Validation Code",
  272. "fromName": "No-Reply",
  273. "fromEmail": "no-reply@rpmindustries.com",
  274. "toName": "{{$_POST.firstname+' '+$_POST.lastname}}",
  275. "toEmail": "{{$_POST.email}}",
  276. "body": "Your validation code is : {{validationcode}}"
  277. },
  278. "metaData": {
  279. "sendToName": {
  280. "name": "lastname",
  281. "type": "text"
  282. },
  283. "sendToEmail": {
  284. "name": "email",
  285. "type": "text"
  286. }
  287. }
  288. }
  289. ]
  290. },
  291. "usedModules": {
  292. "argon2": "^0.30.2"
  293. }
  294. }