Google Authenticator – WordPress Two Factor Authentication (2FA) - Version 5.4.8

Version Description

Download this release

Release Info

Developer cyberlord92
Plugin Icon 128x128 Google Authenticator – WordPress Two Factor Authentication (2FA)
Version 5.4.8
Comparing to
See all releases

Code changes from version 5.4.7 to 5.4.8

Files changed (253) hide show
  1. {api → miniorange-2-factor-authentication/api}/Mo2f_OnPremRedirect.php +0 -0
  2. {api → miniorange-2-factor-authentication/api}/class-customer-setup.php +0 -0
  3. {api → miniorange-2-factor-authentication/api}/class-rba-attributes.php +0 -0
  4. {api → miniorange-2-factor-authentication/api}/class-two-factor-setup.php +0 -0
  5. {api → miniorange-2-factor-authentication/api}/mo2f_api.php +0 -0
  6. {controllers → miniorange-2-factor-authentication/controllers}/account.php +0 -0
  7. {controllers → miniorange-2-factor-authentication/controllers}/advanced-blocking.php +0 -0
  8. {controllers → miniorange-2-factor-authentication/controllers}/backup/backup.php +0 -0
  9. {controllers → miniorange-2-factor-authentication/controllers}/backup/backup_ajax.php +0 -0
  10. {controllers → miniorange-2-factor-authentication/controllers}/backup/backup_controller.php +0 -0
  11. {controllers → miniorange-2-factor-authentication/controllers}/backup/backup_created_report.php +0 -0
  12. {controllers → miniorange-2-factor-authentication/controllers}/backup/backup_created_result.php +0 -0
  13. {controllers → miniorange-2-factor-authentication/controllers}/backup/backup_schdule.php +0 -0
  14. {controllers → miniorange-2-factor-authentication/controllers}/change-password.php +0 -0
  15. {controllers → miniorange-2-factor-authentication/controllers}/content-protection.php +0 -0
  16. {controllers → miniorange-2-factor-authentication/controllers}/dashboard.php +0 -0
  17. {controllers → miniorange-2-factor-authentication/controllers}/dashboard_ajax.php +0 -0
  18. {controllers → miniorange-2-factor-authentication/controllers}/feedback_form.php +0 -0
  19. {controllers → miniorange-2-factor-authentication/controllers}/ip-blocking.php +0 -0
  20. {controllers → miniorange-2-factor-authentication/controllers}/licensing.php +0 -0
  21. {controllers → miniorange-2-factor-authentication/controllers}/login-security.php +0 -0
  22. {controllers → miniorange-2-factor-authentication/controllers}/login-spam.php +0 -0
  23. {controllers → miniorange-2-factor-authentication/controllers}/main_controller.php +0 -0
  24. {controllers → miniorange-2-factor-authentication/controllers}/malware_scanner/malware_scan_ajax.php +0 -0
  25. {controllers → miniorange-2-factor-authentication/controllers}/malware_scanner/malware_scan_result.php +0 -0
  26. {controllers → miniorange-2-factor-authentication/controllers}/malware_scanner/scan_malware.php +0 -0
  27. {controllers → miniorange-2-factor-authentication/controllers}/malware_scanner/scan_malware_report.php +0 -0
  28. {controllers → miniorange-2-factor-authentication/controllers}/malware_scanner/scan_malware_settings.php +0 -0
  29. {controllers → miniorange-2-factor-authentication/controllers}/malware_scanner/scan_malware_summary.php +0 -0
  30. {controllers → miniorange-2-factor-authentication/controllers}/navbar.php +0 -0
  31. {controllers → miniorange-2-factor-authentication/controllers}/newtork_security_features.php +0 -0
  32. {controllers → miniorange-2-factor-authentication/controllers}/notification-settings.php +0 -0
  33. {controllers → miniorange-2-factor-authentication/controllers}/registration-security.php +0 -0
  34. {controllers → miniorange-2-factor-authentication/controllers}/reports.php +0 -0
  35. {controllers → miniorange-2-factor-authentication/controllers}/request_demo.php +0 -0
  36. {controllers → miniorange-2-factor-authentication/controllers}/support.php +0 -0
  37. {controllers → miniorange-2-factor-authentication/controllers}/tour-model.php +0 -0
  38. {controllers → miniorange-2-factor-authentication/controllers}/troubleshooting.php +0 -0
  39. {controllers → miniorange-2-factor-authentication/controllers}/twofa/mo2fa_common_login.php +18 -0
  40. {controllers → miniorange-2-factor-authentication/controllers}/twofa/setup_twofa.php +0 -0
  41. {controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa.php +0 -0
  42. {controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_addon.php +0 -0
  43. {controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_custom_form.php +0 -0
  44. {controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_custom_login.php +0 -0
  45. {controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_login_option.php +0 -0
  46. {controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_rba.php +0 -0
  47. miniorange-2-factor-authentication/controllers/twofa/two_fa_session_control.php +3 -0
  48. {controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_shortcode.php +0 -0
  49. {controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_unlimittedUser.php +0 -0
  50. {controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_unlimittedUser_ajax.php +0 -0
  51. {controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_video_guide.php +0 -0
  52. {controllers → miniorange-2-factor-authentication/controllers}/twofa/two_factor_ajax.php +0 -0
  53. {controllers → miniorange-2-factor-authentication/controllers}/upgrade.php +0 -0
  54. {controllers → miniorange-2-factor-authentication/controllers}/waf.php +0 -0
  55. {controllers → miniorange-2-factor-authentication/controllers}/wpns-loginsecurity-ajax.php +0 -0
  56. {database → miniorange-2-factor-authentication/database}/database_functions.php +0 -0
  57. {database → miniorange-2-factor-authentication/database}/database_functions_2fa.php +0 -0
  58. {handler → miniorange-2-factor-authentication/handler}/WAF/database/mo-waf-db.php +0 -0
  59. {handler → miniorange-2-factor-authentication/handler}/WAF/database/mo-waf-plugin-db.php +0 -0
  60. {handler → miniorange-2-factor-authentication/handler}/WAF/mo-waf-plugin.php +0 -0
  61. {handler → miniorange-2-factor-authentication/handler}/WAF/mo-waf.php +0 -0
  62. {handler → miniorange-2-factor-authentication/handler}/WAF/waf-include.php +0 -0
  63. {handler → miniorange-2-factor-authentication/handler}/ajax.php +0 -0
  64. {handler → miniorange-2-factor-authentication/handler}/backup.php +0 -0
  65. {handler → miniorange-2-factor-authentication/handler}/feedback_form.php +33 -9
  66. {handler → miniorange-2-factor-authentication/handler}/logger.php +0 -0
  67. {handler → miniorange-2-factor-authentication/handler}/login.php +0 -0
  68. {handler → miniorange-2-factor-authentication/handler}/malware_scanner.php +0 -0
  69. {handler → miniorange-2-factor-authentication/handler}/malware_scanner/malware_scanner_cron.php +0 -0
  70. {handler → miniorange-2-factor-authentication/handler}/malware_scanner/scanner_set_cron.php +0 -0
  71. {handler → miniorange-2-factor-authentication/handler}/mo-block.html +0 -0
  72. {handler → miniorange-2-factor-authentication/handler}/mo-error.html +0 -0
  73. {handler → miniorange-2-factor-authentication/handler}/mo-waf-plugin.php +0 -0
  74. {handler → miniorange-2-factor-authentication/handler}/mo-waf.php +0 -0
  75. {handler → miniorange-2-factor-authentication/handler}/recaptcha.php +0 -0
  76. {handler → miniorange-2-factor-authentication/handler}/registration.php +0 -0
  77. {handler → miniorange-2-factor-authentication/handler}/security_features.php +0 -0
  78. {handler → miniorange-2-factor-authentication/handler}/signature/APLFI.php +0 -0
  79. {handler → miniorange-2-factor-authentication/handler}/signature/APSQLI.php +0 -0
  80. {handler → miniorange-2-factor-authentication/handler}/signature/APXSS.php +0 -0
  81. {handler → miniorange-2-factor-authentication/handler}/spam.php +0 -0
  82. {handler → miniorange-2-factor-authentication/handler}/twofa/class_miniorange_2fa_strong_password.php +0 -0
  83. {handler → miniorange-2-factor-authentication/handler}/twofa/encryption.php +0 -0
  84. {handler → miniorange-2-factor-authentication/handler}/twofa/gaonprem.php +0 -0
  85. {handler → miniorange-2-factor-authentication/handler}/twofa/setup_twofa.php +48 -5
  86. {handler → miniorange-2-factor-authentication/handler}/twofa/two_fa_constants.php +0 -0
  87. {handler → miniorange-2-factor-authentication/handler}/twofa/two_fa_login.php +0 -0
  88. {handler → miniorange-2-factor-authentication/handler}/twofa/two_fa_pass2login.php +491 -380
  89. {handler → miniorange-2-factor-authentication/handler}/twofa/two_fa_settings.php +6 -4
  90. {handler → miniorange-2-factor-authentication/handler}/twofa/two_fa_utility.php +0 -0
  91. {helper → miniorange-2-factor-authentication/helper}/constants.php +0 -0
  92. {helper → miniorange-2-factor-authentication/helper}/curl.php +0 -0
  93. {helper → miniorange-2-factor-authentication/helper}/dashboard_security_notification.php +0 -0
  94. {helper → miniorange-2-factor-authentication/helper}/messages.php +0 -0
  95. {helper → miniorange-2-factor-authentication/helper}/pluginUtility.php +0 -0
  96. {helper → miniorange-2-factor-authentication/helper}/plugins.php +0 -0
  97. {helper → miniorange-2-factor-authentication/helper}/utility.php +0 -0
  98. {includes → miniorange-2-factor-authentication/includes}/css/bootstrap.min.css +0 -0
  99. {includes → miniorange-2-factor-authentication/includes}/css/button_styles.css +0 -0
  100. {includes → miniorange-2-factor-authentication/includes}/css/hide-login-form.css +0 -0
  101. {includes → miniorange-2-factor-authentication/includes}/css/hide-login.css +0 -0
  102. {includes → miniorange-2-factor-authentication/includes}/css/jquery.dataTables.min.css +0 -0
  103. {includes → miniorange-2-factor-authentication/includes}/css/phone.css +0 -0
  104. {includes → miniorange-2-factor-authentication/includes}/css/popup.css +0 -0
  105. {includes → miniorange-2-factor-authentication/includes}/css/show-login.css +0 -0
  106. {includes → miniorange-2-factor-authentication/includes}/css/style_settings.css +135 -21
  107. {includes → miniorange-2-factor-authentication/includes}/css/twofa_style_settings.css +0 -0
  108. {includes → miniorange-2-factor-authentication/includes}/images/61456.png +0 -0
  109. {includes → miniorange-2-factor-authentication/includes}/images/Admin_Custom_Login.png +0 -0
  110. {includes → miniorange-2-factor-authentication/includes}/images/Custom_Login_Page_Customizer_LoginPress.png +0 -0
  111. {includes → miniorange-2-factor-authentication/includes}/images/RegistrationMagic_Custom_Registration_Forms_and_User_Login.png +0 -0
  112. {includes → miniorange-2-factor-authentication/includes}/images/ajax-loader-login.gif +0 -0
  113. miniorange-2-factor-authentication/includes/images/amazons3.png +0 -0
  114. {includes → miniorange-2-factor-authentication/includes}/images/angry.png +0 -0
  115. {includes → miniorange-2-factor-authentication/includes}/images/appstore.png +0 -0
  116. {includes → miniorange-2-factor-authentication/includes}/images/authmethods/AuthyAuthenticator.png +0 -0
  117. {includes → miniorange-2-factor-authentication/includes}/images/authmethods/EmailVerification.png +0 -0
  118. {includes → miniorange-2-factor-authentication/includes}/images/authmethods/GoogleAuthenticator.png +0 -0
  119. {includes → miniorange-2-factor-authentication/includes}/images/authmethods/HardwareToken.png +0 -0
  120. {includes → miniorange-2-factor-authentication/includes}/images/authmethods/OTPOverEmail.png +0 -0
  121. {includes → miniorange-2-factor-authentication/includes}/images/authmethods/OTPOverSMS.png +0 -0
  122. {includes → miniorange-2-factor-authentication/includes}/images/authmethods/OTPOverSMSandEmail.png +0 -0
  123. {includes → miniorange-2-factor-authentication/includes}/images/authmethods/SecurityQuestions.png +0 -0
  124. {includes → miniorange-2-factor-authentication/includes}/images/authmethods/miniOrangePushNotification.png +0 -0
  125. {includes → miniorange-2-factor-authentication/includes}/images/authmethods/miniOrangeQRCodeAuthentication.png +0 -0
  126. {includes → miniorange-2-factor-authentication/includes}/images/authmethods/miniOrangeSoftToken.png +0 -0
  127. miniorange-2-factor-authentication/includes/images/box.png +0 -0
  128. {includes → miniorange-2-factor-authentication/includes}/images/card.png +0 -0
  129. {includes → miniorange-2-factor-authentication/includes}/images/database-backup-logo.png +0 -0
  130. miniorange-2-factor-authentication/includes/images/dropbox.png +0 -0
  131. {includes → miniorange-2-factor-authentication/includes}/images/error.png +0 -0
  132. {includes → miniorange-2-factor-authentication/includes}/images/flags16.png +0 -0
  133. miniorange-2-factor-authentication/includes/images/gdrive.jpg +0 -0
  134. miniorange-2-factor-authentication/includes/images/google.jpg +0 -0
  135. {includes → miniorange-2-factor-authentication/includes}/images/happy.png +0 -0
  136. {includes → miniorange-2-factor-authentication/includes}/images/loader.gif +0 -0
  137. {includes → miniorange-2-factor-authentication/includes}/images/login-protection-logo.png +0 -0
  138. {includes → miniorange-2-factor-authentication/includes}/images/malware-scanner-logo.png +0 -0
  139. {includes → miniorange-2-factor-authentication/includes}/images/miniOrange2.png +0 -0
  140. {includes → miniorange-2-factor-authentication/includes}/images/miniorange_icon.png +0 -0
  141. {includes → miniorange-2-factor-authentication/includes}/images/miniorange_logo.png +0 -0
  142. {includes → miniorange-2-factor-authentication/includes}/images/mo-waf-logo.png +0 -0
  143. {includes → miniorange-2-factor-authentication/includes}/images/mo_white_logo.png +0 -0
  144. {includes → miniorange-2-factor-authentication/includes}/images/netbanking.png +0 -0
  145. {includes → miniorange-2-factor-authentication/includes}/images/normal.png +0 -0
  146. {includes → miniorange-2-factor-authentication/includes}/images/normal1.png +0 -0
  147. miniorange-2-factor-authentication/includes/images/onedrive.png +0 -0
  148. {includes → miniorange-2-factor-authentication/includes}/images/paypal.png +0 -0
  149. {includes → miniorange-2-factor-authentication/includes}/images/playStore.png +0 -0
  150. {includes → miniorange-2-factor-authentication/includes}/images/restrict_content_pro.png +0 -0
  151. {includes → miniorange-2-factor-authentication/includes}/images/right-arrow.png +0 -0
  152. {includes → miniorange-2-factor-authentication/includes}/images/right.png +0 -0
  153. {includes → miniorange-2-factor-authentication/includes}/images/sad.png +0 -0
  154. {includes → miniorange-2-factor-authentication/includes}/images/smile.png +0 -0
  155. {includes → miniorange-2-factor-authentication/includes}/images/success.png +0 -0
  156. {includes → miniorange-2-factor-authentication/includes}/images/support3.png +0 -0
  157. {includes → miniorange-2-factor-authentication/includes}/images/theme_my_login.png +0 -0
  158. {includes → miniorange-2-factor-authentication/includes}/images/ultimate_member.png +0 -0
  159. {includes → miniorange-2-factor-authentication/includes}/images/user_registration.png +0 -0
  160. {includes → miniorange-2-factor-authentication/includes}/images/woocommerce.png +0 -0
  161. {includes → miniorange-2-factor-authentication/includes}/images/wrong.png +0 -0
  162. {includes → miniorange-2-factor-authentication/includes}/jquery-qrcode/README.md +0 -0
  163. {includes → miniorange-2-factor-authentication/includes}/jquery-qrcode/jquery-qrcode.js +0 -0
  164. {includes → miniorange-2-factor-authentication/includes}/jquery-qrcode/jquery-qrcode.min.js +0 -0
  165. {includes → miniorange-2-factor-authentication/includes}/js/bootstrap.min.js +0 -0
  166. {includes → miniorange-2-factor-authentication/includes}/js/jquery.dataTables.min.js +0 -0
  167. {includes → miniorange-2-factor-authentication/includes}/js/phone.js +0 -0
  168. {includes → miniorange-2-factor-authentication/includes}/js/rba/js/client.js +0 -0
  169. {includes → miniorange-2-factor-authentication/includes}/js/rba/js/device_attributes.js +0 -0
  170. {includes → miniorange-2-factor-authentication/includes}/js/rba/js/fontdetect.js +0 -0
  171. {includes → miniorange-2-factor-authentication/includes}/js/rba/js/fonts.swf +0 -0
  172. {includes → miniorange-2-factor-authentication/includes}/js/rba/js/jquery-1.9.1.js +0 -0
  173. {includes → miniorange-2-factor-authentication/includes}/js/rba/js/jquery.flash.js +0 -0
  174. {includes → miniorange-2-factor-authentication/includes}/js/rba/js/miniorange-fp.js +0 -0
  175. {includes → miniorange-2-factor-authentication/includes}/js/rba/js/murmurhash3.js +0 -0
  176. {includes → miniorange-2-factor-authentication/includes}/js/rba/js/swfobject.js +0 -0
  177. {includes → miniorange-2-factor-authentication/includes}/js/rba/js/ua-parser.js +0 -0
  178. {includes → miniorange-2-factor-authentication/includes}/js/settings_page.js +40 -19
  179. {lang → miniorange-2-factor-authentication/lang}/miniorange-2-factor-authentication.pot +0 -0
  180. miniorange_2_factor_settings.php → miniorange-2-factor-authentication/miniorange_2_factor_settings.php +7 -4
  181. readme.txt → miniorange-2-factor-authentication/readme.txt +7 -1
  182. uninstall.php → miniorange-2-factor-authentication/uninstall.php +0 -0
  183. {views → miniorange-2-factor-authentication/views}/account/login.php +0 -0
  184. {views → miniorange-2-factor-authentication/views}/account/profile.php +9 -1
  185. {views → miniorange-2-factor-authentication/views}/account/register.php +0 -0
  186. {views → miniorange-2-factor-authentication/views}/account/verify.php +0 -0
  187. {views → miniorange-2-factor-authentication/views}/advanced-blocking.php +5 -5
  188. {views → miniorange-2-factor-authentication/views}/backup/backup.php +0 -0
  189. {views → miniorange-2-factor-authentication/views}/backup/backup_created_report.php +0 -0
  190. {views → miniorange-2-factor-authentication/views}/backup/backup_schdule.php +2 -1
  191. {views → miniorange-2-factor-authentication/views}/backup/backup_setting_view.php +0 -0
  192. {views → miniorange-2-factor-authentication/views}/change-password.php +0 -0
  193. {views → miniorange-2-factor-authentication/views}/common-elements.php +0 -0
  194. {views → miniorange-2-factor-authentication/views}/content-protection.php +0 -0
  195. {views → miniorange-2-factor-authentication/views}/dashboard.php +0 -0
  196. {views → miniorange-2-factor-authentication/views}/feedback_form.php +0 -0
  197. {views → miniorange-2-factor-authentication/views}/ip-blocking.php +1 -1
  198. {views → miniorange-2-factor-authentication/views}/licensing.php +0 -0
  199. {views → miniorange-2-factor-authentication/views}/login-security.php +3 -3
  200. {views → miniorange-2-factor-authentication/views}/login_spam.php +0 -0
  201. {views → miniorange-2-factor-authentication/views}/malware_scanner/malware_scan.php +0 -0
  202. {views → miniorange-2-factor-authentication/views}/malware_scanner/scan_report_view.php +0 -0
  203. {views → miniorange-2-factor-authentication/views}/malware_scanner/scan_settings_view.php +3 -1
  204. {views → miniorange-2-factor-authentication/views}/malware_scanner/scan_summary_view.php +2 -2
  205. {views → miniorange-2-factor-authentication/views}/navbar.php +0 -0
  206. {views → miniorange-2-factor-authentication/views}/network_security_features.php +0 -0
  207. {views → miniorange-2-factor-authentication/views}/notification-settings.php +0 -0
  208. {views → miniorange-2-factor-authentication/views}/rate-limiting.php +0 -0
  209. {views → miniorange-2-factor-authentication/views}/registration-security.php +0 -0
  210. {views → miniorange-2-factor-authentication/views}/reports.php +0 -0
  211. {views → miniorange-2-factor-authentication/views}/request_demo.php +7 -1
  212. {views → miniorange-2-factor-authentication/views}/support.php +0 -0
  213. {views → miniorange-2-factor-authentication/views}/test/test_twofa_email_verification.php +0 -0
  214. {views → miniorange-2-factor-authentication/views}/test/test_twofa_google_authy_authenticator.php +0 -0
  215. {views → miniorange-2-factor-authentication/views}/test/test_twofa_kba_questions.php +0 -0
  216. {views → miniorange-2-factor-authentication/views}/test/test_twofa_miniorange_push_notification.php +0 -0
  217. {views → miniorange-2-factor-authentication/views}/test/test_twofa_miniorange_qrcode_authentication.php +0 -0
  218. {views → miniorange-2-factor-authentication/views}/test/test_twofa_miniorange_soft_token.php +0 -0
  219. {views → miniorange-2-factor-authentication/views}/test/test_twofa_otp_over_sms.php +0 -0
  220. {views → miniorange-2-factor-authentication/views}/tour-model.php +0 -0
  221. miniorange-2-factor-authentication/views/troubleshooting.php +167 -0
  222. {views → miniorange-2-factor-authentication/views}/twofa/setup/setup_authy_authenticator.php +3 -1
  223. {views → miniorange-2-factor-authentication/views}/twofa/setup/setup_google_authenticator.php +24 -12
  224. {views → miniorange-2-factor-authentication/views}/twofa/setup/setup_google_authenticator_onpremise.php +31 -56
  225. {views → miniorange-2-factor-authentication/views}/twofa/setup/setup_kba_questions.php +3 -1
  226. {views → miniorange-2-factor-authentication/views}/twofa/setup/setup_miniorange_authenticator.php +3 -1
  227. {views → miniorange-2-factor-authentication/views}/twofa/setup/setup_otp_over_sms.php +3 -1
  228. {views → miniorange-2-factor-authentication/views}/twofa/setup_twofa.php +0 -0
  229. {views → miniorange-2-factor-authentication/views}/twofa/test/test_twofa_email_verification.php +0 -0
  230. {views → miniorange-2-factor-authentication/views}/twofa/test/test_twofa_google_authy_authenticator.php +0 -0
  231. {views → miniorange-2-factor-authentication/views}/twofa/test/test_twofa_kba_questions.php +0 -0
  232. {views → miniorange-2-factor-authentication/views}/twofa/test/test_twofa_miniorange_push_notification.php +0 -0
  233. {views → miniorange-2-factor-authentication/views}/twofa/test/test_twofa_miniorange_qrcode_authentication.php +0 -0
  234. {views → miniorange-2-factor-authentication/views}/twofa/test/test_twofa_miniorange_soft_token.php +0 -0
  235. {views → miniorange-2-factor-authentication/views}/twofa/test/test_twofa_otp_over_sms.php +0 -0
  236. {views → miniorange-2-factor-authentication/views}/twofa/two_fa.php +27 -14
  237. {views → miniorange-2-factor-authentication/views}/twofa/two_fa_addon.php +0 -0
  238. {views → miniorange-2-factor-authentication/views}/twofa/two_fa_custom_form.php +34 -11
  239. {views → miniorange-2-factor-authentication/views}/twofa/two_fa_custom_login.php +0 -0
  240. {views → miniorange-2-factor-authentication/views}/twofa/two_fa_login_option.php +0 -0
  241. {views → miniorange-2-factor-authentication/views}/twofa/two_fa_rba.php +0 -0
  242. miniorange-2-factor-authentication/views/twofa/two_fa_session_control.php +87 -0
  243. {views → miniorange-2-factor-authentication/views}/twofa/two_fa_setup_notification.php +0 -0
  244. {views → miniorange-2-factor-authentication/views}/twofa/two_fa_shortcode.php +0 -0
  245. {views → miniorange-2-factor-authentication/views}/twofa/two_fa_unlimittedUser.php +0 -0
  246. {views → miniorange-2-factor-authentication/views}/twofa/two_fa_video_guide.php +0 -0
  247. {views → miniorange-2-factor-authentication/views}/upgrade.php +400 -33
  248. miniorange-2-factor-authentication/views/upgrade_2fa.php +603 -0
  249. {views → miniorange-2-factor-authentication/views}/upgrade_2fa_lite.php +275 -87
  250. {views → miniorange-2-factor-authentication/views}/waf-settings.php +0 -0
  251. {views → miniorange-2-factor-authentication/views}/waf.php +12 -9
  252. views/troubleshooting.php +0 -100
  253. views/upgrade_2fa.php +0 -347
{api → miniorange-2-factor-authentication/api}/Mo2f_OnPremRedirect.php RENAMED
File without changes
{api → miniorange-2-factor-authentication/api}/class-customer-setup.php RENAMED
File without changes
{api → miniorange-2-factor-authentication/api}/class-rba-attributes.php RENAMED
File without changes
{api → miniorange-2-factor-authentication/api}/class-two-factor-setup.php RENAMED
File without changes
{api → miniorange-2-factor-authentication/api}/mo2f_api.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/account.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/advanced-blocking.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/backup/backup.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/backup/backup_ajax.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/backup/backup_controller.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/backup/backup_created_report.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/backup/backup_created_result.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/backup/backup_schdule.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/change-password.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/content-protection.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/dashboard.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/dashboard_ajax.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/feedback_form.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/ip-blocking.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/licensing.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/login-security.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/login-spam.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/main_controller.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/malware_scanner/malware_scan_ajax.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/malware_scanner/malware_scan_result.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/malware_scanner/scan_malware.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/malware_scanner/scan_malware_report.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/malware_scanner/scan_malware_settings.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/malware_scanner/scan_malware_summary.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/navbar.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/newtork_security_features.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/notification-settings.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/registration-security.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/reports.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/request_demo.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/support.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/tour-model.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/troubleshooting.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/twofa/mo2fa_common_login.php RENAMED
@@ -228,6 +228,7 @@ function mo2f_get_forgotphone_form( $login_status, $login_message, $redirect_to,
228
  <input type="hidden" name="mo2f_configured_2FA_method"/>
229
  <input type="hidden" name="miniorange_challenge_forgotphone_nonce"
230
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-challenge-forgotphone-nonce' ); ?>"/>
 
231
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
232
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
233
  </form>
@@ -314,6 +315,10 @@ function mo2f_get_kba_authentication_prompt( $login_message, $redirect_to, $sess
314
  value="<?php echo mo2f_lt( 'Validate' ); ?>"/>
315
  <input type="hidden" name="miniorange_kba_nonce"
316
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-kba-nonce' ); ?>"/>
 
 
 
 
317
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
318
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
319
  </form>
@@ -435,6 +440,7 @@ function mo2f_get_push_notification_oobemail_prompt( $id, $login_status, $login_
435
  class="mo2f_display_none_forms">
436
  <input type="hidden" name="miniorange_mobile_validation_failed_nonce"
437
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-mobile-validation-failed-nonce' ); ?>"/>
 
438
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
439
  <input type="hidden" name="currentMethod" value="emailVer"/>
440
 
@@ -442,6 +448,7 @@ function mo2f_get_push_notification_oobemail_prompt( $id, $login_status, $login_
442
  <form name="f" id="mo2f_mobile_validation_form" method="post" class="mo2f_display_none_forms">
443
  <input type="hidden" name="miniorange_mobile_validation_nonce"
444
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-mobile-validation-nonce' ); ?>"/>
 
445
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
446
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
447
  <input type="hidden" name="TxidEmail" value="<?php echo $mo2f_EV_txid; ?>"/>
@@ -450,6 +457,7 @@ function mo2f_get_push_notification_oobemail_prompt( $id, $login_status, $login_
450
  <form name="f" id="mo2f_show_softtoken_loginform" method="post" class="mo2f_display_none_forms">
451
  <input type="hidden" name="miniorange_softtoken"
452
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-softtoken' ); ?>"/>
 
453
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
454
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
455
  </form>
@@ -457,12 +465,14 @@ function mo2f_get_push_notification_oobemail_prompt( $id, $login_status, $login_
457
  <input type="hidden" name="request_origin_method" value="<?php echo $login_status; ?>"/>
458
  <input type="hidden" name="miniorange_forgotphone"
459
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-forgotphone' ); ?>"/>
 
460
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
461
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
462
  </form>
463
  <form name="f" id="mo2f_alternate_login_kbaform" method="post" class="mo2f_display_none_forms">
464
  <input type="hidden" name="miniorange_alternate_login_kba_nonce"
465
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-alternate-login-kba-nonce' ); ?>"/>
 
466
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
467
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
468
  </form>
@@ -629,6 +639,7 @@ function mo2f_get_qrcode_authentication_prompt( $login_status, $login_message, $
629
  <input type="hidden" name="miniorange_mobile_validation_nonce"
630
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-mobile-validation-nonce' ); ?>"/>
631
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
 
632
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
633
  </form>
634
  <form name="f" id="mo2f_show_softtoken_loginform" method="post" class="mo2f_display_none_forms">
@@ -642,6 +653,7 @@ function mo2f_get_qrcode_authentication_prompt( $login_status, $login_message, $
642
  <input type="hidden" name="miniorange_forgotphone"
643
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-forgotphone' ); ?>"/>
644
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
 
645
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
646
  </form>
647
  <script>
@@ -755,6 +767,7 @@ function mo2f_get_otp_authentication_prompt( $login_status, $login_message, $red
755
  <input type="hidden" name="request_origin_method" value="<?php echo $login_status; ?>"/>
756
  <input type="hidden" name="miniorange_soft_token_nonce"
757
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-soft-token-nonce' ); ?>"/>
 
758
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
759
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
760
  </form>
@@ -789,6 +802,7 @@ function mo2f_get_otp_authentication_prompt( $login_status, $login_message, $red
789
  <input type="hidden" name="request_origin_method" value="<?php echo $login_status; ?>"/>
790
  <input type="hidden" name="miniorange_forgotphone"
791
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-forgotphone' ); ?>"/>
 
792
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
793
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
794
  </form>
@@ -869,12 +883,16 @@ function mo2f_get_device_form( $redirect_to, $session_id_encrypt ) {
869
  <form name="f" id="mo2f_trust_device_confirm_form" method="post" action="" class="mo2f_display_none_forms">
870
  <input type="hidden" name="mo2f_trust_device_confirm_nonce"
871
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-trust-device-confirm-nonce' ); ?>"/>
 
 
872
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
873
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
874
  </form>
875
  <form name="f" id="mo2f_trust_device_cancel_form" method="post" action="" class="mo2f_display_none_forms">
876
  <input type="hidden" name="mo2f_trust_device_cancel_nonce"
877
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-trust-device-cancel-nonce' ); ?>"/>
 
 
878
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
879
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
880
  </form>
228
  <input type="hidden" name="mo2f_configured_2FA_method"/>
229
  <input type="hidden" name="miniorange_challenge_forgotphone_nonce"
230
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-challenge-forgotphone-nonce' ); ?>"/>
231
+ <input type="hidden" name="option" value="miniorange_challenge_forgotphone">
232
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
233
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
234
  </form>
315
  value="<?php echo mo2f_lt( 'Validate' ); ?>"/>
316
  <input type="hidden" name="miniorange_kba_nonce"
317
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-kba-nonce' ); ?>"/>
318
+
319
+ <input type="hidden" name="option"
320
+ value="miniorange_kba_validate"/>
321
+
322
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
323
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
324
  </form>
440
  class="mo2f_display_none_forms">
441
  <input type="hidden" name="miniorange_mobile_validation_failed_nonce"
442
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-mobile-validation-failed-nonce' ); ?>"/>
443
+ <input type="hidden" name="option" value="miniorange_mobile_validation_failed">
444
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
445
  <input type="hidden" name="currentMethod" value="emailVer"/>
446
 
448
  <form name="f" id="mo2f_mobile_validation_form" method="post" class="mo2f_display_none_forms">
449
  <input type="hidden" name="miniorange_mobile_validation_nonce"
450
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-mobile-validation-nonce' ); ?>"/>
451
+ <input type="hidden" name="option" value="miniorange_mobile_validation">
452
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
453
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
454
  <input type="hidden" name="TxidEmail" value="<?php echo $mo2f_EV_txid; ?>"/>
457
  <form name="f" id="mo2f_show_softtoken_loginform" method="post" class="mo2f_display_none_forms">
458
  <input type="hidden" name="miniorange_softtoken"
459
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-softtoken' ); ?>"/>
460
+ <input type="hidden" name="option" value="miniorange_softtoken">
461
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
462
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
463
  </form>
465
  <input type="hidden" name="request_origin_method" value="<?php echo $login_status; ?>"/>
466
  <input type="hidden" name="miniorange_forgotphone"
467
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-forgotphone' ); ?>"/>
468
+ <input type="hidden" name="option" value="miniorange_forgotphone">
469
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
470
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
471
  </form>
472
  <form name="f" id="mo2f_alternate_login_kbaform" method="post" class="mo2f_display_none_forms">
473
  <input type="hidden" name="miniorange_alternate_login_kba_nonce"
474
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-alternate-login-kba-nonce' ); ?>"/>
475
+ <input type="hidden" name="option" value="miniorange_alternate_login_kba">
476
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
477
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
478
  </form>
639
  <input type="hidden" name="miniorange_mobile_validation_nonce"
640
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-mobile-validation-nonce' ); ?>"/>
641
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
642
+ <input type="hidden" name="option" value="miniorange_mobile_validation">
643
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
644
  </form>
645
  <form name="f" id="mo2f_show_softtoken_loginform" method="post" class="mo2f_display_none_forms">
653
  <input type="hidden" name="miniorange_forgotphone"
654
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-forgotphone' ); ?>"/>
655
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
656
+ <input type="hidden" name="option" value="miniorange_forgotphone">
657
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
658
  </form>
659
  <script>
767
  <input type="hidden" name="request_origin_method" value="<?php echo $login_status; ?>"/>
768
  <input type="hidden" name="miniorange_soft_token_nonce"
769
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-soft-token-nonce' ); ?>"/>
770
+ <input type="hidden" name="option" value="miniorange_soft_token">
771
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
772
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
773
  </form>
802
  <input type="hidden" name="request_origin_method" value="<?php echo $login_status; ?>"/>
803
  <input type="hidden" name="miniorange_forgotphone"
804
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-forgotphone' ); ?>"/>
805
+ <input type="hidden" name="option" value="miniorange_forgotphone">
806
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
807
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
808
  </form>
883
  <form name="f" id="mo2f_trust_device_confirm_form" method="post" action="" class="mo2f_display_none_forms">
884
  <input type="hidden" name="mo2f_trust_device_confirm_nonce"
885
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-trust-device-confirm-nonce' ); ?>"/>
886
+ <input type="hidden" name="option" value="miniorange_rba_validate">
887
+
888
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
889
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
890
  </form>
891
  <form name="f" id="mo2f_trust_device_cancel_form" method="post" action="" class="mo2f_display_none_forms">
892
  <input type="hidden" name="mo2f_trust_device_cancel_nonce"
893
  value="<?php echo wp_create_nonce( 'miniorange-2-factor-trust-device-cancel-nonce' ); ?>"/>
894
+ <input type="hidden" name="option" value="miniorange_rba_cancle">
895
+
896
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
897
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
898
  </form>
{controllers → miniorange-2-factor-authentication/controllers}/twofa/setup_twofa.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_addon.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_custom_form.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_custom_login.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_login_option.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_rba.php RENAMED
File without changes
miniorange-2-factor-authentication/controllers/twofa/two_fa_session_control.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+
3
+ include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_session_control.php';
{controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_shortcode.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_unlimittedUser.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_unlimittedUser_ajax.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/twofa/two_fa_video_guide.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/twofa/two_factor_ajax.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/upgrade.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/waf.php RENAMED
File without changes
{controllers → miniorange-2-factor-authentication/controllers}/wpns-loginsecurity-ajax.php RENAMED
File without changes
{database → miniorange-2-factor-authentication/database}/database_functions.php RENAMED
File without changes
{database → miniorange-2-factor-authentication/database}/database_functions_2fa.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/WAF/database/mo-waf-db.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/WAF/database/mo-waf-plugin-db.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/WAF/mo-waf-plugin.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/WAF/mo-waf.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/WAF/waf-include.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/ajax.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/backup.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/feedback_form.php RENAMED
@@ -27,36 +27,60 @@ class FeedbackHandler
27
 
28
  function wpns_handle_feedback($postdata)
29
  {
30
- if(MO2F_TEST_MODE){
31
- deactivate_plugins(dirname(dirname(__FILE__ ))."\\miniorange_2_factor_settings.php");
32
  return;
33
- }
34
-
35
  $user = wp_get_current_user();
36
  $feedback_option = $_POST['option'];
37
  $message = 'Plugin Deactivated';
38
 
39
  $deactivate_reason_message = array_key_exists('wpns_query_feedback', $_POST) ? htmlspecialchars($_POST['wpns_query_feedback']) : false;
40
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
 
42
  $reply_required = '';
43
  if (isset($_POST['get_reply']))
44
  $reply_required = htmlspecialchars($_POST['get_reply']);
45
  if (empty($reply_required)) {
46
  $reply_required = "don't reply";
47
- $message .= '<b style="color:red";> &nbsp; [Reply :' . $reply_required . ']</b>';
48
  } else {
49
  $reply_required = "yes";
50
- $message .= '[Reply :' . $reply_required . ']';
51
  }
52
 
 
 
 
 
 
 
 
 
53
 
54
  $message .= ', Feedback : ' . $deactivate_reason_message . '';
55
 
56
  if (isset($_POST['rate']))
57
  $rate_value = htmlspecialchars($_POST['rate']);
58
- else
59
- $rate_value = "--";
60
  $message .= ', [Rating :' . $rate_value . ']';
61
 
62
  $email = isset($_POST['query_mail'])? $_POST['query_mail']: '';
27
 
28
  function wpns_handle_feedback($postdata)
29
  {
30
+ if(MO2F_TEST_MODE){
31
+ deactivate_plugins(dirname(dirname(__FILE__ ))."\\miniorange_2_factor_settings.php");
32
  return;
33
+ }
34
+
35
  $user = wp_get_current_user();
36
  $feedback_option = $_POST['option'];
37
  $message = 'Plugin Deactivated';
38
 
39
  $deactivate_reason_message = array_key_exists('wpns_query_feedback', $_POST) ? htmlspecialchars($_POST['wpns_query_feedback']) : false;
40
+ $activation_date = get_site_option('mo2f_activated_time');
41
+ $current_date = time();
42
+ $diff = $activation_date - $current_date;
43
+ if($activation_date == false){
44
+ $days = 'NA';
45
+ }
46
+ else{
47
+ $days = abs(round($diff / 86400));
48
+ }
49
+ //$message .= ', [D:' . $days . ']';
50
+ /*if(get_option("mo_wpns_2fa_with_network_security")){
51
+ $twofa_plus_ns_enabled = 'T';
52
+ }
53
+ else{
54
+ $twofa_plus_ns_enabled = 'F';
55
+ }
56
+ $message .= ',[2FA+NS:' .$twofa_plus_ns_enabled.']';*/
57
 
58
  $reply_required = '';
59
  if (isset($_POST['get_reply']))
60
  $reply_required = htmlspecialchars($_POST['get_reply']);
61
  if (empty($reply_required)) {
62
  $reply_required = "don't reply";
63
+ $message .= ' &nbsp; [Reply:<b style="color:red";>' . $reply_required . '</b>,';
64
  } else {
65
  $reply_required = "yes";
66
+ $message .= '[Reply:' . $reply_required . ',';
67
  }
68
 
69
+ $message .= 'D:' . $days . ',';
70
+ if(get_option("mo_wpns_2fa_with_network_security")){
71
+ $message .= '2FA+NS]';
72
+ }
73
+ else{
74
+ $message .= '2FA]';
75
+ }
76
+
77
 
78
  $message .= ', Feedback : ' . $deactivate_reason_message . '';
79
 
80
  if (isset($_POST['rate']))
81
  $rate_value = htmlspecialchars($_POST['rate']);
82
+ else
83
+ $rate_value = "--";
84
  $message .= ', [Rating :' . $rate_value . ']';
85
 
86
  $email = isset($_POST['query_mail'])? $_POST['query_mail']: '';
{handler → miniorange-2-factor-authentication/handler}/logger.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/login.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/malware_scanner.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/malware_scanner/malware_scanner_cron.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/malware_scanner/scanner_set_cron.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/mo-block.html RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/mo-error.html RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/mo-waf-plugin.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/mo-waf.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/recaptcha.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/registration.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/security_features.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/signature/APLFI.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/signature/APSQLI.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/signature/APXSS.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/spam.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/twofa/class_miniorange_2fa_strong_password.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/twofa/encryption.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/twofa/gaonprem.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/twofa/setup_twofa.php RENAMED
@@ -96,7 +96,34 @@
96
  "OTP Over SMS and Email" => "Enter the One Time Passcode sent to your phone and email to login.",
97
  "Hardware Token" => "Enter the One Time Passcode on your Hardware Token to login."
98
  );
99
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
 
101
  $two_factor_methods_EC = array_slice( $all_two_factor_methods, 0, 8 );
102
  $two_factor_methods_NC = array_slice( $all_two_factor_methods, 0, 5 );
@@ -189,15 +216,31 @@
189
 
190
  }
191
  $form .= '<div>
192
- <div class="mo2f_thumbnail_method">
193
- <div style="width: 30%; float:left;">';
194
 
195
  if($is_image){
196
- $form .= '<img src="' . plugins_url( "includes/images/authmethods/" . $auth_method_abr . ".png", dirname(dirname(__FILE__ ))) . '" style="width: 40px;height: 40px !important; padding: 20px; line-height: 80px;" />';
197
  }
198
 
199
  $form .= '</div>
200
- <div class="mo2f_thumbnail_method_desc"><b>' . $auth_method .
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  '</b><br>
202
  <p style="padding:0px; padding-left:0px;"> ' . $two_factor_methods_descriptions[ $auth_method ] . '</p>
203
 
96
  "OTP Over SMS and Email" => "Enter the One Time Passcode sent to your phone and email to login.",
97
  "Hardware Token" => "Enter the One Time Passcode on your Hardware Token to login."
98
  );
99
+ $two_factor_methods_doc = array(
100
+ "Security Questions" => "",
101
+ "Google Authenticator" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/google-authenticator",
102
+ "miniOrange QR Code Authentication" => "",
103
+ "Email Verification" => "",
104
+ "miniOrange Soft Token" => "",
105
+ "miniOrange Push Notification" => "",
106
+ "Authy Authenticator" => "",
107
+ "OTP Over SMS" => "",
108
+ "OTP Over Email" => "",
109
+ "OTP Over SMS and Email" => "",
110
+ "Hardware Token" => "",
111
+ "" => ""
112
+ );
113
+ $two_factor_methods_video = array(
114
+ "Security Questions" => "",
115
+ "Google Authenticator" => "https://www.youtube.com/watch?v=vVGXjedIaGs",
116
+ "miniOrange QR Code Authentication" => "",
117
+ "Email Verification" => "",
118
+ "miniOrange Soft Token" => "",
119
+ "miniOrange Push Notification" => "",
120
+ "Authy Authenticator" => "",
121
+ "OTP Over SMS" => "",
122
+ "OTP Over Email" => "",
123
+ "OTP Over SMS and Email" => "",
124
+ "Hardware Token" => "",
125
+ "" => ""
126
+ );
127
 
128
  $two_factor_methods_EC = array_slice( $all_two_factor_methods, 0, 8 );
129
  $two_factor_methods_NC = array_slice( $all_two_factor_methods, 0, 5 );
216
 
217
  }
218
  $form .= '<div>
219
+ <div class="mo2f_thumbnail_method" style="width:100%";>
220
+ <div style="width: 17%; float:left;padding-top:5px;padding-left:5px;">';
221
 
222
  if($is_image){
223
+ $form .= '<img src="' . plugins_url( "includes/images/authmethods/" . $auth_method_abr . ".png", dirname(dirname(__FILE__ ))) . '" style="width: 40px;height: 40px !important; " line-height: 80px;" />';
224
  }
225
 
226
  $form .= '</div>
227
+ <div class="mo2f_thumbnail_method_desc" style="padding: 8px;width: 83%;">';
228
+ if($auth_method == "" || $two_factor_methods_video[$auth_method] == "" || $two_factor_methods_doc[$auth_method] == "")
229
+ {$form .= "";}
230
+ else
231
+ {
232
+ $form .=' <span style="float:right">
233
+ <a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
234
+ <span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
235
+
236
+ </a>
237
+
238
+ <a href='.$two_factor_methods_video[$auth_method].' target="_blank">
239
+ <span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
240
+ </a>
241
+ </span>';
242
+ }
243
+ $form .=' <b>' . $auth_method .
244
  '</b><br>
245
  <p style="padding:0px; padding-left:0px;"> ' . $two_factor_methods_descriptions[ $auth_method ] . '</p>
246
 
{handler → miniorange-2-factor-authentication/handler}/twofa/two_fa_constants.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/twofa/two_fa_login.php RENAMED
File without changes
{handler → miniorange-2-factor-authentication/handler}/twofa/two_fa_pass2login.php RENAMED
@@ -30,333 +30,166 @@ class Miniorange_Password_2Factor_Login {
30
  private $mo2f_rbastatus;
31
  private $mo2f_transactionid;
32
 
33
-
34
- public function miniorange_pass2login_redirect() {
35
- do_action('mo2f_network_init');
36
- global $Mo2fdbQueries;
37
-
38
- if ( ! get_option( 'mo2f_login_option' ) ) {
39
- if ( isset( $_POST['miniorange_login_nonce'] ) ) {
40
- $nonce = $_POST['miniorange_login_nonce'];
41
- $session_id = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
42
-
43
- if(is_null($session_id)) {
44
- $session_id=$this->create_session();
45
- }
46
-
47
-
48
- if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-login-nonce' ) ) {
49
- $this->remove_current_activity($session_id);
50
- $error = new WP_Error();
51
- $error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
52
- return $error;
53
- } else {
54
- $this->miniorange_pass2login_start_session();
55
- $mobile_login = new Miniorange_Mobile_Login();
56
- //validation and sanitization
57
- $username = '';
58
- if ( MO2f_Utility::mo2f_check_empty_or_null( $_POST['mo2fa_username'] ) ) {
59
- MO2f_Utility::set_user_values($session_id, 'mo2f_login_message', 'Please enter username to proceed' );
60
- $mobile_login->mo_auth_show_error_message();
61
- return;
62
- } else {
63
- $username = sanitize_text_field( $_POST['mo2fa_username'] );
64
- }
65
- if ( username_exists( $username ) ) { /*if username exists in wp site */
66
- $user = new WP_User( $username );
67
- $redirect_to = isset( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : null;
68
- MO2f_Utility::set_user_values($session_id, 'mo2f_current_user_id', $user->ID );
69
- MO2f_Utility::set_user_values($session_id, 'mo2f_1stfactor_status', 'VALIDATE_SUCCESS' );
70
- $this->mo2f_userId=$user->ID;
71
- $this->fstfactor='VALIDATE_SUCCESS';
72
- $current_roles = miniorange_get_user_role( $user );
73
- $mo2f_configured_2FA_method = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user->ID );
74
- $email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
75
- $mo_2factor_user_registration_status = $Mo2fdbQueries->get_user_detail( 'mo_2factor_user_registration_status', $user->ID );
76
- $kba_configuration_status = $Mo2fdbQueries->get_user_detail( 'mo2f_SecurityQuestions_config_status', $user->ID );
77
-
78
- if(MO2F_IS_ONPREM )
79
- {
80
- $configuredMethod = get_user_meta($user->ID,'currentMethod',true);
81
- $mo2f_configured_2FA_method = empty($configuredMethod) ? 0 : 1;
82
- $mo_2factor_user_registration_status = 'MO_2_FACTOR_PLUGIN_SETTINGS';
83
- $email = get_user_meta($user->ID , 'email',true);
84
-
85
- }
86
- if ( $mo2f_configured_2FA_method ) {
87
- if ( $email && $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS' or (MO2F_IS_ONPREM and $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS')) {
88
- if ( MO2f_Utility::check_if_request_is_from_mobile_device( $_SERVER['HTTP_USER_AGENT'] ) && $kba_configuration_status ) {
89
- $this->mo2f_pass2login_kba_verification( $user->ID, $redirect_to, $session_id );
90
- } else {
91
- $mo2f_second_factor = '';
92
- $mo2f_second_factor = mo2f_get_user_2ndfactor( $user );
93
- if(MO2F_IS_ONPREM)
94
- {
95
- //$user = get_userdatabylogin('admin');
96
- $mo2f_second_factor = get_user_meta($user->ID,'currentMethod',true);
97
-
98
- if($mo2f_second_factor == 'Security Questions')
99
- {
100
- $mo2f_second_factor = 'KBA';
101
- }
102
- else if($mo2f_second_factor == 'Google Authenticator')
103
- {
104
- $mo2f_second_factor = 'GOOGLE AUTHENTICATOR';
105
  }
106
- else if($mo2f_second_factor != 'Email Verification')
107
- $mo2f_second_factor = 'NONE';
108
- }
109
-
110
- if ( $mo2f_second_factor == 'MOBILE AUTHENTICATION' ) {
111
- $this->mo2f_pass2login_mobile_verification( $user, $redirect_to, $session_id );
112
- } else if ( $mo2f_second_factor == 'PUSH NOTIFICATIONS' || $mo2f_second_factor == 'OUT OF BAND EMAIL' ) {
113
- $this->mo2f_pass2login_push_oobemail_verification( $user, $mo2f_second_factor, $redirect_to, $session_id );
114
- }
115
- else if($mo2f_second_factor == 'Email Verification'){
116
- $this->mo2f_pass2login_push_oobemail_verification( $user, $mo2f_second_factor, $redirect_to, $session_id );
117
- }
118
- else if ( $mo2f_second_factor == 'SOFT TOKEN' || $mo2f_second_factor == 'SMS' || $mo2f_second_factor == 'PHONE VERIFICATION' || $mo2f_second_factor == 'GOOGLE AUTHENTICATOR' ) {
119
- $this->mo2f_pass2login_otp_verification( $user, $mo2f_second_factor, $redirect_to, $session_id );
120
- } else if ( $mo2f_second_factor == 'KBA' ) {
121
- $this->mo2f_pass2login_kba_verification( $user->ID, $redirect_to, $session_id );
122
  } else {
123
- $this->remove_current_activity($session_id);
124
- MO2f_Utility::set_user_values($session_id, 'mo2f_login_message', 'Please try again or contact your admin.' );
125
- $mobile_login->mo_auth_show_success_message();
126
  }
127
- }
128
  } else {
129
- MO2f_Utility::set_user_values($session_id, 'mo2f_login_message', 'Please login into your account using password.' );
130
- $mobile_login->mo_auth_show_success_message('Please login into your account using password.');
131
- update_user_meta($user->ID,'userMessage','Please login into your account using password.');
132
- $mobile_login->mo2f_redirectto_wp_login();
133
  }
134
- } else {
135
- MO2f_Utility::set_user_values( $session_id, "mo2f_login_message", 'Please login into your account using password.' );
136
- $mobile_login->mo_auth_show_success_message('Please login into your account using password.');
137
- update_user_meta($user->ID,'userMessage','Please login into your account using password.');
138
- $mobile_login->mo2f_redirectto_wp_login();
139
  }
140
- } else {
141
- $mobile_login->remove_current_activity($session_id);
142
- MO2f_Utility::set_user_values( $session_id, "mo2f_login_message", 'Invalid Username.' );
143
- $mobile_login->mo_auth_show_error_message('Invalid Username.');
144
- }
145
- }
146
- }
147
-
148
- }
149
- if(isset($_GET['Txid'])&&isset($_GET['accessToken']))
150
- {
151
- $userIDGet = sanitize_text_field($_GET['userID']);
152
- $txIdGet = sanitize_text_field($_GET['Txid']);
153
- $otpToken = get_site_option($userIDGet);
154
- $txidstatus = get_site_option($txIdGet);
155
- $userIDd = $userIDGet.'D';
156
- $otpTokenD = get_site_option($userIDd);
157
- $mo2f_dirName = dirname(__FILE__);
158
- $mo2f_dirName = explode('wp-content', $mo2f_dirName);
159
- $mo2f_dirName = explode('handler', $mo2f_dirName[1]);
160
-
161
- $head = "You are not authorized to perform this action";
162
- $body = "Please contact to your admin";
163
- $color = "red";
164
- if(3 == $txidstatus)
165
- {
166
- $time = "time".$txIdGet;
167
- $currentTimeInMillis = round(microtime(true) * 1000);
168
- $generatedTimeINMillis = get_site_option($time);
169
- $difference = ($currentTimeInMillis-$generatedTimeINMillis)/1000 ;
170
- if($difference <= 300)
171
- {
172
- $accessTokenGet = sanitize_text_field($_GET['accessToken']);
173
- if( $accessTokenGet == $otpToken)
174
- {
175
- update_site_option($txIdGet,1);
176
- $body = "Transaction has been successfully validated.<br><br>Please continue with the transaction.";
177
- $head = "TRANSACTION SUCCESSFUL";
178
- $color = "green";
179
- }
180
- else if($accessTokenGet==$otpTokenD)
181
- {
182
- update_site_option($txIdGet,0);
183
- $body = "Transaction has been Canceled.<br><br>Please Try Again.";
184
- $head = "TRANSACTION DENIED";
185
- }
186
- }
187
- delete_site_option($userIDGet);
188
- delete_site_option($userIDd);
189
- delete_site_option($time);
190
-
191
  }
192
-
193
- $this->display_email_verification($head,$body,$color);
194
- exit;
195
-
196
- }
197
- else if(isset($_POST['txid']))
198
- {
199
- $txidpost = sanitize_text_field($_POST['txid']);
200
- $status = get_site_option($txidpost);
201
- update_option('optionVal1',$status); //??
202
- if($status ==1 || $status ==0)
203
- delete_site_option($txidpost);
204
- echo $status;
205
- exit();
206
  }
207
-
208
- else if ( isset( $_POST['mo2f_trust_device_confirm_nonce'] ) ) { /*register device as rba profile */
209
- $nonce = $_POST['mo2f_trust_device_confirm_nonce'];
210
- if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-trust-device-confirm-nonce' ) ) {
211
- $session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
212
- $this->remove_current_activity($session_id_encrypt);
213
- $error = new WP_Error();
214
- $error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR ' ) . '</strong>:' . mo2f_lt( 'Invalid Request.' ) );
215
- return $error;
216
- } else {
217
- $this->miniorange_pass2login_start_session();
218
- $session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
219
- try {
220
- $user_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id', $session_id_encrypt );
221
- $email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id );
222
- $mo2f_rba_status = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_rba_status',$session_id_encrypt );
223
- mo2f_register_profile( $email, 'true', $mo2f_rba_status );
224
- } catch ( Exception $e ) {
225
- echo $e->getMessage();
226
- }
227
- $redirect_to = isset( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : null;
228
- $this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
229
- }
230
- }else if ( isset( $_POST['mo2f_trust_device_cancel_nonce'] ) ) { /*do not register device as rba profile */
231
- $nonce = $_POST['mo2f_trust_device_cancel_nonce'];
232
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-trust-device-cancel-nonce' ) ) {
233
- $error = new WP_Error();
234
- $error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
235
- return $error;
236
  } else {
237
- $this->miniorange_pass2login_start_session();
238
- $session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
239
- $redirect_to = isset( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : null;
240
- $this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
241
  }
242
- }else if ( isset( $_POST['miniorange_challenge_forgotphone_nonce'] ) ) { /*check kba validation*/
243
- $nonce = $_POST['miniorange_challenge_forgotphone_nonce'];
244
- if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-challenge-forgotphone-nonce' ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
  $error = new WP_Error();
246
- $error->add( 'empty_username', '<strong>' . __( 'ERROR' ) . '</strong>:' . __( 'Invalid Request.' ) );
247
  return $error;
248
  } else {
249
- $this->miniorange_pass2login_start_session();
250
  $session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
251
- $forgot_phone_enable = get_option( 'mo2f_enable_forgotphone' );
252
- $forgot_phone_kba_enable = get_option( 'mo2f_enable_forgotphone_kba' );
253
- $forgot_phone_email_enable = get_option( 'mo2f_enable_forgotphone_email' );
254
- $second_factor = isset( $_POST['mo2f_configured_2FA_method'] ) ? $_POST['mo2f_configured_2FA_method'] : 'KBA';
255
- $redirect_to = isset( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : null;
256
- $user = unserialize( $_SESSION['mo2f_current_user'] );
257
- $user_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id', $session_id_encrypt );
258
- $email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id );
259
  $kba_configuration_status = $Mo2fdbQueries->get_user_detail( 'mo2f_SecurityQuestions_config_status', $user_id );
260
 
261
- if ( $forgot_phone_enable && $forgot_phone_email_enable && $second_factor == 'OTP OVER EMAIL' ) {
262
- $customer = new Customer_Setup();
263
- $content = json_decode( $customer->send_otp_token( $email, 'EMAIL', get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) ), true );
264
- $mo2fa_login_message = '';
265
- $mo2f_login_status = '';
 
 
266
 
267
  if ( strcasecmp( $content['status'], 'SUCCESS' ) == 0 ) {
268
- MO2f_Utility::set_user_values( $session_id_encrypt, "mo2f_transactionId", $content['txId'] );
 
 
 
 
 
 
 
269
  $this->mo2f_transactionid=$content['txId'];
270
- $mo2fa_login_message = 'A one time passcode has been sent to <b>' . MO2f_Utility::mo2f_get_hidden_email( $email ) . '</b>. Please enter the OTP to verify your identity.';
271
- $mo2f_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL';
272
- } else {
273
- $mo2fa_login_message = 'Error occured while sending OTP over your regsitered email. Please try again.';
274
- $mo2f_login_status = 'MO_2_FACTOR_CHALLENGE_KBA_AND_OTP_OVER_EMAIL';
275
- }
276
- $this->miniorange_pass2login_form_fields( $mo2f_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
277
- } else if ( $forgot_phone_enable && $forgot_phone_kba_enable ) {
278
- if ( $kba_configuration_status ) {
279
- $this->mo2f_pass2login_kba_verification( $user_id, $redirect_to, $session_id_encrypt );
280
  } else {
281
- $mo2fa_login_message = 'Your KBA is not configured. Please choose other option to procedd further.';
282
- $mo2f_login_status = 'MO_2_FACTOR_CHALLENGE_KBA_AND_OTP_OVER_EMAIL';
283
- $this->miniorange_pass2login_form_fields( $mo2f_login_status, $mo2fa_login_message, $redirect_to, null,$session_id_encrypt );
284
  }
 
285
  }
286
- }
287
- }else if ( isset( $_POST['miniorange_alternate_login_kba_nonce'] ) ) { /*check kba validation*/
288
- $nonce = $_POST['miniorange_alternate_login_kba_nonce'];
 
 
 
289
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-alternate-login-kba-nonce' ) ) {
290
- $error = new WP_Error();
291
- $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
292
- return $error;
293
  } else {
294
- $this->miniorange_pass2login_start_session();
295
- $session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
296
- $user_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
297
- $redirect_to = isset( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : null;
298
- $this->mo2f_pass2login_kba_verification( $user_id, $redirect_to,$session_id_encrypt );
299
  }
300
- }else if ( isset( $_POST['miniorange_kba_nonce'] ) ) { /*check kba validation*/
301
- $nonce = $_POST['miniorange_kba_nonce'];
302
- if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-kba-nonce' ) ) {
303
- $error = new WP_Error();
304
- $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
305
- return $error;
306
- }
307
- else{
308
-
309
- $this->miniorange_pass2login_start_session();
310
- $session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
311
- $user_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
312
- $redirect_to = isset( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : null;
313
- if ( isset( $user_id ) ) {
314
- if ( MO2f_Utility::mo2f_check_empty_or_null( $_POST['mo2f_answer_1'] ) || MO2f_Utility::mo2f_check_empty_or_null( $_POST['mo2f_answer_2'] ) ) {
315
- $mo2fa_login_message = 'Please provide both the answers.';
316
- $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_KBA_AUTHENTICATION';
317
- $this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
318
- }
319
- $otpToken = array();
320
- $kba_questions = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo_2_factor_kba_questions',$session_id_encrypt );
321
-
322
- $otpToken[0] = $kba_questions[0];
323
- $otpToken[1] = sanitize_text_field( $_POST['mo2f_answer_1'] );
324
- $otpToken[2] = $kba_questions[1];
325
- $otpToken[3] = sanitize_text_field( $_POST['mo2f_answer_2'] );
326
- $check_trust_device = isset( $_POST['mo2f_trust_device'] ) ? $_POST['mo2f_trust_device'] : 'false';
327
- //if the php session folder has insufficient permissions, cookies to be used
328
- $mo2f_login_transaction_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_transactionId', $session_id_encrypt );
329
-
330
- $mo2f_rba_status = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_rba_status',$session_id_encrypt );
331
- $kba_validate = new Customer_Setup();
332
- $kba_validate_response = json_decode( $kba_validate->validate_otp_token( 'KBA', null, $mo2f_login_transaction_id, $otpToken, get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) ), true );
333
- $email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id );
334
- if ( strcasecmp( $kba_validate_response['status'], 'SUCCESS' ) == 0 ) {
335
- if ( get_option( 'mo2f_remember_device' ) && $check_trust_device == 'on' ) {
336
- try {
337
- mo2f_register_profile( $email, 'true', $mo2f_rba_status );
338
- } catch ( Exception $e ) {
339
- echo $e->getMessage();
340
- }
341
- $this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
342
- } else {
343
- $this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
344
- }
345
- } else {
346
-
347
- $mo2fa_login_message = 'The answers you have provided are incorrect.';
348
- $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_KBA_AUTHENTICATION';
349
- $this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt);
350
- }
351
- } else {
352
- $this->remove_current_activity($session_id_encrypt);
353
- return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Please try again..' ) );
354
- }
355
-
356
- }
357
- }else if ( isset( $_POST['miniorange_mobile_validation_nonce'] ) ) {
358
- /*check mobile validation */
359
- $nonce = $_POST['miniorange_mobile_validation_nonce'];
360
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-mobile-validation-nonce' ) ) {
361
  $error = new WP_Error();
362
  $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
@@ -364,7 +197,7 @@ class Miniorange_Password_2Factor_Login {
364
  } else {
365
  if(MO2F_IS_ONPREM )
366
  {
367
- $txid = $_POST['TxidEmail'];
368
  $status = get_option($txid);
369
  if($status != '')
370
  {
@@ -375,10 +208,10 @@ class Miniorange_Password_2Factor_Login {
375
  }
376
  }
377
  $this->miniorange_pass2login_start_session();
378
- $session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
379
  //if the php session folder has insufficient permissions, cookies to be used
380
  $mo2f_login_transaction_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_transactionId',$session_id_encrypt );
381
- $redirect_to = isset( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : null;
382
  $checkMobileStatus = new Two_Factor_Setup();
383
  $content = $checkMobileStatus->check_mobile_status( $mo2f_login_transaction_id );
384
  $response = json_decode( $content, true );
@@ -403,28 +236,31 @@ class Miniorange_Password_2Factor_Login {
403
  return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Please try again.' ) );
404
  }
405
  }
406
- }else if ( isset( $_POST['miniorange_mobile_validation_failed_nonce'] ) ) { /*Back to miniOrange Login Page if mobile validation failed and from back button of mobile challenge, soft token and default login*/
407
- $nonce = $_POST['miniorange_mobile_validation_failed_nonce'];
 
 
408
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-mobile-validation-failed-nonce' ) ) {
409
  $error = new WP_Error();
410
  $error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
411
  return $error;
412
  } else {
413
  $this->miniorange_pass2login_start_session();
414
- $session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
415
  $this->remove_current_activity($session_id_encrypt);
416
 
417
  }
418
- }else if ( isset( $_POST['miniorange_forgotphone'] ) ) { /*Click on the link of forgotphone */
419
- $nonce = $_POST['miniorange_forgotphone'];
 
420
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-forgotphone' ) ) {
421
  $error = new WP_Error();
422
  $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
423
  return $error;
424
  } else {
425
- $mo2fa_login_status = isset( $_POST['request_origin_method'] ) ? $_POST['request_origin_method'] : null;
426
- $session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
427
- $redirect_to = isset( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : null;
428
  $mo2fa_login_message = '';
429
  $this->miniorange_pass2login_start_session();
430
  $customer = new Customer_Setup();
@@ -460,31 +296,35 @@ class Miniorange_Password_2Factor_Login {
460
  $pass2fa_login = new Miniorange_Password_2Factor_Login();
461
  $pass2fa_login->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
462
  }
463
- }else if ( isset( $_POST['miniorange_softtoken'] ) ) { /*Click on the link of phone is offline */
464
- $nonce = $_POST['miniorange_softtoken'];
 
 
465
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-softtoken' ) ) {
466
  $error = new WP_Error();
467
  $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
468
  return $error;
469
  } else {
470
  $this->miniorange_pass2login_start_session();
471
- $session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
472
  $session_cookie_variables = array( 'mo2f-login-qrCode', 'mo2f_transactionId' );
473
  MO2f_Utility::unset_session_variables( $session_cookie_variables );
474
  MO2f_Utility::unset_cookie_variables( $session_cookie_variables );
475
  MO2f_Utility::unset_temp_user_details_in_table('mo2f_transactionId',$session_id_encrypt );
476
- $redirect_to = isset( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : null;
477
  $mo2fa_login_message = 'Please enter the one time passcode shown in the miniOrange<b> Authenticator</b> app.';
478
  $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_SOFT_TOKEN';
479
  $this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
480
  }
481
- }else if ( isset( $_POST['miniorange_soft_token_nonce'] ) ) { /*Validate Soft Token,OTP over SMS,OTP over EMAIL,Phone verification */
 
 
482
  $nonce = $_POST['miniorange_soft_token_nonce'];
483
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-soft-token-nonce' ) ) {
484
  $error = new WP_Error();
485
  $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
486
  return $error;
487
- } else {
488
  $this->miniorange_pass2login_start_session();
489
  $session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
490
  $mo2fa_login_status = isset( $_POST['request_origin_method'] ) ? $_POST['request_origin_method'] : null;
@@ -522,10 +362,8 @@ class Miniorange_Password_2Factor_Login {
522
  }
523
  }
524
  }
525
-
526
-
527
  $user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id );
528
-
529
  if ( isset( $user_id ) ) {
530
  $customer = new Customer_Setup();
531
  $content = '';
@@ -575,21 +413,9 @@ class Miniorange_Password_2Factor_Login {
575
  return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Please try again..' ) );
576
  }
577
  }
578
- }else if ( isset( $_POST['miniorange_inline_skip_registration_nonce'] ) ) { /*Validate Soft Token,OTP over SMS,OTP over EMAIL,Phone verification */
579
- $nonce = $_POST['miniorange_inline_skip_registration_nonce'];
580
- if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-inline-skip-registration-nonce' ) ) {
581
- $error = new WP_Error();
582
- $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
583
-
584
- return $error;
585
- } else {
586
- $this->miniorange_pass2login_start_session();
587
- $session_id = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
588
- $user_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id);
589
- $this->mo2fa_pass2login(null, $session_id );
590
- }
591
- }else if ( isset( $_POST['miniorange_attribute_collection_nonce'] ) ) { /*Handling Rba Attributes from other plugins */
592
- $nonce = $_POST['miniorange_attribute_collection_nonce'];
593
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-login-attribute-collection-nonce' ) ) {
594
  $error = new WP_Error();
595
  $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
@@ -602,13 +428,249 @@ class Miniorange_Password_2Factor_Login {
602
  $currentuser = get_user_by( 'id', $user_id );
603
 
604
 
605
- $attributes = isset( $_POST['miniorange_rba_attribures'] ) ? $_POST['miniorange_rba_attribures'] : null;
606
- $redirect_to = isset( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : null;
607
- $session_id = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
608
  $this->miniorange_initiate_2nd_factor( $currentuser, $attributes, $redirect_to,$session_id );
609
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
610
  }
611
  }
 
 
 
612
 
613
  function deniedMessage($message)
614
  {
@@ -750,50 +812,98 @@ class Miniorange_Password_2Factor_Login {
750
 
751
  $login_status = $mo2fa_login_status;
752
  $login_message = $mo2fa_login_message;
753
- if ( $this->miniorange_pass2login_check_mobile_status( $login_status ) ) { //for mobile
754
- $transactionid = $this->mo2f_transactionid ? $this->mo2f_transactionid : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_transactionId',$session_id_encrypt );
755
- mo2f_get_qrcode_authentication_prompt( $login_status, $login_message, $redirect_to, $qrCode, $session_id_encrypt, $transactionid );
756
- exit;
757
- } else if ( $this->miniorange_pass2login_check_otp_status( $login_status ) ) { //for soft-token,otp over email,sms,phone verification,google auth
758
- $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
759
- mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id );
760
- exit;
761
- } else if ( $this->miniorange_pass2login_check_forgotphone_status( $login_status ) ) { // forgot phone page if both KBA and Email are configured.
762
- mo2f_get_forgotphone_form( $login_status, $login_message, $redirect_to, $session_id_encrypt );
763
  exit;
764
- }else if ( $this->miniorange_pass2login_check_push_oobemail_status( $login_status ) ) { //for push and out of band email.
765
- $transactionid = $this->mo2f_transactionid ? $this->mo2f_transactionid : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_transactionId',$session_id_encrypt );
766
- $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
767
- mo2f_get_push_notification_oobemail_prompt( $user_id, $login_status, $login_message, $redirect_to, $session_id_encrypt, $transactionid );
768
- exit;
769
- } else if ( $this->miniorange_pass2login_reconfig_google( $login_status ) ) { //MO_2_FACTOR_RECONFIG_GOOGLE
770
- // shortcode
771
- $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
772
- $this->mo2f_redirect_shortcode_addon( $user_id, $login_status, $login_message, 'reconfigure_google' );
773
- exit;
774
- } else if ( $this->miniorange_pass2login_reconfig_kba( $login_status ) ) { //MO_2_FACTOR_RECONFIG_KBA
775
- $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
776
- $this->mo2f_redirect_shortcode_addon( $user_id, $login_status, $login_message, 'reconfigure_kba' );
777
- exit;
778
- } else if ( $this->miniorange_pass2login_check_kba_status( $login_status ) ) { // for Kba
779
- $kbaquestions = $this->mo2f_kbaquestions ? $this->mo2f_kbaquestions : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo_2_factor_kba_questions',$session_id_encrypt );
780
- if(MO2F_IS_ONPREM){
781
  $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
782
- $ques = get_user_meta( $user_id, 'kba_questions_user');
783
- mo2f_get_kba_authentication_prompt( $login_message, $redirect_to, $session_id_encrypt, $ques[0] );
784
- }
785
- else{
786
- mo2f_get_kba_authentication_prompt( $login_message, $redirect_to, $session_id_encrypt, $kbaquestions );
787
- }
788
  exit;
789
- } else if ( $this->miniorange_pass2login_check_trusted_device_status( $login_status ) ) { // trusted device
790
- mo2f_get_device_form( $redirect_to, $session_id_encrypt );
 
 
 
791
  exit;
792
- } else { //show login screen
793
- $this->mo_2_factor_pass2login_show_wp_login_form();
794
- if(MO2F_IS_ONPREM){
795
- $this->mo_2_factor_pass2login_show_wp_login_form();
796
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
797
  }
798
  }
799
 
@@ -1089,7 +1199,8 @@ class Miniorange_Password_2Factor_Login {
1089
 
1090
  function miniorange_initiate_2nd_factor( $currentuser, $attributes = null, $redirect_to = null, $otp_token = "",$session_id_encrypt=null ) {
1091
  global $Mo2fdbQueries;
1092
- $this->miniorange_pass2login_start_session();
 
1093
  if(is_null($session_id_encrypt)) {
1094
  $session_id_encrypt=$this->create_session();
1095
  }
30
  private $mo2f_rbastatus;
31
  private $mo2f_transactionid;
32
 
33
+ function check_kba_validation($POSTED){
34
+ if ( isset( $POSTED['miniorange_kba_nonce'] ) ) { /*check kba validation*/
35
+ $nonce = $POSTED['miniorange_kba_nonce'];
36
+ if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-kba-nonce' ) ) {
37
+ $error = new WP_Error();
38
+ $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
39
+ return $error;
40
+ }else{
41
+ $this->miniorange_pass2login_start_session();
42
+ $session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
43
+ $user_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
44
+ $redirect_to = isset( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : null;
45
+ if ( isset( $user_id ) ) {
46
+ if ( MO2f_Utility::mo2f_check_empty_or_null( $_POST['mo2f_answer_1'] ) || MO2f_Utility::mo2f_check_empty_or_null( $_POST['mo2f_answer_2'] ) ) {
47
+ $mo2fa_login_message = 'Please provide both the answers.';
48
+ $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_KBA_AUTHENTICATION';
49
+ $this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
50
+ }
51
+ $otpToken = array();
52
+ $kba_questions = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo_2_factor_kba_questions',$session_id_encrypt );
53
+
54
+ $otpToken[0] = $kba_questions[0];
55
+ $otpToken[1] = sanitize_text_field( $_POST['mo2f_answer_1'] );
56
+ $otpToken[2] = $kba_questions[1];
57
+ $otpToken[3] = sanitize_text_field( $_POST['mo2f_answer_2'] );
58
+ $check_trust_device = isset( $_POST['mo2f_trust_device'] ) ? $_POST['mo2f_trust_device'] : 'false';
59
+ //if the php session folder has insufficient permissions, cookies to be used
60
+ $mo2f_login_transaction_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_transactionId', $session_id_encrypt );
61
+
62
+ $mo2f_rba_status = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_rba_status',$session_id_encrypt );
63
+ $kba_validate = new Customer_Setup();
64
+ $kba_validate_response = json_decode( $kba_validate->validate_otp_token( 'KBA', null, $mo2f_login_transaction_id, $otpToken, get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) ), true );
65
+ Global $Mo2fdbQueries;
66
+ $email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id );
67
+ if ( strcasecmp( $kba_validate_response['status'], 'SUCCESS' ) == 0 ) {
68
+ if ( get_option( 'mo2f_remember_device' ) && $check_trust_device == 'on' ) {
69
+ try {
70
+ mo2f_register_profile( $email, 'true', $mo2f_rba_status );
71
+ } catch ( Exception $e ) {
72
+ echo $e->getMessage();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  }
74
+ $this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  } else {
76
+ $this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
 
 
77
  }
 
78
  } else {
79
+
80
+ $mo2fa_login_message = 'The answers you have provided are incorrect.';
81
+ $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_KBA_AUTHENTICATION';
82
+ $this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt);
83
  }
84
+ } else {
85
+ $this->remove_current_activity($session_id_encrypt);
86
+ return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Please try again..' ) );
 
 
87
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  }
90
+ }
91
+ function check_rba_cancalation($POSTED){
92
+ $nonce = $POSTED['mo2f_trust_device_cancel_nonce'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-trust-device-cancel-nonce' ) ) {
94
+ $error = new WP_Error();
95
+ $error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
96
+ return $error;
97
  } else {
98
+ $this->miniorange_pass2login_start_session();
99
+ $session_id_encrypt = isset( $POSTED['session_id'] ) ? $POSTED['session_id'] : null;
100
+ $redirect_to = isset( $POSTED['redirect_to'] ) ? $POSTED['redirect_to'] : null;
101
+ $this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
102
  }
103
+ }
104
+ function check_rba_validation($POSTED){
105
+ $nonce = $POSTED['mo2f_trust_device_confirm_nonce'];
106
+ if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-trust-device-confirm-nonce' ) ) {
107
+ $session_id_encrypt = isset( $POSTED['session_id'] ) ? $POSTED['session_id'] : null;
108
+ $this->remove_current_activity($session_id_encrypt);
109
+ $error = new WP_Error();
110
+ $error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR ' ) . '</strong>:' . mo2f_lt( 'Invalid Request.' ) );
111
+ return $error;
112
+ } else {
113
+ $this->miniorange_pass2login_start_session();
114
+ $session_id_encrypt = isset( $POSTED['session_id'] ) ? $POSTED['session_id'] : null;
115
+ try {
116
+ $user_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id', $session_id_encrypt );
117
+ Global $Mo2fdbQueries;
118
+ $email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id );
119
+ $mo2f_rba_status = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_rba_status',$session_id_encrypt );
120
+ mo2f_register_profile( $email, 'true', $mo2f_rba_status );
121
+ } catch ( Exception $e ) {
122
+ echo $e->getMessage();
123
+ }
124
+ $redirect_to = isset( $POSTED['redirect_to'] ) ? $POSTED['redirect_to'] : null;
125
+ $this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
126
+ }
127
+
128
+ }
129
+ function check_miniorange_challenge_forgotphone($POSTED){/*check kba validation*/
130
+ $nonce = $_POST['miniorange_forgotphone'];
131
+ if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-forgotphone' ) ) {
132
  $error = new WP_Error();
133
+ $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
134
  return $error;
135
  } else {
136
+ $mo2fa_login_status = isset( $_POST['request_origin_method'] ) ? $_POST['request_origin_method'] : null;
137
  $session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
138
+ $redirect_to = isset( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : null;
139
+ $mo2fa_login_message = '';
140
+ $this->miniorange_pass2login_start_session();
141
+ $customer = new Customer_Setup();
142
+ $user_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
143
+ Global $Mo2fdbQueries;
144
+ $user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id );
 
145
  $kba_configuration_status = $Mo2fdbQueries->get_user_detail( 'mo2f_SecurityQuestions_config_status', $user_id );
146
 
147
+ if ( $kba_configuration_status ) {
148
+ $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_KBA_AND_OTP_OVER_EMAIL';
149
+ $pass2fa_login = new Miniorange_Password_2Factor_Login();
150
+ $pass2fa_login->mo2f_pass2login_kba_verification( $user_id, $redirect_to,$session_id_encrypt );
151
+ } else {
152
+ $hidden_user_email = MO2f_Utility::mo2f_get_hidden_email( $user_email );
153
+ $content = json_decode( $customer->send_otp_token( $user_email, 'EMAIL', get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) ), true );
154
 
155
  if ( strcasecmp( $content['status'], 'SUCCESS' ) == 0 ) {
156
+ $session_cookie_variables = array( 'mo2f-login-qrCode', 'mo2f_transactionId' );
157
+ MO2f_Utility::unset_session_variables( $session_cookie_variables );
158
+ MO2f_Utility::unset_cookie_variables( $session_cookie_variables );
159
+ MO2f_Utility::unset_temp_user_details_in_table( 'mo2f_transactionId',$session_id_encrypt );
160
+
161
+ //if the php session folder has insufficient permissions, cookies to be used
162
+ MO2f_Utility::set_user_values( $session_id_encrypt,'mo2f_login_message', 'A one time passcode has been sent to <b>' . $hidden_user_email . '</b>. Please enter the OTP to verify your identity.' );
163
+ MO2f_Utility::set_user_values( $session_id_encrypt, 'mo2f_transactionId', $content['txId'] );
164
  $this->mo2f_transactionid=$content['txId'];
165
+ $mo2fa_login_message = 'A one time passcode has been sent to <b>' . $hidden_user_email . '</b>. Please enter the OTP to verify your identity.';
166
+ $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL';
 
 
 
 
 
 
 
 
167
  } else {
168
+ $mo2fa_login_message = 'Error occurred while sending OTP over email. Please try again.';
 
 
169
  }
170
+ $this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to, null,$session_id_encrypt );
171
  }
172
+ $pass2fa_login = new Miniorange_Password_2Factor_Login();
173
+ $pass2fa_login->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
174
+ }
175
+ }
176
+ function check_miniorange_alternate_login_kba($POSTED){
177
+ $nonce = $POSTED['miniorange_alternate_login_kba_nonce'];
178
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-alternate-login-kba-nonce' ) ) {
179
+ $error = new WP_Error();
180
+ $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
181
+ return $error;
182
  } else {
183
+ $this->miniorange_pass2login_start_session();
184
+ $session_id_encrypt = isset( $POSTED['session_id'] ) ? $POSTED['session_id'] : null;
185
+ $user_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
186
+ $redirect_to = isset( $POSTED['redirect_to'] ) ? $POSTED['redirect_to'] : null;
187
+ $this->mo2f_pass2login_kba_verification( $user_id, $redirect_to,$session_id_encrypt );
188
  }
189
+ }
190
+ function check_miniorange_mobile_validation($POSTED){
191
+ /*check mobile validation */
192
+ $nonce = $POSTED['miniorange_mobile_validation_nonce'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-mobile-validation-nonce' ) ) {
194
  $error = new WP_Error();
195
  $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
197
  } else {
198
  if(MO2F_IS_ONPREM )
199
  {
200
+ $txid = $POSTED['TxidEmail'];
201
  $status = get_option($txid);
202
  if($status != '')
203
  {
208
  }
209
  }
210
  $this->miniorange_pass2login_start_session();
211
+ $session_id_encrypt = isset( $POSTED['session_id'] ) ? $POSTED['session_id'] : null;
212
  //if the php session folder has insufficient permissions, cookies to be used
213
  $mo2f_login_transaction_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_transactionId',$session_id_encrypt );
214
+ $redirect_to = isset( $POSTED['redirect_to'] ) ? $POSTED['redirect_to'] : null;
215
  $checkMobileStatus = new Two_Factor_Setup();
216
  $content = $checkMobileStatus->check_mobile_status( $mo2f_login_transaction_id );
217
  $response = json_decode( $content, true );
236
  return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Please try again.' ) );
237
  }
238
  }
239
+ }
240
+ function check_miniorange_mobile_validation_failed($POSTED){
241
+ /*Back to miniOrange Login Page if mobile validation failed and from back button of mobile challenge, soft token and default login*/
242
+ $nonce = $POSTED['miniorange_mobile_validation_failed_nonce'];
243
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-mobile-validation-failed-nonce' ) ) {
244
  $error = new WP_Error();
245
  $error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
246
  return $error;
247
  } else {
248
  $this->miniorange_pass2login_start_session();
249
+ $session_id_encrypt = isset( $POSTED['session_id'] ) ? $POSTED['session_id'] : null;
250
  $this->remove_current_activity($session_id_encrypt);
251
 
252
  }
253
+ }
254
+ function check_miniorange_forgotphone($POSTED){
255
+ $nonce = $POSTED['miniorange_forgotphone'];
256
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-forgotphone' ) ) {
257
  $error = new WP_Error();
258
  $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
259
  return $error;
260
  } else {
261
+ $mo2fa_login_status = isset( $POSTED['request_origin_method'] ) ? $POSTED['request_origin_method'] : null;
262
+ $session_id_encrypt = isset( $POSTED['session_id'] ) ? $POSTED['session_id'] : null;
263
+ $redirect_to = isset( $POSTED['redirect_to'] ) ? $POSTED['redirect_to'] : null;
264
  $mo2fa_login_message = '';
265
  $this->miniorange_pass2login_start_session();
266
  $customer = new Customer_Setup();
296
  $pass2fa_login = new Miniorange_Password_2Factor_Login();
297
  $pass2fa_login->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
298
  }
299
+ }
300
+ function check_miniorange_softtoken($POSTED){
301
+ /*Click on the link of phone is offline */
302
+ $nonce = $POSTED['miniorange_softtoken'];
303
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-softtoken' ) ) {
304
  $error = new WP_Error();
305
  $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
306
  return $error;
307
  } else {
308
  $this->miniorange_pass2login_start_session();
309
+ $session_id_encrypt = isset( $POSTED['session_id'] ) ? $POSTED['session_id'] : null;
310
  $session_cookie_variables = array( 'mo2f-login-qrCode', 'mo2f_transactionId' );
311
  MO2f_Utility::unset_session_variables( $session_cookie_variables );
312
  MO2f_Utility::unset_cookie_variables( $session_cookie_variables );
313
  MO2f_Utility::unset_temp_user_details_in_table('mo2f_transactionId',$session_id_encrypt );
314
+ $redirect_to = isset( $POSTED['redirect_to'] ) ? $POSTED['redirect_to'] : null;
315
  $mo2fa_login_message = 'Please enter the one time passcode shown in the miniOrange<b> Authenticator</b> app.';
316
  $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_SOFT_TOKEN';
317
  $this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
318
  }
319
+ }
320
+ function check_miniorange_soft_token($POSTED){
321
+ /*Validate Soft Token,OTP over SMS,OTP over EMAIL,Phone verification */
322
  $nonce = $_POST['miniorange_soft_token_nonce'];
323
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-soft-token-nonce' ) ) {
324
  $error = new WP_Error();
325
  $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
326
  return $error;
327
+ }else {
328
  $this->miniorange_pass2login_start_session();
329
  $session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
330
  $mo2fa_login_status = isset( $_POST['request_origin_method'] ) ? $_POST['request_origin_method'] : null;
362
  }
363
  }
364
  }
365
+ Global $Mo2fdbQueries;
 
366
  $user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id );
 
367
  if ( isset( $user_id ) ) {
368
  $customer = new Customer_Setup();
369
  $content = '';
413
  return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Please try again..' ) );
414
  }
415
  }
416
+ }
417
+ function check_miniorange_attribute_collection($POSTED){
418
+ $nonce = $POSTED['miniorange_attribute_collection_nonce'];
 
 
 
 
 
 
 
 
 
 
 
 
419
  if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-login-attribute-collection-nonce' ) ) {
420
  $error = new WP_Error();
421
  $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
428
  $currentuser = get_user_by( 'id', $user_id );
429
 
430
 
431
+ $attributes = isset( $POSTED['miniorange_rba_attribures'] ) ? $POSTED['miniorange_rba_attribures'] : null;
432
+ $redirect_to = isset( $POSTED['redirect_to'] ) ? $POSTED['redirect_to'] : null;
433
+ $session_id = isset( $POSTED['session_id'] ) ? $POSTED['session_id'] : null;
434
  $this->miniorange_initiate_2nd_factor( $currentuser, $attributes, $redirect_to,$session_id );
435
  }
436
+ }
437
+ function check_miniorange_inline_skip_registration($POSTED){
438
+ $error = new WP_Error();
439
+ $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
440
+ }
441
+ function miniorange_pass2login_redirect() {
442
+ do_action('mo2f_network_init');
443
+ global $Mo2fdbQueries;
444
+
445
+ if ( ! get_option( 'mo2f_login_option' ) ) {
446
+ if ( isset( $_POST['miniorange_login_nonce'] ) ) {
447
+ $nonce = $_POST['miniorange_login_nonce'];
448
+ $session_id = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
449
+
450
+ if(is_null($session_id)) {
451
+ $session_id=$this->create_session();
452
+ }
453
+
454
+
455
+ if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-login-nonce' ) ) {
456
+ $this->remove_current_activity($session_id);
457
+ $error = new WP_Error();
458
+ $error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
459
+ return $error;
460
+ } else {
461
+ $this->miniorange_pass2login_start_session();
462
+ $mobile_login = new Miniorange_Mobile_Login();
463
+ //validation and sanitization
464
+ $username = '';
465
+ if ( MO2f_Utility::mo2f_check_empty_or_null( $_POST['mo2fa_username'] ) ) {
466
+ MO2f_Utility::set_user_values($session_id, 'mo2f_login_message', 'Please enter username to proceed' );
467
+ $mobile_login->mo_auth_show_error_message();
468
+ return;
469
+ } else {
470
+ $username = sanitize_text_field( $_POST['mo2fa_username'] );
471
+ }
472
+ if ( username_exists( $username ) ) { /*if username exists in wp site */
473
+ $user = new WP_User( $username );
474
+ $redirect_to = isset( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : null;
475
+ MO2f_Utility::set_user_values($session_id, 'mo2f_current_user_id', $user->ID );
476
+ MO2f_Utility::set_user_values($session_id, 'mo2f_1stfactor_status', 'VALIDATE_SUCCESS' );
477
+ $this->mo2f_userId=$user->ID;
478
+ $this->fstfactor='VALIDATE_SUCCESS';
479
+ $current_roles = miniorange_get_user_role( $user );
480
+ $mo2f_configured_2FA_method = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user->ID );
481
+ $email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
482
+ $mo_2factor_user_registration_status = $Mo2fdbQueries->get_user_detail( 'mo_2factor_user_registration_status', $user->ID );
483
+ $kba_configuration_status = $Mo2fdbQueries->get_user_detail( 'mo2f_SecurityQuestions_config_status', $user->ID );
484
+
485
+ if(MO2F_IS_ONPREM )
486
+ {
487
+ $configuredMethod = get_user_meta($user->ID,'currentMethod',true);
488
+ $mo2f_configured_2FA_method = empty($configuredMethod) ? 0 : 1;
489
+ $mo_2factor_user_registration_status = 'MO_2_FACTOR_PLUGIN_SETTINGS';
490
+ $email = get_user_meta($user->ID , 'email',true);
491
+
492
+ }
493
+ if ( $mo2f_configured_2FA_method ) {
494
+ if ( $email && $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS' or (MO2F_IS_ONPREM and $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS')) {
495
+ if ( MO2f_Utility::check_if_request_is_from_mobile_device( $_SERVER['HTTP_USER_AGENT'] ) && $kba_configuration_status ) {
496
+ $this->mo2f_pass2login_kba_verification( $user->ID, $redirect_to, $session_id );
497
+ } else {
498
+ $mo2f_second_factor = '';
499
+ $mo2f_second_factor = mo2f_get_user_2ndfactor( $user );
500
+ if(MO2F_IS_ONPREM)
501
+ {
502
+ //$user = get_userdatabylogin('admin');
503
+ $mo2f_second_factor = get_user_meta($user->ID,'currentMethod',true);
504
+
505
+ if($mo2f_second_factor == 'Security Questions')
506
+ {
507
+ $mo2f_second_factor = 'KBA';
508
+ }
509
+ else if($mo2f_second_factor == 'Google Authenticator')
510
+ {
511
+ $mo2f_second_factor = 'GOOGLE AUTHENTICATOR';
512
+ }
513
+ else if($mo2f_second_factor != 'Email Verification')
514
+ $mo2f_second_factor = 'NONE';
515
+ }
516
+
517
+ if ( $mo2f_second_factor == 'MOBILE AUTHENTICATION' ) {
518
+ $this->mo2f_pass2login_mobile_verification( $user, $redirect_to, $session_id );
519
+ } else if ( $mo2f_second_factor == 'PUSH NOTIFICATIONS' || $mo2f_second_factor == 'OUT OF BAND EMAIL' ) {
520
+ $this->mo2f_pass2login_push_oobemail_verification( $user, $mo2f_second_factor, $redirect_to, $session_id );
521
+ }
522
+ else if($mo2f_second_factor == 'Email Verification'){
523
+ $this->mo2f_pass2login_push_oobemail_verification( $user, $mo2f_second_factor, $redirect_to, $session_id );
524
+ }
525
+ else if ( $mo2f_second_factor == 'SOFT TOKEN' || $mo2f_second_factor == 'SMS' || $mo2f_second_factor == 'PHONE VERIFICATION' || $mo2f_second_factor == 'GOOGLE AUTHENTICATOR' ) {
526
+ $this->mo2f_pass2login_otp_verification( $user, $mo2f_second_factor, $redirect_to, $session_id );
527
+ } else if ( $mo2f_second_factor == 'KBA' ) {
528
+ $this->mo2f_pass2login_kba_verification( $user->ID, $redirect_to, $session_id );
529
+ } else {
530
+ $this->remove_current_activity($session_id);
531
+ MO2f_Utility::set_user_values($session_id, 'mo2f_login_message', 'Please try again or contact your admin.' );
532
+ $mobile_login->mo_auth_show_success_message();
533
+ }
534
+ }
535
+ } else {
536
+ MO2f_Utility::set_user_values($session_id, 'mo2f_login_message', 'Please login into your account using password.' );
537
+ $mobile_login->mo_auth_show_success_message('Please login into your account using password.');
538
+ update_user_meta($user->ID,'userMessage','Please login into your account using password.');
539
+ $mobile_login->mo2f_redirectto_wp_login();
540
+ }
541
+ } else {
542
+ MO2f_Utility::set_user_values( $session_id, "mo2f_login_message", 'Please login into your account using password.' );
543
+ $mobile_login->mo_auth_show_success_message('Please login into your account using password.');
544
+ update_user_meta($user->ID,'userMessage','Please login into your account using password.');
545
+ $mobile_login->mo2f_redirectto_wp_login();
546
+ }
547
+ } else {
548
+ $mobile_login->remove_current_activity($session_id);
549
+ MO2f_Utility::set_user_values( $session_id, "mo2f_login_message", 'Invalid Username.' );
550
+ $mobile_login->mo_auth_show_error_message('Invalid Username.');
551
+ }
552
+ }
553
+ }
554
+
555
+ }
556
+ if(isset($_GET['Txid'])&&isset($_GET['accessToken']))
557
+ {
558
+ $userIDGet = sanitize_text_field($_GET['userID']);
559
+ $txIdGet = sanitize_text_field($_GET['Txid']);
560
+ $otpToken = get_site_option($userIDGet);
561
+ $txidstatus = get_site_option($txIdGet);
562
+ $userIDd = $userIDGet.'D';
563
+ $otpTokenD = get_site_option($userIDd);
564
+ $mo2f_dirName = dirname(__FILE__);
565
+ $mo2f_dirName = explode('wp-content', $mo2f_dirName);
566
+ $mo2f_dirName = explode('handler', $mo2f_dirName[1]);
567
+
568
+ $head = "You are not authorized to perform this action";
569
+ $body = "Please contact to your admin";
570
+ $color = "red";
571
+ if(3 == $txidstatus)
572
+ {
573
+ $time = "time".$txIdGet;
574
+ $currentTimeInMillis = round(microtime(true) * 1000);
575
+ $generatedTimeINMillis = get_site_option($time);
576
+ $difference = ($currentTimeInMillis-$generatedTimeINMillis)/1000 ;
577
+ if($difference <= 300)
578
+ {
579
+ $accessTokenGet = sanitize_text_field($_GET['accessToken']);
580
+ if( $accessTokenGet == $otpToken)
581
+ {
582
+ update_site_option($txIdGet,1);
583
+ $body = "Transaction has been successfully validated.<br><br>Please continue with the transaction.";
584
+ $head = "TRANSACTION SUCCESSFUL";
585
+ $color = "green";
586
+ }
587
+ else if($accessTokenGet==$otpTokenD)
588
+ {
589
+ update_site_option($txIdGet,0);
590
+ $body = "Transaction has been Canceled.<br><br>Please Try Again.";
591
+ $head = "TRANSACTION DENIED";
592
+ }
593
+ }
594
+ delete_site_option($userIDGet);
595
+ delete_site_option($userIDd);
596
+ delete_site_option($time);
597
+
598
+ }
599
+
600
+ $this->display_email_verification($head,$body,$color);
601
+ exit;
602
+
603
+ }
604
+ else if(isset($_POST['txid']))
605
+ {
606
+ $txidpost = sanitize_text_field($_POST['txid']);
607
+ $status = get_site_option($txidpost);
608
+ update_option('optionVal1',$status); //??
609
+ if($status ==1 || $status ==0)
610
+ delete_site_option($txidpost);
611
+ echo $status;
612
+ exit();
613
+ }
614
+ else{
615
+ $value=isset($_POST['option'])?$_POST['option']:false;
616
+
617
+ switch ($value) {
618
+ case 'miniorange_rba_validate':
619
+ $this->check_rba_validation($_POST);
620
+ break;
621
+
622
+ case 'miniorange_rba_cancle':
623
+ $this->check_rba_cancalation($_POST);
624
+ break;
625
+
626
+ case 'miniorange_forgotphone':
627
+ $this->check_miniorange_challenge_forgotphone($_POST);
628
+ break;
629
+
630
+ case 'miniorange_alternate_login_kba':
631
+ $this->check_miniorange_alternate_login_kba($_POST);
632
+ break;
633
+
634
+ case 'miniorange_kba_validate':
635
+ $this->check_kba_validation($_POST);
636
+
637
+ break;
638
+
639
+ case 'miniorange_mobile_validation':
640
+ $this->check_miniorange_mobile_validation($_POST);
641
+ break;
642
+
643
+ case 'miniorange_mobile_validation_failed':
644
+ $this->check_miniorange_mobile_validation_failed($_POST);
645
+ break;
646
+
647
+ case 'miniorange_softtoken':
648
+ $this->check_miniorange_softtoken($_POST);
649
+ break;
650
+
651
+ case 'miniorange_soft_token':
652
+ $this->check_miniorange_soft_token($_POST);
653
+ break;
654
+
655
+ case 'miniorange_inline_skip_registration':
656
+ $this->check_miniorange_inline_skip_registration($_POST);
657
+ break;
658
+
659
+ case 'miniorange_attribute_collection':
660
+ $this->check_miniorange_attribute_collection($_POST);
661
+ break;
662
+
663
+ default:
664
+ $error = new WP_Error();
665
+ $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
666
+
667
+ return $error;
668
+ break;
669
  }
670
  }
671
+ }
672
+
673
+
674
 
675
  function deniedMessage($message)
676
  {
812
 
813
  $login_status = $mo2fa_login_status;
814
  $login_message = $mo2fa_login_message;
815
+ switch ($login_status) {
816
+ case 'MO_2_FACTOR_CHALLENGE_MOBILE_AUTHENTICATION':
817
+ $transactionid = $this->mo2f_transactionid ? $this->mo2f_transactionid : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_transactionId',$session_id_encrypt );
818
+ mo2f_get_qrcode_authentication_prompt( $login_status, $login_message, $redirect_to, $qrCode, $session_id_encrypt, $transactionid );
 
 
 
 
 
 
819
  exit;
820
+ break;
821
+
822
+ case 'MO_2_FACTOR_CHALLENGE_SOFT_TOKEN':
 
 
 
 
 
 
 
 
 
 
 
 
 
 
823
  $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
824
+ mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id );
 
 
 
 
 
825
  exit;
826
+ break;
827
+
828
+ case 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL':
829
+ $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
830
+ mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id );
831
  exit;
832
+ break;
833
+
834
+ case 'MO_2_FACTOR_CHALLENGE_OTP_OVER_SMS':
835
+ $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
836
+ mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id );
837
+ exit;
838
+ break;
839
+
840
+ case 'MO_2_FACTOR_CHALLENGE_PHONE_VERIFICATION':
841
+ $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
842
+ mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id );
843
+ exit;
844
+ break;
845
+
846
+ case 'MO_2_FACTOR_CHALLENGE_GOOGLE_AUTHENTICATION':
847
+ $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
848
+ mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id );
849
+ exit;
850
+ break;
851
+
852
+ case 'MO_2_FACTOR_CHALLENGE_KBA_AND_OTP_OVER_EMAIL':
853
+ mo2f_get_forgotphone_form( $login_status, $login_message, $redirect_to, $session_id_encrypt );
854
+ exit;
855
+ break;
856
+
857
+ case 'MO_2_FACTOR_CHALLENGE_PUSH_NOTIFICATIONS':
858
+ $transactionid = $this->mo2f_transactionid ? $this->mo2f_transactionid : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_transactionId',$session_id_encrypt );
859
+ $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
860
+ mo2f_get_push_notification_oobemail_prompt( $user_id, $login_status, $login_message, $redirect_to, $session_id_encrypt, $transactionid );
861
+ exit;
862
+ break;
863
+
864
+ case 'MO_2_FACTOR_CHALLENGE_OOB_EMAIL':
865
+ $transactionid = $this->mo2f_transactionid ? $this->mo2f_transactionid : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_transactionId',$session_id_encrypt );
866
+ $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
867
+ mo2f_get_push_notification_oobemail_prompt( $user_id, $login_status, $login_message, $redirect_to, $session_id_encrypt, $transactionid );
868
+ exit;
869
+ break;
870
+
871
+ case 'MO_2_FACTOR_RECONFIG_GOOGLE':
872
+ $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
873
+ $this->mo2f_redirect_shortcode_addon( $user_id, $login_status, $login_message, 'reconfigure_google' );
874
+ exit;
875
+ break;
876
+
877
+ case 'MO_2_FACTOR_RECONFIG_KBA':
878
+ $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
879
+ $this->mo2f_redirect_shortcode_addon( $user_id, $login_status, $login_message, 'reconfigure_kba' );
880
+ exit;
881
+ break;
882
+
883
+ case 'MO_2_FACTOR_CHALLENGE_KBA_AUTHENTICATION':
884
+ $kbaquestions = $this->mo2f_kbaquestions ? $this->mo2f_kbaquestions : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo_2_factor_kba_questions',$session_id_encrypt );
885
+ if(MO2F_IS_ONPREM){
886
+ $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
887
+ $ques = get_user_meta( $user_id, 'kba_questions_user');
888
+ mo2f_get_kba_authentication_prompt( $login_message, $redirect_to, $session_id_encrypt, $ques[0] );
889
+ }
890
+ else{
891
+ mo2f_get_kba_authentication_prompt( $login_message, $redirect_to, $session_id_encrypt, $kbaquestions );
892
+ }
893
+ exit;
894
+ break;
895
+
896
+ case 'MO_2_FACTOR_REMEMBER_TRUSTED_DEVICE':
897
+ mo2f_get_device_form( $redirect_to, $session_id_encrypt );
898
+ exit;
899
+ break;
900
+
901
+ default:
902
+ $this->mo_2_factor_pass2login_show_wp_login_form();
903
+ if(MO2F_IS_ONPREM){
904
+ $this->mo_2_factor_pass2login_show_wp_login_form();
905
+ }
906
+ break;
907
  }
908
  }
909
 
1199
 
1200
  function miniorange_initiate_2nd_factor( $currentuser, $attributes = null, $redirect_to = null, $otp_token = "",$session_id_encrypt=null ) {
1201
  global $Mo2fdbQueries;
1202
+
1203
+ $this->miniorange_pass2login_start_session();
1204
  if(is_null($session_id_encrypt)) {
1205
  $session_id_encrypt=$this->create_session();
1206
  }
{handler → miniorange-2-factor-authentication/handler}/twofa/two_fa_settings.php RENAMED
@@ -1879,10 +1879,12 @@ class Miniorange_Authentication {
1879
  $kba_questions = isset( $_SESSION['mo_2_factor_kba_questions'] ) && ! empty( $_SESSION['mo_2_factor_kba_questions'] ) ? $_SESSION['mo_2_factor_kba_questions'] : get_option( 'kba_questions' );
1880
 
1881
  $kbaAns = array();
1882
- $kbaAns[0] = $kba_questions[0];
1883
- $kbaAns[1] = $kba_ans_1;
1884
- $kbaAns[2] = $kba_questions[1];
1885
- $kbaAns[3] = $kba_ans_2;
 
 
1886
 
1887
  //if the php session folder has insufficient permissions, temporary options to be used
1888
  $mo2f_transactionId = isset( $_SESSION['mo2f_transactionId'] ) && ! empty( $_SESSION['mo2f_transactionId'] ) ? $_SESSION['mo2f_transactionId'] : get_option( 'mo2f_transactionId' );
1879
  $kba_questions = isset( $_SESSION['mo_2_factor_kba_questions'] ) && ! empty( $_SESSION['mo_2_factor_kba_questions'] ) ? $_SESSION['mo_2_factor_kba_questions'] : get_option( 'kba_questions' );
1880
 
1881
  $kbaAns = array();
1882
+ if(!MO2F_IS_ONPREM){
1883
+ $kbaAns[0] = $kba_questions[0];
1884
+ $kbaAns[1] = $kba_ans_1;
1885
+ $kbaAns[2] = $kba_questions[1];
1886
+ $kbaAns[3] = $kba_ans_2;
1887
+ }
1888
 
1889
  //if the php session folder has insufficient permissions, temporary options to be used
1890
  $mo2f_transactionId = isset( $_SESSION['mo2f_transactionId'] ) && ! empty( $_SESSION['mo2f_transactionId'] ) ? $_SESSION['mo2f_transactionId'] : get_option( 'mo2f_transactionId' );
{handler → miniorange-2-factor-authentication/handler}/twofa/two_fa_utility.php RENAMED
File without changes
{helper → miniorange-2-factor-authentication/helper}/constants.php RENAMED
File without changes
{helper → miniorange-2-factor-authentication/helper}/curl.php RENAMED
File without changes
{helper → miniorange-2-factor-authentication/helper}/dashboard_security_notification.php RENAMED
File without changes
{helper → miniorange-2-factor-authentication/helper}/messages.php RENAMED
File without changes
{helper → miniorange-2-factor-authentication/helper}/pluginUtility.php RENAMED
File without changes
{helper → miniorange-2-factor-authentication/helper}/plugins.php RENAMED
File without changes
{helper → miniorange-2-factor-authentication/helper}/utility.php RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/css/bootstrap.min.css RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/css/button_styles.css RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/css/hide-login-form.css RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/css/hide-login.css RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/css/jquery.dataTables.min.css RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/css/phone.css RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/css/popup.css RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/css/show-login.css RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/css/style_settings.css RENAMED
@@ -1,3 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  .mo_upgrade_toggle
2
  {
3
  text-align: center;
@@ -61,10 +146,11 @@
61
  }
62
  .mo_2fa_card
63
  {
64
- margin:20px;
65
  margin-top:16px;
66
  border-radius:2%;
67
- overflow: hidden;
 
68
  width:25%;
69
  border:1px solid #ecebeb;
70
  box-sizing:border-box;
@@ -102,14 +188,22 @@
102
  .mo_wpns_upgrade_title11
103
  {
104
  width: 23%;
105
- min-height: 500px;
 
 
 
 
 
 
 
 
106
  background-color: white;
107
  float: left;
108
  border: 2px solid black;
109
  }
110
  .mo_wpns_upgrade_title_2fa_lite
111
  {
112
- width: 31.1%;
113
  min-height: 500px;
114
  background-color: white;
115
  float: left;
@@ -120,6 +214,7 @@
120
  text-align: center;
121
  background-color: black;
122
  text-shadow: 3px 2px 2px black;
 
123
 
124
  }
125
  .mo_wpns_upgrade_page_2fa_plan_name
@@ -128,6 +223,13 @@
128
  padding: 6% 0% 0% 0%;
129
  color: white;
130
  font-size: 280%;
 
 
 
 
 
 
 
131
  }
132
  .mo_wpns_upgrade_page_hr
133
  {
@@ -136,13 +238,13 @@
136
  .mo_wpns_upgrade_page_2fa_background
137
  {
138
  width: 100%;
139
- min-height: 388px;
140
  background-color: #4dbfb9;
141
  }
142
  .mo_wpns_upgrade_page_2fa_lite_background
143
  {
144
  width: 100%;
145
- min-height: 404px;
146
  background-color: #4dbfb9;
147
  }
148
  .mo_wpns_upgrade_page_show_feature_arrow
@@ -176,7 +278,7 @@
176
  .mo_wpns_upgrade_pade_pricing
177
  {
178
  color: white;
179
- font-size: 400%;
180
  }
181
  .mo_wpns_upgrade_page_starting_price
182
  {
@@ -215,7 +317,7 @@
215
  .mo_wpns_upgrade_page_ns_background
216
  {
217
  width: 100%;
218
- min-height: 310px;
219
  background-color: #4dbfb9;
220
  }
221
  .mo_wpns_button_info_tab {
@@ -314,18 +416,20 @@
314
  }
315
 
316
  .mo_wpns_help_title {
317
- font-size:17px;
318
- width:100%;
319
- color:#1B79AE;
320
- cursor:pointer;
321
- font-weight: bold;
322
  }
323
  .mo_wpns_help_desc {
324
- font-size:13px;
325
- border-left:solid 2px rgba(128, 128, 128, 0.65);
326
- margin-top:10px;
327
- padding-left:10px;
328
- margin-bottom:20px
 
 
329
  }
330
  .mo_wpns_help {
331
  width: 95%;
@@ -2827,7 +2931,7 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
2827
 
2828
  }
2829
  .mo_table-bordered, .mo_table-bordered > tbody > tr > td {
2830
- border: 1px solid #ddd;
2831
  }
2832
  .mo_align-center > tr > td {
2833
  text-align: center !important;
@@ -2978,7 +3082,7 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
2978
  font-size: 120%;
2979
  }
2980
  .customloginform td {
2981
- width:80%;
2982
  text-align:left;
2983
  border:1px solid #20b2aa;
2984
  padding:1%;
@@ -2988,4 +3092,14 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
2988
  text-align:left;
2989
  border:1px solid black;
2990
  padding:1%;
2991
- }
 
 
 
 
 
 
 
 
 
 
1
+ .mo2f_black_background
2
+ {
3
+ background: gainsboro;
4
+ }
5
+ .mo2f_2fa_plan_title
6
+ {
7
+ background-color: #20b2aa;
8
+ border: 2px solid #20b2aa;
9
+ }
10
+ .mo2f_padding_style
11
+ {
12
+ padding: 2px 0px;
13
+ }
14
+ .mo2f_white_color_style
15
+ {
16
+ color: white;
17
+ }
18
+ .mo2f_2fa_lite_plan_title
19
+ {
20
+ background-color: #20b2aa;
21
+ border: 2px solid #20b2aa;
22
+ width: 25%
23
+ }
24
+ .mo2f_tooltip {
25
+ position: relative;
26
+ display: inline-block;
27
+ /*border-bottom: 1px dotted black;*/
28
+ }
29
+
30
+ .mo2f_tooltip .mo2f_tooltiptext {
31
+ visibility: hidden;
32
+ width: 200px;
33
+ background-color: #20b2aa;
34
+ color: white;
35
+ text-align: center;
36
+ border-radius: 6px;
37
+ font-size: 14px;
38
+ padding: 7px;
39
+
40
+ /* Position the tooltip */
41
+ position: absolute;
42
+ z-index: 1;
43
+ }
44
+ .mo2f_tooltip_addon {
45
+ position: relative;
46
+ display: inline-block;
47
+ /*border-bottom: 1px dotted black;*/
48
+ }
49
+ .mo2f_tooltip_addon .mo2f_tooltiptext_addon {
50
+ visibility: hidden;
51
+ width: 175px;
52
+ background-color: #20b2aa;
53
+ color: white;
54
+ text-align: center;
55
+ border-radius: 6px;
56
+ font-size: 14px;
57
+ padding: 7px;
58
+
59
+ /* Position the tooltip */
60
+ position: absolute;
61
+ z-index: 1;
62
+ }
63
+ /*.mo2f_addon_info_margin
64
+ {
65
+ width: 175px;
66
+ }*/
67
+ .mo2f_info_tab
68
+ {
69
+ font-size:16px;
70
+ color:#20b2aa;
71
+ cursor: pointer;
72
+ }
73
+ .mo2f_info_tab:hover
74
+ {
75
+ /*font-size:16px;*/
76
+ color:red;
77
+ /*cursor: pointer;*/
78
+ }
79
+
80
+ .mo2f_tooltip:hover .mo2f_tooltiptext {
81
+ visibility: visible;
82
+ }
83
+ .mo2f_tooltip_addon:hover .mo2f_tooltiptext_addon {
84
+ visibility: visible;
85
+ }
86
  .mo_upgrade_toggle
87
  {
88
  text-align: center;
146
  }
147
  .mo_2fa_card
148
  {
149
+ margin:3px;
150
  margin-top:16px;
151
  border-radius:2%;
152
+ /* height:463px;
153
+ overflow: hidden;*/
154
  width:25%;
155
  border:1px solid #ecebeb;
156
  box-sizing:border-box;
188
  .mo_wpns_upgrade_title11
189
  {
190
  width: 23%;
191
+ min-height: 633px;
192
+ background-color: white;
193
+ float: left;
194
+ border: 2px solid black;
195
+ }
196
+ .mo_wpns_upgrade_security_title
197
+ {
198
+ width: 23%;
199
+ min-height: 511px;
200
  background-color: white;
201
  float: left;
202
  border: 2px solid black;
203
  }
204
  .mo_wpns_upgrade_title_2fa_lite
205
  {
206
+ width: 23%;
207
  min-height: 500px;
208
  background-color: white;
209
  float: left;
214
  text-align: center;
215
  background-color: black;
216
  text-shadow: 3px 2px 2px black;
217
+ min-height: 62px;
218
 
219
  }
220
  .mo_wpns_upgrade_page_2fa_plan_name
223
  padding: 6% 0% 0% 0%;
224
  color: white;
225
  font-size: 280%;
226
+ }
227
+ .mo_wpns_upgrade_page_2fa_integration_plan_name
228
+ {
229
+ margin-top: 0%;
230
+ padding: 6% 0% 0% 0%;
231
+ color: white;
232
+ font-size: 200%;
233
  }
234
  .mo_wpns_upgrade_page_hr
235
  {
238
  .mo_wpns_upgrade_page_2fa_background
239
  {
240
  width: 100%;
241
+ min-height: 448px;
242
  background-color: #4dbfb9;
243
  }
244
  .mo_wpns_upgrade_page_2fa_lite_background
245
  {
246
  width: 100%;
247
+ min-height: 379px;
248
  background-color: #4dbfb9;
249
  }
250
  .mo_wpns_upgrade_page_show_feature_arrow
278
  .mo_wpns_upgrade_pade_pricing
279
  {
280
  color: white;
281
+ font-size: 350%;
282
  }
283
  .mo_wpns_upgrade_page_starting_price
284
  {
317
  .mo_wpns_upgrade_page_ns_background
318
  {
319
  width: 100%;
320
+ min-height: 277px;
321
  background-color: #4dbfb9;
322
  }
323
  .mo_wpns_button_info_tab {
416
  }
417
 
418
  .mo_wpns_help_title {
419
+ font-size: 17px;
420
+ width: 100%;
421
+ color: #1b5778;
422
+ cursor: pointer;
423
+ font-weight: bold;
424
  }
425
  .mo_wpns_help_desc {
426
+ font-size: 16px;
427
+ border-left: solid 2px rgba(128, 128, 128, 0.65);
428
+ margin-top: 10px;
429
+ font-weight: 600;
430
+ line-height: 1.5em;
431
+ padding-left: 10px;
432
+ margin-bottom: 20px;
433
  }
434
  .mo_wpns_help {
435
  width: 95%;
2931
 
2932
  }
2933
  .mo_table-bordered, .mo_table-bordered > tbody > tr > td {
2934
+ /*border: 1px solid #ddd;*/
2935
  }
2936
  .mo_align-center > tr > td {
2937
  text-align: center !important;
3082
  font-size: 120%;
3083
  }
3084
  .customloginform td {
3085
+ /*width:80%;*/
3086
  text-align:left;
3087
  border:1px solid #20b2aa;
3088
  padding:1%;
3092
  text-align:left;
3093
  border:1px solid black;
3094
  padding:1%;
3095
+ }
3096
+ .mo2f_doc_icon_style
3097
+ {
3098
+ font-size:25px;
3099
+ color:#269eb3;
3100
+ }
3101
+ .mo2f_doc_font_size
3102
+ {
3103
+ font-size: 112%;
3104
+ width: 30%;
3105
+ }
{includes → miniorange-2-factor-authentication/includes}/css/twofa_style_settings.css RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/61456.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/Admin_Custom_Login.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/Custom_Login_Page_Customizer_LoginPress.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/RegistrationMagic_Custom_Registration_Forms_and_User_Login.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/ajax-loader-login.gif RENAMED
File without changes
miniorange-2-factor-authentication/includes/images/amazons3.png ADDED
Binary file
{includes → miniorange-2-factor-authentication/includes}/images/angry.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/appstore.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/authmethods/AuthyAuthenticator.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/authmethods/EmailVerification.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/authmethods/GoogleAuthenticator.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/authmethods/HardwareToken.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/authmethods/OTPOverEmail.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/authmethods/OTPOverSMS.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/authmethods/OTPOverSMSandEmail.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/authmethods/SecurityQuestions.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/authmethods/miniOrangePushNotification.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/authmethods/miniOrangeQRCodeAuthentication.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/authmethods/miniOrangeSoftToken.png RENAMED
File without changes
miniorange-2-factor-authentication/includes/images/box.png ADDED
Binary file
{includes → miniorange-2-factor-authentication/includes}/images/card.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/database-backup-logo.png RENAMED
File without changes
miniorange-2-factor-authentication/includes/images/dropbox.png ADDED
Binary file
{includes → miniorange-2-factor-authentication/includes}/images/error.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/flags16.png RENAMED
File without changes
miniorange-2-factor-authentication/includes/images/gdrive.jpg ADDED
Binary file
miniorange-2-factor-authentication/includes/images/google.jpg ADDED
Binary file
{includes → miniorange-2-factor-authentication/includes}/images/happy.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/loader.gif RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/login-protection-logo.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/malware-scanner-logo.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/miniOrange2.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/miniorange_icon.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/miniorange_logo.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/mo-waf-logo.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/mo_white_logo.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/netbanking.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/normal.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/normal1.png RENAMED
File without changes
miniorange-2-factor-authentication/includes/images/onedrive.png ADDED
Binary file
{includes → miniorange-2-factor-authentication/includes}/images/paypal.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/playStore.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/restrict_content_pro.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/right-arrow.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/right.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/sad.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/smile.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/success.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/support3.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/theme_my_login.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/ultimate_member.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/user_registration.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/woocommerce.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/images/wrong.png RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/jquery-qrcode/README.md RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/jquery-qrcode/jquery-qrcode.js RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/jquery-qrcode/jquery-qrcode.min.js RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/js/bootstrap.min.js RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/js/jquery.dataTables.min.js RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/js/phone.js RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/js/rba/js/client.js RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/js/rba/js/device_attributes.js RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/js/rba/js/fontdetect.js RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/js/rba/js/fonts.swf RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/js/rba/js/jquery-1.9.1.js RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/js/rba/js/jquery.flash.js RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/js/rba/js/miniorange-fp.js RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/js/rba/js/murmurhash3.js RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/js/rba/js/swfobject.js RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/js/rba/js/ua-parser.js RENAMED
File without changes
{includes → miniorange-2-factor-authentication/includes}/js/settings_page.js RENAMED
@@ -21,33 +21,54 @@ jQuery(document).ready(function () {
21
 
22
  //Instructions
23
  $("#mo_wpns_help_curl_title").click(function () {
24
- $("#mo_wpns_help_curl_desc").slideToggle(400);
25
  });
26
-
27
- $("#mo_wpns_help_mobile_auth_title").click(function () {
28
- $("#mo_wpns_help_mobile_auth_desc").slideToggle(400);
29
  });
30
-
31
- $("#mo_wpns_help_disposable_title").click(function () {
32
- $("#mo_wpns_help_disposable_desc").slideToggle(400);
33
  });
34
-
35
- $("#mo_wpns_help_strong_pass_title").click(function () {
36
- $("#mo_wpns_help_strong_pass_desc").slideToggle(400);
37
  });
38
-
39
- $("#mo_wpns_help_adv_user_ver_title").click(function () {
40
- $("#mo_wpns_help_adv_user_ver_desc").slideToggle(400);
41
  });
42
-
43
- $("#mo_wpns_help_social_login_title").click(function () {
44
- $("#mo_wpns_help_social_login_desc").slideToggle(400);
45
  });
46
-
47
- $("#mo_wpns_help_custom_template_title").click(function () {
48
- $("#mo_wpns_help_custom_template_desc").slideToggle(400);
49
  });
50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  $(".feedback").click(function(){
52
  ajaxCall("dissmissfeedback",".feedback-notice",true);
53
  });
21
 
22
  //Instructions
23
  $("#mo_wpns_help_curl_title").click(function () {
24
+ $("#mo_wpns_help_curl_desc").slideToggle(600);
25
  });
26
+
27
+ $("#mo_wpns_issue_in_scanning_QR").click(function () {
28
+ $("#mo_wpns_issue_in_scanning_QR_solution").slideToggle(600);
29
  });
30
+
31
+ $("#mo_wpns_help_get_back_to_account").click(function () {
32
+ $("#mo_wpns_help_get_back_to_account_solution").slideToggle(600);
33
  });
34
+
35
+ $("#mo_wpns_help_multisite").click(function () {
36
+ $("#mo_wpns_help_multisite_solution").slideToggle(600);
37
  });
38
+
39
+ $("#mo_wpns_help_adv_user_ver_title").click(function () {
40
+ $("#mo_wpns_help_adv_user_ver_desc").slideToggle(600);
41
  });
42
+
43
+ $("#mo_wpns_help_forgot_password").click(function () {
44
+ $("#mo_wpns_help_forgot_password_solution").slideToggle(600);
45
  });
46
+
47
+ $("#mo_wpns_help_MFA_propmted").click(function () {
48
+ $("#mo_wpns_help_MFA_propmted_solution").slideToggle(600);
49
  });
50
 
51
+ $("#mo_wpns_help_redirect_back").click(function () {
52
+ $("#mo_wpns_help_redirect_back_solution").slideToggle(600);
53
+ });
54
+ $("#mo_wpns_help_alternet_login").click(function () {
55
+ $("#mo_wpns_help_alternet_login_solution").slideToggle(600);
56
+ });
57
+ $("#mo_wpns_help_lost_ability").click(function () {
58
+ $("#mo_wpns_help_lost_ability_solution").slideToggle(600);
59
+ });
60
+ $("#mo_wpns_help_translate").click(function () {
61
+ $("#mo_wpns_help_translate_solution").slideToggle(600);
62
+ });
63
+ $("#mo_wpns_help_particular_use_role").click(function () {
64
+ $("#mo_wpns_help_particular_use_role_solution").slideToggle(600);
65
+ });
66
+ $("#mo_wpns_help_enforce_MFA").click(function () {
67
+ $("#mo_wpns_help_enforce_MFA_solution").slideToggle(600);
68
+ });
69
+ $("#mo_wpns_help_reset_MFA").click(function () {
70
+ $("#mo_wpns_help_reset_MFA_solution").slideToggle(600);
71
+ });
72
  $(".feedback").click(function(){
73
  ajaxCall("dissmissfeedback",".feedback-notice",true);
74
  });
{lang → miniorange-2-factor-authentication/lang}/miniorange-2-factor-authentication.pot RENAMED
File without changes
miniorange_2_factor_settings.php → miniorange-2-factor-authentication/miniorange_2_factor_settings.php RENAMED
@@ -3,14 +3,14 @@
3
  * Plugin Name: miniOrange 2 Factor Authentication
4
  * Plugin URI: https://miniorange.com
5
  * Description: This plugin provides various two-factor authentication methods as an additional layer of security after the default wordpress login. We Support Google/Authy/LastPass Authenticator, QR Code, Push Notification, Soft Token and Security Questions(KBA) for 1 User in the free version of the plugin.
6
- * Version: 5.4.7
7
  * Author: miniOrange
8
  * Author URI: https://miniorange.com
9
  * License: GPL2
10
  */
11
  define( 'MO_HOST_NAME', 'https://login.xecurify.com' );
12
- define( 'MO2F_VERSION', '5.4.7' );
13
- define( 'MO2F_TEST_MODE', FALSE );
14
  define( 'MO2F_IS_ONPREM', get_option('is_onprem'));
15
  class Miniorange_twoFactor{
16
 
@@ -259,7 +259,9 @@
259
 
260
  add_option( 'mo_wpns_2fa_with_network_security' , 1);
261
  add_option( 'mo_wpns_2fa_with_network_security_popup_visible', 1);
262
-
 
 
263
 
264
  }
265
 
@@ -288,6 +290,7 @@
288
  wp_enqueue_style( 'mo_wpns_admin_settings_datatable_style' , plugins_url('includes/css/jquery.dataTables.min.css', __FILE__));
289
  wp_enqueue_style( 'mo_wpns_button_settings_style' , plugins_url('includes/css/button_styles.css',__FILE__));
290
  wp_enqueue_style( 'mo_wpns_popup_settings_style' , plugins_url('includes/css/popup.css',__FILE__));
 
291
  }
292
 
293
  }
3
  * Plugin Name: miniOrange 2 Factor Authentication
4
  * Plugin URI: https://miniorange.com
5
  * Description: This plugin provides various two-factor authentication methods as an additional layer of security after the default wordpress login. We Support Google/Authy/LastPass Authenticator, QR Code, Push Notification, Soft Token and Security Questions(KBA) for 1 User in the free version of the plugin.
6
+ * Version: 5.4.8
7
  * Author: miniOrange
8
  * Author URI: https://miniorange.com
9
  * License: GPL2
10
  */
11
  define( 'MO_HOST_NAME', 'https://login.xecurify.com' );
12
+ define( 'MO2F_VERSION', '5.4.8' );
13
+ define( 'MO2F_TEST_MODE', false );
14
  define( 'MO2F_IS_ONPREM', get_option('is_onprem'));
15
  class Miniorange_twoFactor{
16
 
259
 
260
  add_option( 'mo_wpns_2fa_with_network_security' , 1);
261
  add_option( 'mo_wpns_2fa_with_network_security_popup_visible', 1);
262
+ if(get_site_option('mo2f_activated_time') == null){
263
+ add_site_option('mo2f_activated_time', time());
264
+ }
265
 
266
  }
267
 
290
  wp_enqueue_style( 'mo_wpns_admin_settings_datatable_style' , plugins_url('includes/css/jquery.dataTables.min.css', __FILE__));
291
  wp_enqueue_style( 'mo_wpns_button_settings_style' , plugins_url('includes/css/button_styles.css',__FILE__));
292
  wp_enqueue_style( 'mo_wpns_popup_settings_style' , plugins_url('includes/css/popup.css',__FILE__));
293
+
294
  }
295
 
296
  }
readme.txt → miniorange-2-factor-authentication/readme.txt RENAMED
@@ -6,7 +6,7 @@ Donate link: https://miniorange.com/
6
  Requires at least: 3.0.1
7
  Tested up to: 5.4
8
  Requires PHP: 5.3.0
9
- Stable tag: 5.4.7
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
 
@@ -307,6 +307,9 @@ miniOrange authentication service has 15+ authentication methods.One time passco
307
 
308
  == Changelog ==
309
 
 
 
 
310
  = 5.4.7 =
311
  * Google Authenticator-Two Factor Authentication (2FA) : Fixing warnings and adding minor changes in the plans.
312
 
@@ -803,6 +806,9 @@ More descriptive setup messages and UI changes.
803
 
804
  == Upgrade Notice ==
805
 
 
 
 
806
  = 5.4.7 =
807
  * Google Authenticator-Two Factor Authentication (2FA) : Fixing warnings and adding minor changes in the plans.
808
 
6
  Requires at least: 3.0.1
7
  Tested up to: 5.4
8
  Requires PHP: 5.3.0
9
+ Stable tag: 5.4.8
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
 
307
 
308
  == Changelog ==
309
 
310
+ = 5.4.8 =
311
+ * Google Authenticator-Two Factor Authentication (2FA) : Learning Management System support, Microsoft Authenticator and Duo Authenticator support and restrict account sharing add-on.
312
+
313
  = 5.4.7 =
314
  * Google Authenticator-Two Factor Authentication (2FA) : Fixing warnings and adding minor changes in the plans.
315
 
806
 
807
  == Upgrade Notice ==
808
 
809
+ = 5.4.8 =
810
+ * Google Authenticator-Two Factor Authentication (2FA) : Learning Management System support, Microsoft Authenticator and Duo Authenticator support and restrict account sharing add-on.
811
+
812
  = 5.4.7 =
813
  * Google Authenticator-Two Factor Authentication (2FA) : Fixing warnings and adding minor changes in the plans.
814
 
uninstall.php → miniorange-2-factor-authentication/uninstall.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/account/login.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/account/profile.php RENAMED
@@ -4,7 +4,15 @@ echo'
4
  <div class="mo_wpns_divided_layout">
5
  <div class="mo_wpns_setting_layout" >
6
  <div>
7
- <h4>Thank You for registering with miniOrange.</h4>
 
 
 
 
 
 
 
 
8
  <h3>Your Profile</h3>
9
  <table border="1" style="background-color:#FFFFFF; border:1px solid #CCCCCC; border-collapse: collapse; padding:0px 0px 0px 10px; margin:2px; width:85%">
10
  <tr>
4
  <div class="mo_wpns_divided_layout">
5
  <div class="mo_wpns_setting_layout" >
6
  <div>
7
+ <h4>Thank You for registering with miniOrange.
8
+ <div style="float: right;">';
9
+ if (isset( $two_fa )) {
10
+
11
+ echo '<a class="mo_wpns_button mo_wpns_button1" href="'.$two_fa.'">Back</a> ';
12
+ }
13
+
14
+ echo '</div>
15
+ </h4>
16
  <h3>Your Profile</h3>
17
  <table border="1" style="background-color:#FFFFFF; border:1px solid #CCCCCC; border-collapse: collapse; padding:0px 0px 0px 10px; margin:2px; width:85%">
18
  <tr>
{views → miniorange-2-factor-authentication/views}/account/register.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/account/verify.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/advanced-blocking.php RENAMED
@@ -12,7 +12,7 @@
12
 
13
  <div class="mo_wpns_divided_layout">
14
  <div class="mo_wpns_setting_layout">
15
- <h2>Manual IP Blocking</h2>
16
 
17
  <h4 class="mo_wpns_setting_layout_inside">Manually block an IP address here:&emsp;&emsp;
18
  <input type="text" name="ManuallyBlockIP" id="ManuallyBlockIP" required placeholder='IP address'pattern="((^|\.)((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]?\d))){4}" style="width: 35%; height: 41px" />&emsp;&emsp;
@@ -50,7 +50,7 @@ echo "</td><td>".date("M j, Y, g:i:s a",$blockedip->created_timestamp)."</td>
50
  </h4>
51
  </div>
52
  <div class="mo_wpns_setting_layout">
53
- <h2>IP Whitelisting</h2>
54
  <h4 class="mo_wpns_setting_layout_inside">Add new IP address to whitelist:&emsp;&emsp;
55
  <input type="text" name="IPWhitelist" id="IPWhitelist" required placeholder='IP address'pattern="((^|\.)((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]?\d))){4}" style="width: 40%; height: 41px"/>&emsp;&emsp;
56
  <input type="button" name="WhiteListIP" id="WhiteListIP" value="Whitelist IP" class="mo_wpsn_button mo_wpsn_button1" />
@@ -80,7 +80,7 @@ echo' </tbody>
80
 
81
 
82
  <div class="mo_wpns_setting_layout">
83
- <h2>IP LookUp</h2>
84
  <h4 class="mo_wpns_setting_layout_inside">Enter IP address you Want to check:&emsp;&emsp;
85
  <input type="text" name="ipAddresslookup" id="ipAddresslookup" required placeholder='IP address'pattern="((^|\.)((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]?\d))){4}" style="width: 40%; height: 41px"/>&emsp;&emsp;
86
  <input type="button" name="LookupIP" id="LookupIP" value="LookUp IP" class="mo_wpsn_button mo_wpsn_button1" />
@@ -99,7 +99,7 @@ echo '<div id="adv_block" class="tabcontent">';
99
  echo'<div class="mo_wpns_divided_layout">
100
  <div class="mo_wpns_setting_layout">';
101
 
102
- echo' <h2>IP Address Range Blocking</h2>
103
  You can block range of IP addresses here ( Examples: 192.168.0.100 - 192.168.0.190 )
104
  <form name="f" method="post" action="" id="iprangeblockingform" >
105
  <input type="hidden" name="option" value="mo_wpns_block_ip_range" />
@@ -152,7 +152,7 @@ echo '
152
 
153
 
154
  <div class="mo_wpns_setting_layout">
155
- <h3>Browser Blocking</h3>
156
  <!-- <div class="mo_wpns_subheading">This protects your site from robots and other automated scripts.</div> -->
157
  <form id="mo_wpns_enable_user_agent_blocking" method="post" action="">
158
  <input type="hidden" name="option" value="mo_wpns_enable_user_agent_blocking">
12
 
13
  <div class="mo_wpns_divided_layout">
14
  <div class="mo_wpns_setting_layout">
15
+ <h2>Manual IP Blocking <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/IP-blocking-whitelisting-lookup#wordpress-ip-blocking" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#269eb3;float: right;"></span></a></h2>
16
 
17
  <h4 class="mo_wpns_setting_layout_inside">Manually block an IP address here:&emsp;&emsp;
18
  <input type="text" name="ManuallyBlockIP" id="ManuallyBlockIP" required placeholder='IP address'pattern="((^|\.)((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]?\d))){4}" style="width: 35%; height: 41px" />&emsp;&emsp;
50
  </h4>
51
  </div>
52
  <div class="mo_wpns_setting_layout">
53
+ <h2>IP Whitelisting<a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/IP-blocking-whitelisting-lookup#wp-ip-whitelisting" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#269eb3;float: right;"></span></a></h2>
54
  <h4 class="mo_wpns_setting_layout_inside">Add new IP address to whitelist:&emsp;&emsp;
55
  <input type="text" name="IPWhitelist" id="IPWhitelist" required placeholder='IP address'pattern="((^|\.)((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]?\d))){4}" style="width: 40%; height: 41px"/>&emsp;&emsp;
56
  <input type="button" name="WhiteListIP" id="WhiteListIP" value="Whitelist IP" class="mo_wpsn_button mo_wpsn_button1" />
80
 
81
 
82
  <div class="mo_wpns_setting_layout">
83
+ <h2>IP LookUp<a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/IP-blocking-whitelisting-lookup#wp-ip-lookup" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#269eb3;float: right;"></span></a></h2>
84
  <h4 class="mo_wpns_setting_layout_inside">Enter IP address you Want to check:&emsp;&emsp;
85
  <input type="text" name="ipAddresslookup" id="ipAddresslookup" required placeholder='IP address'pattern="((^|\.)((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]?\d))){4}" style="width: 40%; height: 41px"/>&emsp;&emsp;
86
  <input type="button" name="LookupIP" id="LookupIP" value="LookUp IP" class="mo_wpsn_button mo_wpsn_button1" />
99
  echo'<div class="mo_wpns_divided_layout">
100
  <div class="mo_wpns_setting_layout">';
101
 
102
+ echo' <h2>IP Address Range Blocking<a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/range-blocking#ip-range-blocking" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;float: right;"></span></a></h2>
103
  You can block range of IP addresses here ( Examples: 192.168.0.100 - 192.168.0.190 )
104
  <form name="f" method="post" action="" id="iprangeblockingform" >
105
  <input type="hidden" name="option" value="mo_wpns_block_ip_range" />
152
 
153
 
154
  <div class="mo_wpns_setting_layout">
155
+ <h3>Browser Blocking<a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/browser-blocking#wp-browser-blocking" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#269eb3;float: right;"></span></a></h3>
156
  <!-- <div class="mo_wpns_subheading">This protects your site from robots and other automated scripts.</div> -->
157
  <form id="mo_wpns_enable_user_agent_blocking" method="post" action="">
158
  <input type="hidden" name="option" value="mo_wpns_enable_user_agent_blocking">
{views → miniorange-2-factor-authentication/views}/backup/backup.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/backup/backup_created_report.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/backup/backup_schdule.php RENAMED
@@ -5,11 +5,12 @@ add_action('admin_footer','mo_wpns_schedule_backup');
5
 
6
 
7
  <div class="mo_wpns_setting_layout">
8
- <br>
9
  <table class="mo_wpns_settings_table font_class">
10
  <tr>
11
  <th>Scheduled file backup </th>
12
  <th>Scheduled database backup </th>
 
13
  </tr>
14
  <tr><td>&nbsp;</td><td></td></tr>
15
  <tr>
5
 
6
 
7
  <div class="mo_wpns_setting_layout">
8
+
9
  <table class="mo_wpns_settings_table font_class">
10
  <tr>
11
  <th>Scheduled file backup </th>
12
  <th>Scheduled database backup </th>
13
+ <th><a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/backup-restore/#schedule-backup" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;margin-top: 0.5em;float: right;"></span></a></th>
14
  </tr>
15
  <tr><td>&nbsp;</td><td></td></tr>
16
  <tr>
{views → miniorange-2-factor-authentication/views}/backup/backup_setting_view.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/change-password.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/common-elements.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/content-protection.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/dashboard.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/feedback_form.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/ip-blocking.php RENAMED
@@ -3,7 +3,7 @@
3
  echo'<div class="mo_wpns_divided_layout">
4
  <div class="mo_wpns_setting_layout">';
5
 
6
- echo' <h2>IP LookUP</h2>
7
  <form name="f" method="post" action="" id="iplookup">
8
  <input type="hidden" name="option" value="mo_wpns_ip_lookup" />
9
  <table style="width:100%;">
3
  echo'<div class="mo_wpns_divided_layout">
4
  <div class="mo_wpns_setting_layout">';
5
 
6
+ echo' <h2>IP LookUP<a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/IP-blocking-whitelisting-lookup#wp-ip-lookup" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#269eb3;float: right;"></span></a></h2>
7
  <form name="f" method="post" action="" id="iplookup">
8
  <input type="hidden" name="option" value="mo_wpns_ip_lookup" />
9
  <table style="width:100%;">
{views → miniorange-2-factor-authentication/views}/licensing.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/login-security.php RENAMED
@@ -6,7 +6,7 @@ echo '
6
  <div class="mo_wpns_setting_layout">';
7
 
8
 
9
- echo ' <h3>Brute Force Protection ( Login Protection )</h3>
10
  <div class="mo_wpns_subheading">This protects your site from attacks which tries to gain access / login to a site with random usernames and passwords.</div>
11
 
12
  <input id="mo_bf_button" type="checkbox" name="enable_brute_force_protection" '.$brute_force_enabled.'> Enable Brute force protection
@@ -54,7 +54,7 @@ echo' <form id="mo_wpns_enable_brute_force_form" method="post" action="">
54
  echo'
55
  </div>
56
  <div class="mo_wpns_setting_layout">
57
- <h3>Google reCAPTCHA</h3>
58
  <div class="mo_wpns_subheading">Google reCAPTCHA protects your website from spam and abuse. reCAPTCHA uses an advanced risk analysis engine and adaptive CAPTCHAs to keep automated software from engaging in abusive activities on your site. It does this while letting your valid users pass through with ease.</div>
59
  <form id="mo_wpns_activate_recaptcha" method="post" action="">
60
  <input type="hidden" name="option" value="mo_wpns_activate_recaptcha">
@@ -92,7 +92,7 @@ echo '<br>
92
  </div>
93
 
94
  <div class="mo_wpns_setting_layout">
95
- <h3>Enforce Strong Passwords </h3>
96
  <div class="mo_wpns_subheading">Checks the password strength of admin and other users to enhance login security</div>
97
 
98
  <form id="mo_wpns_enable_brute_force_form" method="post" action="">
6
  <div class="mo_wpns_setting_layout">';
7
 
8
 
9
+ echo ' <h3>Brute Force Protection ( Login Protection )<a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/brute-force#Brute-Force-protection" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;float: right;"></span></a></h3>
10
  <div class="mo_wpns_subheading">This protects your site from attacks which tries to gain access / login to a site with random usernames and passwords.</div>
11
 
12
  <input id="mo_bf_button" type="checkbox" name="enable_brute_force_protection" '.$brute_force_enabled.'> Enable Brute force protection
54
  echo'
55
  </div>
56
  <div class="mo_wpns_setting_layout">
57
+ <h3>Google reCAPTCHA<a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/brute-force#Google-recaptcha" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;float: right;"></span></a></h3>
58
  <div class="mo_wpns_subheading">Google reCAPTCHA protects your website from spam and abuse. reCAPTCHA uses an advanced risk analysis engine and adaptive CAPTCHAs to keep automated software from engaging in abusive activities on your site. It does this while letting your valid users pass through with ease.</div>
59
  <form id="mo_wpns_activate_recaptcha" method="post" action="">
60
  <input type="hidden" name="option" value="mo_wpns_activate_recaptcha">
92
  </div>
93
 
94
  <div class="mo_wpns_setting_layout">
95
+ <h3>Enforce Strong Passwords <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/brute-force#Enforce-strong-password" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;float: right;"></span></a></h3>
96
  <div class="mo_wpns_subheading">Checks the password strength of admin and other users to enhance login security</div>
97
 
98
  <form id="mo_wpns_enable_brute_force_form" method="post" action="">
{views → miniorange-2-factor-authentication/views}/login_spam.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/malware_scanner/malware_scan.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/malware_scanner/scan_report_view.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/malware_scanner/scan_settings_view.php RENAMED
@@ -1,7 +1,8 @@
1
 
2
  <div class="mo_wpns_setting_layout">
3
  <div class="mo_wpns_subheading"></div>
4
- <br>
 
5
  <form id="" method="post" action="">
6
  <input type="hidden" name="option" value="mo_wpns_scan_configuration">
7
  <table class="mo_wpns_settings_table">
@@ -12,6 +13,7 @@
12
  <input type="checkbox" name="mo_wpns_scan_themes" id="mo_wpns_scan_themes" value="1" <?php checked($mo_wpns_scan_themes == 1);?>> WordPress Themes folder<br>
13
  <input type="checkbox" name="mo_wpns_scan_wp_files" id="mo_wpns_scan_wp_files" value="1" <?php checked($mo_wpns_core_scan == 1);?>> WordPress files
14
  </td>
 
15
  </tr>
16
  <tr><td>&nbsp;</td><td></td></tr>
17
  <tr>
1
 
2
  <div class="mo_wpns_setting_layout">
3
  <div class="mo_wpns_subheading"></div>
4
+ <h3>Custom Scan Settings<span style="text-align: right;"><a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/scanner#custom-scan" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;float: right;"></span></a></span></h3>
5
+ <hr>
6
  <form id="" method="post" action="">
7
  <input type="hidden" name="option" value="mo_wpns_scan_configuration">
8
  <table class="mo_wpns_settings_table">
13
  <input type="checkbox" name="mo_wpns_scan_themes" id="mo_wpns_scan_themes" value="1" <?php checked($mo_wpns_scan_themes == 1);?>> WordPress Themes folder<br>
14
  <input type="checkbox" name="mo_wpns_scan_wp_files" id="mo_wpns_scan_wp_files" value="1" <?php checked($mo_wpns_core_scan == 1);?>> WordPress files
15
  </td>
16
+ <!-- <td> <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/scanner#custom-scan" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;float: right;margin-top: -1.5em;"></span></a></td> -->
17
  </tr>
18
  <tr><td>&nbsp;</td><td></td></tr>
19
  <tr>
{views → miniorange-2-factor-authentication/views}/malware_scanner/scan_summary_view.php RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
  add_action('admin_footer','mo_wpns_start_scan');
3
  ?>
4
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
5
 
6
  <div class="mo_wpns_dashboard_layout">
7
  <div class="malwaresummarydiv">
@@ -10,7 +10,7 @@ add_action('admin_footer','mo_wpns_start_scan');
10
  </div>
11
  <div class="mo_wpns_setting_layout" id="scan_status_table">
12
  <div>
13
- <p class="hmdiv">Scan Modes</p>
14
  </div>
15
  <div style="float: left;">
16
  <p id="scanstatus"></p>
1
  <?php
2
  add_action('admin_footer','mo_wpns_start_scan');
3
  ?>
4
+ <!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> -->
5
 
6
  <div class="mo_wpns_dashboard_layout">
7
  <div class="malwaresummarydiv">
10
  </div>
11
  <div class="mo_wpns_setting_layout" id="scan_status_table">
12
  <div>
13
+ <p class="hmdiv">Scan Modes<a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/scanner#wp-malware-scanner" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;float: right;"></span></a></p>
14
  </div>
15
  <div style="float: left;">
16
  <p id="scanstatus"></p>
{views → miniorange-2-factor-authentication/views}/navbar.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/network_security_features.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/notification-settings.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/rate-limiting.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/registration-security.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/reports.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/request_demo.php RENAMED
@@ -1,6 +1,12 @@
1
  <div class="mo_wpns_divided_layout">
2
  <div class="mo_wpns_setting_layout">
3
- <h3> Demo Request Form : </h3>
 
 
 
 
 
 
4
  <form method="post">
5
  <input type="hidden" name="option" value="mo_2FA_demo_request_form" />
6
  <input type="hidden" name="nonce" value="<?php echo wp_create_nonce('mo2f-Request-demo')?>">
1
  <div class="mo_wpns_divided_layout">
2
  <div class="mo_wpns_setting_layout">
3
+ <h3> Demo Request Form : <div style="float: right;">
4
+ <?php
5
+ echo '<a class="mo_wpns_button mo_wpns_button1" href="'.$two_fa.'">Back</a>';
6
+
7
+ ?>
8
+ </div></h3>
9
+
10
  <form method="post">
11
  <input type="hidden" name="option" value="mo_2FA_demo_request_form" />
12
  <input type="hidden" name="nonce" value="<?php echo wp_create_nonce('mo2f-Request-demo')?>">
{views → miniorange-2-factor-authentication/views}/support.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/test/test_twofa_email_verification.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/test/test_twofa_google_authy_authenticator.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/test/test_twofa_kba_questions.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/test/test_twofa_miniorange_push_notification.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/test/test_twofa_miniorange_qrcode_authentication.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/test/test_twofa_miniorange_soft_token.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/test/test_twofa_otp_over_sms.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/tour-model.php RENAMED
File without changes
miniorange-2-factor-authentication/views/troubleshooting.php ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ echo'<div class="mo_wpns_divided_layout">
4
+ <div class="mo_wpns_setting_layout">
5
+ <h3>
6
+ Frequenty Asked Questions
7
+ <div style="float: right;">
8
+ <a class="mo_wpns_button mo_wpns_button1" href="'.$two_fa.'">Back</a>
9
+ </div>
10
+ </h3><br><hr>
11
+ <table class="mo_wpns_help">
12
+ <tbody><tr>
13
+ <td class="mo_wpns_help_cell">
14
+ <div id="mo_wpns_help_curl_title" class="mo_wpns_title_panel">
15
+ <div class="mo_wpns_help_title">How to enable PHP cURL extension? (Pre-requisite)</div>
16
+ </div>
17
+ <span hidden="" id="mo_wpns_help_curl_desc" class="mo_wpns_help_desc" style="display: none;">
18
+ <ol>
19
+ <li>Open php.ini file located under the PHP installation folder.</li>
20
+ <li>Search for extension=php_curl.dll.</li>
21
+ <li>Uncomment it by removing the semi-colon(;) in front of it.
22
+ Restart the Apache Server.</li></ol>
23
+ For any further queries, please <a href="mailto:2fasupport@xecurify.com" target="blank">contact us</a>.
24
+ </span>
25
+ </td>
26
+ </tr><tr>
27
+ <td class="mo_wpns_help_cell">
28
+ <div id="mo_wpns_issue_in_scanning_QR" class="mo_wpns_title_panel">
29
+ <div class="mo_wpns_help_title">I am facing issue in scanning QR code, what is the reason behind the error?</div>
30
+ </div>
31
+ <span hidden="" id="mo_wpns_issue_in_scanning_QR_solution" class="mo_wpns_help_desc" style="display: none;">
32
+ <ol><li>Make sure that the bar-code you are scanning and the bar-code scanning app that you are using is suitable.</li>
33
+ <li>If you are configuring the Google Authenticator method, you will need the Google Authenticator App.</li>
34
+ <li>If you are configuring miniOrange authentication methods that are Push Notifications, Qr Code Authentication, or Soft Token you will need the miniOrange app and accordingly.</li><ul>
35
+ </span>
36
+ </td>
37
+ </tr>
38
+ <tr>
39
+ <td class="mo_wpns_help_cell">
40
+ <div id="mo_wpns_help_particular_use_role" class="mo_wpns_title_panel">
41
+ <div class="mo_wpns_help_title">I want to enable 2-factor for particular user roles in WordPress, how do I do that?</div>
42
+ </div>
43
+ <div hidden="" id="mo_wpns_help_particular_use_role_solution" class="mo_wpns_help_desc" style="display: none;">
44
+ We are providing 2-factor authentication for 3 admin users in the free version if you want to add it for more user roles, please upgrade to the paid version.</br> You can check our pricing from here: <a href="https://plugins.miniorange.com/2-factor-authentication-for-wordpress">https://plugins.miniorange.com/2-factor-authentication-for-wordpress</a>.</br>
45
+ OR </br>If you have paid version of the plugin, your solution is right here: <a href="https://docs.miniorange.com/documentation/enable-two-factor-based-roles" target="blank">click here</a>.</div>
46
+ </td>
47
+ </tr>
48
+ <tr>
49
+ <td class="mo_wpns_help_cell">
50
+ <div id="mo_wpns_help_enforce_MFA" class="mo_wpns_title_panel">
51
+ <div class="mo_wpns_help_title">I want to Enforce my users to configure the Two-factor authentication method how I do that?</div>
52
+ </div>
53
+ <div hidden="" id="mo_wpns_help_enforce_MFA_solution" class="mo_wpns_help_desc" style="display: none;">
54
+ This feature is supported in paid plugin. Please checkout out pricing from here: <a href="https://plugins.miniorange.com/2-factor-authentication-for-wordpress" target="blank">https://plugins.miniorange.com/2-factor-authentication-for-wordpress</a>
55
+ </br>OR</br>If you have paid version of the plugin, your solution is right here: <a href="https://docs.miniorange.com/documentation/enforce-2fa-users" target="blank">click here</a>.
56
+ </div>
57
+ </td>
58
+ </tr>
59
+ <tr>
60
+ <td class="mo_wpns_help_cell">
61
+ <div id="mo_wpns_help_reset_MFA" class="mo_wpns_title_panel">
62
+ <div class="mo_wpns_help_title">I want to reset Two Factor for my users, how I do that?</div>
63
+ </div>
64
+ <div hidden="" id="mo_wpns_help_reset_MFA_solution" class="mo_wpns_help_desc" style="display: none;">
65
+ <ol><li>Go to the WordPress <b>Users</b> tab.</li>
66
+ <li>Hover over the Username of which you want to reset two-factor. You will see �Reset 2 Factor� option, Click on that.</li>
67
+ <li>Now, whenever your user logs in again to their account user will able to reconfigure Two Factor.</li>
68
+ </div>
69
+ </td>
70
+ </tr>
71
+ <tr>
72
+ <td class="mo_wpns_help_cell">
73
+ <div id="mo_wpns_help_get_back_to_account" class="mo_wpns_title_panel">
74
+ <div class="mo_wpns_help_title">How do I gain access to my website if I get locked out?</div>
75
+ </div>
76
+ <div hidden="" id="mo_wpns_help_get_back_to_account_solution" class="mo_wpns_help_desc" style="display: none;">
77
+ We provides many alternet solutions to get back to account, <a href="https://faq.miniorange.com/knowledgebase/how-to-gain-access-to-my-website-if-i-get-locked-out/" tager="blank">click here</a>.
78
+ </div>
79
+ </td>
80
+ </tr>
81
+ <tr>
82
+ <td class="mo_wpns_help_cell">
83
+ <div id="mo_wpns_help_multisite" class="mo_wpns_title_panel">
84
+ <div class="mo_wpns_help_title">Does the miniOrange 2FA plugin support multi-site support?</div>
85
+ </div>
86
+ <div hidden="" id="mo_wpns_help_multisite_solution" class="mo_wpns_help_desc" style="display: none;">
87
+ The miniOrange Two-factor free plugin does not provide Multisite support. Please upgrade to the premium plan for the multi-site support.
88
+
89
+
90
+ </div>
91
+ </td>
92
+ </tr>
93
+ <tr>
94
+ <td class="mo_wpns_help_cell">
95
+ <div id="mo_wpns_help_forgot_password" class="mo_wpns_title_panel">
96
+ <div class="mo_wpns_help_title">I forgot the password of my miniOrange account. How can I reset it?</div>
97
+ </div>
98
+ <div hidden="" id="mo_wpns_help_forgot_password_solution" class="mo_wpns_help_desc" style="display: none;">
99
+ To reset the password of your miniOrange account, please <a href="https://login.xecurify.com/moas/idp/resetpassword" target="blank">click here</a> and reset your password using the email address registered with miniOrange.
100
+
101
+
102
+ </div>
103
+ </td>
104
+ </tr>
105
+ <tr>
106
+ <td class="mo_wpns_help_cell">
107
+ <div id="mo_wpns_help_MFA_propmted" class="mo_wpns_title_panel">
108
+ <div class="mo_wpns_help_title">My Users are not being prompted for 2-factor during login. Why?</div>
109
+ </div>
110
+ <div hidden="" id="mo_wpns_help_MFA_propmted_solution" class="mo_wpns_help_desc" style="display: none;">
111
+ The miniOrange Two-Factor free plugin provides the 2-factor for three users (Administrator) forever. To enable 2FA for more users, please upgrade to the Premium plan. for more details <a href="https://faq.miniorange.com/knowledgebase/users-are-not-prompted-for-2-factor-during-login/" target="blank">click here</a>.
112
+
113
+ </div>
114
+ </td>
115
+ </tr><tr>
116
+ <td class="mo_wpns_help_cell">
117
+ <div id="mo_wpns_help_redirect_back" class="mo_wpns_title_panel">
118
+ <div class="mo_wpns_help_title">When I enter my authentication code and click on Validate, I got redirected back to the login page, Why is this happening?</div>
119
+ </div>
120
+ <div hidden="" id="mo_wpns_help_redirect_back_solution" class="mo_wpns_help_desc" style="display: none;">
121
+ It might be the case that the plugin is not able to write the PHP session info (into the /var/lib/php/sessions directory ) because of permission issues, and hence it is failing at the authentication step. Please update to the latest plugin version (5.0.0) which has the bug fix for this.
122
+ </div>
123
+ </td>
124
+ </tr>
125
+ <tr>
126
+ <td class="mo_wpns_help_cell">
127
+ <div id="mo_wpns_help_alternet_login" class="mo_wpns_title_panel">
128
+ <div class="mo_wpns_help_title">I had setup QR Code Authentication/Push Notification as my 2-factor method. My phone has no internet connectivity, how can I login?</div>
129
+ </div>
130
+ <div hidden="" id="mo_wpns_help_alternet_login_solution" class="mo_wpns_help_desc" style="display: none;">
131
+ You can login using our alternate login method. Please <a href="https://faq.miniorange.com/knowledgebase/login-issue-for-two-factor/" target="blank">Click here</a>.
132
+ </div>
133
+ </td>
134
+ </tr>
135
+ <tr>
136
+ <td class="mo_wpns_help_cell">
137
+ <div id="mo_wpns_help_lost_ability" class="mo_wpns_title_panel">
138
+ <div class="mo_wpns_help_title">My phone is lost, stolen or discharged. How can I login?</div>
139
+ </div>
140
+ <div hidden="" id="mo_wpns_help_lost_ability_solution" class="mo_wpns_help_desc" style="display: none;">
141
+ To login and reconfigure authentication method <a href="" target="blank">click here</a>.
142
+
143
+ </div>
144
+ </td>
145
+ </tr>
146
+ <tr>
147
+ <td class="mo_wpns_help_cell">
148
+ <div id="mo_wpns_help_translate" class="mo_wpns_title_panel">
149
+ <div class="mo_wpns_help_title">How do I translate the plugin in a language of my choice?</div>
150
+ </div>
151
+ <div hidden="" id="mo_wpns_help_translate_solution" class="mo_wpns_help_desc" style="display: none;">
152
+ Please follow the below steps:
153
+ <ol><li>Download & open POEDIT software.</li>
154
+ <li>Click on Create New Translation.</li>
155
+ <li>In the plugin, you have a lang folder. You can find the .pot file in it. Import the file.</li>
156
+ <li>It will ask you for the translation language. Select it as Germany.</li>
157
+ <li>In the top navigation bar, Click on Update <i class="fa fa-fw fa-arrow-right"></i> Save.
158
+ Do the translations and Save them.</li>
159
+ <li>Select the WordPress site language as the same you selected in the software. ( Germany )</li></ol>
160
+
161
+ </div>
162
+ </td>
163
+ </tr>
164
+ </tbody></table>
165
+ <h4>If you have any other queries, Contact us at <a href="mailto:2fasupport@xecurify.com" target="blank">2fasupport@xecurify.com</a></h4>
166
+ </div>
167
+ </div>';
{views → miniorange-2-factor-authentication/views}/twofa/setup/setup_authy_authenticator.php RENAMED
@@ -8,7 +8,9 @@ function mo2f_configure_authy_authenticator( $user ) {
8
  <table>
9
  <tr>
10
  <td class="mo2f_authy_step1">
11
- <h3><?php echo mo2f_lt( 'Step-1: Configure Authy Authenticator App.' ); ?></h3>
 
 
12
  <hr/>
13
  <form name="f" method="post" id="mo2f_configure_google_authy_form1" action="">
14
  <input type="submit" name="mo2f_authy_configure" class="mo_wpns_button mo_wpns_button1"
8
  <table>
9
  <tr>
10
  <td class="mo2f_authy_step1">
11
+ <h3><?php echo mo2f_lt( 'Step-1: Configure Authy Authenticator App.' ); ?>
12
+
13
+ </h3>
14
  <hr/>
15
  <form name="f" method="post" id="mo2f_configure_google_authy_form1" action="">
16
  <input type="submit" name="mo2f_authy_configure" class="mo_wpns_button mo_wpns_button1"
{views → miniorange-2-factor-authentication/views}/twofa/setup/setup_google_authenticator.php RENAMED
@@ -11,7 +11,11 @@ function mo2f_configure_google_authenticator( $user ) {
11
  <table>
12
  <tr>
13
  <td class="mo2f_google_authy_step2">
14
- <?php echo '<' . $h_size . '>' . mo2f_lt( 'Step-1: Set up Google/Authy/LastPass Authenticator' ) . '</' . $h_size . '>'; ?>
 
 
 
 
15
 
16
  <hr>
17
 
@@ -19,9 +23,12 @@ function mo2f_configure_google_authenticator( $user ) {
19
  <label for="authenticator_type"><b>1. Choose an Authenticator app:</b></label>
20
 
21
  <select id="authenticator_type">
22
- <option value="google_authenticator">Google Authenticator</option>
 
23
  <option value="authy_authenticator">Authy Authenticator</option>
24
  <option value="last_pass_auth">LastPass Authenticator</option>
 
 
25
  </select>
26
  </div>
27
 
@@ -148,28 +155,33 @@ function mo2f_configure_google_authenticator( $user ) {
148
  jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
149
  'Get the App - <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
150
  '<a href="http://itunes.apple.com/us/app/google-authenticator/id388497605" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
151
- // jQuery('#step_number').html('3. ');
152
- // jQuery("input[type=radio][name=authy]").prop("checked", false);
153
- // jQuery("input[type=radio][name=lastpass]").prop("checked", false);
154
  jQuery('#mo2f_change_app_name').show();
155
  jQuery('#links_to_apps').show();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  }else if(auth_type == 'authy_authenticator'){
157
  jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
158
  'Get the App - <a href="https://play.google.com/store/apps/details?id=com.authy.authy" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
159
  '<a href="https://itunes.apple.com/in/app/authy/id494168017" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
160
- // jQuery("input[type=radio][name=google]").prop("checked", false);
161
- // jQuery("input[type=radio][name=lastpass]").prop("checked", false);
162
- // jQuery('#mo2f_change_app_name').hide();
163
- jQuery('#step_number').html('2. ');
164
  jQuery('#links_to_apps').show();
165
  }else{
166
  jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
167
  'Get the App - <a href="https://play.google.com/store/apps/details?id=com.lastpass.authenticator" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
168
  '<a href="https://itunes.apple.com/in/app/lastpass-authenticator/id1079110004" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
169
- // jQuery("input[type=radio][name=authy]").prop("checked", false);
170
- // jQuery("input[type=radio][name=google]").prop("checked", false);
171
  jQuery('#mo2f_change_app_name').show();
172
- jQuery('#step_number').html('3. ');
173
  jQuery('#links_to_apps').show();
174
  }
175
  });
11
  <table>
12
  <tr>
13
  <td class="mo2f_google_authy_step2">
14
+ <?php echo '<' . $h_size . '>' . mo2f_lt( 'Step-1: Set up Google/Authy/LastPass Authenticator' ) . '<span style="float:right">
15
+ <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/google-authenticator" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:26px;color:#269eb3;float: right;"></span></a>
16
+
17
+ <a href="https://www.youtube.com/watch?v=vVGXjedIaGs" target="_blank"><span class="dashicons dashicons-video-alt3" style="font-size:30px;color:red;float: right; margin-right: 16px;margin-top: -3px;"></span></a>
18
+ </span></' . $h_size . '>'; ?>
19
 
20
  <hr>
21
 
23
  <label for="authenticator_type"><b>1. Choose an Authenticator app:</b></label>
24
 
25
  <select id="authenticator_type">
26
+ <option value="google_authenticator">Google Authenticator</option>
27
+ <option value="msft_authenticator">Microsoft Authenticator</option>
28
  <option value="authy_authenticator">Authy Authenticator</option>
29
  <option value="last_pass_auth">LastPass Authenticator</option>
30
+ <option value="free_otp_auth">FreeOTP Authenticator</option>
31
+ <option value="duo_auth">Duo Mobile Authenticator</option>
32
  </select>
33
  </div>
34
 
155
  jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
156
  'Get the App - <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
157
  '<a href="http://itunes.apple.com/us/app/google-authenticator/id388497605" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
 
 
 
158
  jQuery('#mo2f_change_app_name').show();
159
  jQuery('#links_to_apps').show();
160
+ }else if(auth_type == 'msft_authenticator'){
161
+ jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
162
+ 'Get the App - <a href="https://play.google.com/store/apps/details?id=com.azure.authenticator" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
163
+ '<a href="https://apps.apple.com/us/app/microsoft-authenticator/id983156458" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
164
+ jQuery('#links_to_apps').show();
165
+ }else if(auth_type == 'free_otp_auth'){
166
+ jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
167
+ 'Get the App - <a href="https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
168
+ '<a href="https://apps.apple.com/us/app/freeotp-authenticator/id872559395" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
169
+ jQuery('#links_to_apps').show();
170
+ }else if(auth_type == 'duo_auth'){
171
+ jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
172
+ 'Get the App - <a href="https://play.google.com/store/apps/details?id=com.duosecurity.duomobile" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
173
+ '<a href="https://apps.apple.com/in/app/duo-mobile/id422663827" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
174
+ jQuery('#links_to_apps').show();
175
  }else if(auth_type == 'authy_authenticator'){
176
  jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
177
  'Get the App - <a href="https://play.google.com/store/apps/details?id=com.authy.authy" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
178
  '<a href="https://itunes.apple.com/in/app/authy/id494168017" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
 
 
 
 
179
  jQuery('#links_to_apps').show();
180
  }else{
181
  jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
182
  'Get the App - <a href="https://play.google.com/store/apps/details?id=com.lastpass.authenticator" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
183
  '<a href="https://itunes.apple.com/in/app/lastpass-authenticator/id1079110004" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
 
 
184
  jQuery('#mo2f_change_app_name').show();
 
185
  jQuery('#links_to_apps').show();
186
  }
187
  });
{views → miniorange-2-factor-authentication/views}/twofa/setup/setup_google_authenticator_onpremise.php RENAMED
@@ -9,7 +9,11 @@ function mo2f_configure_google_authenticator_onprem( $secret,$url,$otpcode ) {
9
  <table>
10
  <tr>
11
  <td class="mo2f_google_authy_step2">
12
- <?php echo '<' . $h_size . '>' . mo2f_lt( 'Step-1: Set up Google/Authy/LastPass Authenticator' ) . '</' . $h_size . '>'; ?>
 
 
 
 
13
 
14
  <hr>
15
 
@@ -19,8 +23,11 @@ function mo2f_configure_google_authenticator_onprem( $secret,$url,$otpcode ) {
19
 
20
  <select id="authenticator_type">
21
  <option value="google_authenticator">Google Authenticator</option>
 
22
  <option value="authy_authenticator">Authy Authenticator</option>
23
  <option value="last_pass_auth">LastPass Authenticator</option>
 
 
24
  </select>
25
  </div>
26
 
@@ -154,11 +161,11 @@ $q = $_SERVER['REQUEST_TIME']*1000;
154
 
155
  jQuery(this).scrollTop(0);
156
  // if(jQuery('input[type=radio][name=google]').is(':checked')){
157
- jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
158
- 'Get the App - <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
159
- '<a href="http://itunes.apple.com/us/app/google-authenticator/id388497605" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
160
- jQuery('#mo2f_change_app_name').show();
161
- jQuery('#links_to_apps').show();
162
  // }
163
  });
164
 
@@ -166,9 +173,9 @@ $q = $_SERVER['REQUEST_TIME']*1000;
166
  jQuery('#mo2f_configure_google_authy_form1').submit();
167
  });
168
 
169
- jQuery('#links_to_apps').show();
170
- jQuery('#mo2f_change_app_name').hide();
171
- jQuery('#step_number').html('2. ');
172
 
173
 
174
  jQuery('#authenticator_type').change(function(){
@@ -177,69 +184,37 @@ $q = $_SERVER['REQUEST_TIME']*1000;
177
  jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
178
  'Get the App - <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
179
  '<a href="http://itunes.apple.com/us/app/google-authenticator/id388497605" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
180
- // jQuery('#step_number').html('3. ');
181
- // jQuery("input[type=radio][name=authy]").prop("checked", false);
182
- // jQuery("input[type=radio][name=lastpass]").prop("checked", false);
183
  jQuery('#mo2f_change_app_name').show();
184
  jQuery('#links_to_apps').show();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
  }else if(auth_type == 'authy_authenticator'){
186
  jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
187
  'Get the App - <a href="https://play.google.com/store/apps/details?id=com.authy.authy" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
188
  '<a href="https://itunes.apple.com/in/app/authy/id494168017" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
189
- // jQuery("input[type=radio][name=google]").prop("checked", false);
190
- // jQuery("input[type=radio][name=lastpass]").prop("checked", false);
191
- // jQuery('#mo2f_change_app_name').hide();
192
- jQuery('#step_number').html('2. ');
193
  jQuery('#links_to_apps').show();
194
  }else{
195
  jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
196
  'Get the App - <a href="https://play.google.com/store/apps/details?id=com.lastpass.authenticator" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
197
  '<a href="https://itunes.apple.com/in/app/lastpass-authenticator/id1079110004" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
198
- // jQuery("input[type=radio][name=authy]").prop("checked", false);
199
- // jQuery("input[type=radio][name=google]").prop("checked", false);
200
  jQuery('#mo2f_change_app_name').show();
201
- jQuery('#step_number').html('3. ');
202
  jQuery('#links_to_apps').show();
203
  }
204
  });
205
 
206
-
207
-
208
-
209
-
210
-
211
- // jQuery('input[type=radio][name=google]').click(function(){
212
- // jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
213
- // 'Get the Google Authenticator App - <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2" target="_blank"><b><?php //echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
214
- // '<a href="http://itunes.apple.com/us/app/google-authenticator/id388497605" target="_blank"><b><?php //echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
215
- // jQuery('#step_number').html('3. ');
216
- // jQuery("input[type=radio][name=authy]").prop("checked", false);
217
- // jQuery("input[type=radio][name=lastpass]").prop("checked", false);
218
- // jQuery('#mo2f_change_app_name').show();
219
- // jQuery('#links_to_apps').show();
220
- // });
221
-
222
- // jQuery('input[type=radio][name=authy]').click(function(){
223
- // jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
224
- // 'Get the Authy Authenticator App - <a href="https://play.google.com/store/apps/details?id=com.authy.authy" target="_blank"><b><?php //echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
225
- // '<a href="https://itunes.apple.com/in/app/authy/id494168017" target="_blank"><b><?php// echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
226
- // jQuery("input[type=radio][name=google]").prop("checked", false);
227
- // jQuery("input[type=radio][name=lastpass]").prop("checked", false);
228
- // jQuery('#mo2f_change_app_name').hide();
229
- // jQuery('#step_number').html('2. ');
230
- // jQuery('#links_to_apps').show();
231
- // });
232
-
233
- // jQuery('input[type=radio][name=lastpass]').click(function(){
234
- // jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
235
- // 'Get the LastPass Authenticator App - <a href="https://play.google.com/store/apps/details?id=com.lastpass.authenticator" target="_blank"><b><?php //echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
236
- // '<a href="https://itunes.apple.com/in/app/lastpass-authenticator/id1079110004" target="_blank"><b><?php //echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
237
- // jQuery("input[type=radio][name=authy]").prop("checked", false);
238
- // jQuery("input[type=radio][name=google]").prop("checked", false);
239
- // jQuery('#mo2f_change_app_name').show();
240
- // jQuery('#step_number').html('3. ');
241
- // jQuery('#links_to_apps').show();
242
- // });
243
  </script>
244
  <?php
245
  }
9
  <table>
10
  <tr>
11
  <td class="mo2f_google_authy_step2">
12
+ <?php echo '<' . $h_size . '>' . mo2f_lt( 'Step-1: Set up Google/Authy/LastPass Authenticator' ) . '<span style="float:right">
13
+ <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/google-authenticator" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:26px;color:#269eb3;float: right;"></span></a>
14
+
15
+ <a href="https://www.youtube.com/watch?v=vVGXjedIaGs" target="_blank"><span class="dashicons dashicons-video-alt3" style="font-size:30px;color:red;float: right; margin-right: 16px;margin-top: -3px;"></span></a>
16
+ </span></' . $h_size . '>'; ?>
17
 
18
  <hr>
19
 
23
 
24
  <select id="authenticator_type">
25
  <option value="google_authenticator">Google Authenticator</option>
26
+ <option value="msft_authenticator">Microsoft Authenticator</option>
27
  <option value="authy_authenticator">Authy Authenticator</option>
28
  <option value="last_pass_auth">LastPass Authenticator</option>
29
+ <option value="free_otp_auth">FreeOTP Authenticator</option>
30
+ <option value="duo_auth">Duo Mobile Authenticator</option>
31
  </select>
32
  </div>
33
 
161
 
162
  jQuery(this).scrollTop(0);
163
  // if(jQuery('input[type=radio][name=google]').is(':checked')){
164
+ jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
165
+ 'Get the App - <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
166
+ '<a href="http://itunes.apple.com/us/app/google-authenticator/id388497605" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
167
+ jQuery('#mo2f_change_app_name').show();
168
+ jQuery('#links_to_apps').show();
169
  // }
170
  });
171
 
173
  jQuery('#mo2f_configure_google_authy_form1').submit();
174
  });
175
 
176
+ // jQuery('#links_to_apps').show();
177
+ // jQuery('#mo2f_change_app_name').hide();
178
+ // jQuery('#step_number').html('2. ');
179
 
180
 
181
  jQuery('#authenticator_type').change(function(){
184
  jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
185
  'Get the App - <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
186
  '<a href="http://itunes.apple.com/us/app/google-authenticator/id388497605" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
 
 
 
187
  jQuery('#mo2f_change_app_name').show();
188
  jQuery('#links_to_apps').show();
189
+ }else if(auth_type == 'msft_authenticator'){
190
+ jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
191
+ 'Get the App - <a href="https://play.google.com/store/apps/details?id=com.azure.authenticator" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
192
+ '<a href="https://apps.apple.com/us/app/microsoft-authenticator/id983156458" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
193
+ jQuery('#links_to_apps').show();
194
+ }else if(auth_type == 'free_otp_auth'){
195
+ jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
196
+ 'Get the App - <a href="https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
197
+ '<a href="https://apps.apple.com/us/app/freeotp-authenticator/id872559395" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
198
+ jQuery('#links_to_apps').show();
199
+ }else if(auth_type == 'duo_auth'){
200
+ jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
201
+ 'Get the App - <a href="https://play.google.com/store/apps/details?id=com.duosecurity.duomobile" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
202
+ '<a href="https://apps.apple.com/in/app/duo-mobile/id422663827" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
203
+ jQuery('#links_to_apps').show();
204
  }else if(auth_type == 'authy_authenticator'){
205
  jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
206
  'Get the App - <a href="https://play.google.com/store/apps/details?id=com.authy.authy" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
207
  '<a href="https://itunes.apple.com/in/app/authy/id494168017" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
 
 
 
 
208
  jQuery('#links_to_apps').show();
209
  }else{
210
  jQuery('#links_to_apps').html('<p style="background-color:#e8e4e4;padding:5px;margin-left:40px;width:65%">' +
211
  'Get the App - <a href="https://play.google.com/store/apps/details?id=com.lastpass.authenticator" target="_blank"><b><?php echo mo2f_lt( "Android Play Store" ); ?></b></a>, &nbsp;' +
212
  '<a href="https://itunes.apple.com/in/app/lastpass-authenticator/id1079110004" target="_blank"><b><?php echo mo2f_lt( "iOS App Store" ); ?>.</b>&nbsp;</p>');
 
 
213
  jQuery('#mo2f_change_app_name').show();
 
214
  jQuery('#links_to_apps').show();
215
  }
216
  });
217
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
218
  </script>
219
  <?php
220
  }
{views → miniorange-2-factor-authentication/views}/twofa/setup/setup_kba_questions.php RENAMED
@@ -156,7 +156,9 @@ function mo2f_configure_for_mobile_suppport_kba( $user ) {
156
 
157
  ?>
158
 
159
- <h3><?php echo mo2f_lt( 'Configure Second Factor - KBA (Security Questions)' ); ?></h3>
 
 
160
  <hr/>
161
  <form name="f" method="post" action="" id="mo2f_kba_setup_form">
162
  <?php mo2f_configure_kba_questions(); ?>
156
 
157
  ?>
158
 
159
+ <h3><?php echo mo2f_lt( 'Configure Second Factor - KBA (Security Questions)' ); ?>
160
+
161
+ </h3>
162
  <hr/>
163
  <form name="f" method="post" action="" id="mo2f_kba_setup_form">
164
  <?php mo2f_configure_kba_questions(); ?>
{views → miniorange-2-factor-authentication/views}/twofa/setup/setup_miniorange_authenticator.php RENAMED
@@ -64,7 +64,9 @@ function mo2f_configure_miniorange_authenticator($user){?>
64
  function download_instruction_for_mobile_app( $mobile_reg_status){ ?>
65
  <div id="mo2f_app_div" class="mo_margin_left">
66
  <a class="mo_app_link" data-toggle="collapse" href="#mo2f_sub_header_app" aria-expanded="false">
67
- <h3 class="mo2f_authn_header"><?php echo mo2f_lt('Step-1 : Download the miniOrange');?> <span style="color: #F78701;"> <?php echo mo2f_lt('Authenticator');?></span> <?php echo mo2f_lt('App');?></h3>
 
 
68
  </a>
69
  <hr class="mo_hr">
70
  <div class="mo2f_collapse in" id="mo2f_sub_header_app">
64
  function download_instruction_for_mobile_app( $mobile_reg_status){ ?>
65
  <div id="mo2f_app_div" class="mo_margin_left">
66
  <a class="mo_app_link" data-toggle="collapse" href="#mo2f_sub_header_app" aria-expanded="false">
67
+ <h3 class="mo2f_authn_header"><?php echo mo2f_lt('Step-1 : Download the miniOrange');?> <span style="color: #F78701;"> <?php echo mo2f_lt('Authenticator');?></span> <?php echo mo2f_lt('App');?>
68
+
69
+ </h3>
70
  </a>
71
  <hr class="mo_hr">
72
  <div class="mo2f_collapse in" id="mo2f_sub_header_app">
{views → miniorange-2-factor-authentication/views}/twofa/setup/setup_otp_over_sms.php RENAMED
@@ -7,7 +7,9 @@ function mo2f_configure_otp_over_sms( $user ) {
7
 
8
  ?>
9
 
10
- <h3><?php echo mo2f_lt( 'Configure OTP over SMS' ); ?></h3>
 
 
11
  <hr>
12
  <form name="f" method="post" action="" id="mo2f_verifyphone_form">
13
  <input type="hidden" name="option" value="mo2f_configure_otp_over_sms_send_otp"/>
7
 
8
  ?>
9
 
10
+ <h3><?php echo mo2f_lt( 'Configure OTP over SMS' ); ?>
11
+
12
+ </h3>
13
  <hr>
14
  <form name="f" method="post" action="" id="mo2f_verifyphone_form">
15
  <input type="hidden" name="option" value="mo2f_configure_otp_over_sms_send_otp"/>
{views → miniorange-2-factor-authentication/views}/twofa/setup_twofa.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/twofa/test/test_twofa_email_verification.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/twofa/test/test_twofa_google_authy_authenticator.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/twofa/test/test_twofa_kba_questions.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/twofa/test/test_twofa_miniorange_push_notification.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/twofa/test/test_twofa_miniorange_qrcode_authentication.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/twofa/test/test_twofa_miniorange_soft_token.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/twofa/test/test_twofa_otp_over_sms.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/twofa/two_fa.php RENAMED
@@ -21,19 +21,22 @@ else
21
  }
22
  if(current_user_can('administrator'))
23
  {
 
 
 
24
  if( !get_option( 'mo2f_is_NC' ))
25
  {
26
  ?>
 
27
  <button class="tablinks" onclick="openTab2fa(this)" id="login_option_2fa">Login Option</button>
28
- <button class="tablinks" onclick="openTab2fa(this)" id="custom_form_2fa">Login Form Integration</button>
29
  <?php
30
  }
31
  else
32
  {
33
  ?>
 
34
  <button class="tablinks" onclick="openTab2fa(this)" id="rba_2fa">Remember Device</button>
35
  <button class="tablinks" onclick="openTab2fa(this)" id="custom_login_2fa">Personalization</button>
36
- <button class="tablinks" onclick="openTab2fa(this)" id="custom_form_2fa">Login Form Integration</button>
37
  <button class="tablinks" onclick="openTab2fa(this)" id="shortcode_2fa">Shortcode</button>
38
  <?php
39
  }
@@ -65,8 +68,13 @@ else
65
  mo2f_rba_description($mo2f_user_email);
66
  else
67
  include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_rba.php';
68
- ?>
69
- </div>
 
 
 
 
 
70
  <div class="mo_wpns_divided_layout" id="custom_login_2fa_div">
71
  <?php
72
  if ( get_option( 'mo2f_personalization_installed' ) )
@@ -102,6 +110,7 @@ else
102
  jQuery("#setup_2fa_div").css("display", "block");
103
  jQuery("#upgrade_2fa_div").css("display" , "none");
104
  jQuery("#rba_2fa_div").css("display", "none");
 
105
  jQuery("#custom_login_2fa_div").css("display", "none");
106
  jQuery("#shortcode_2fa_div").css("display", "none");
107
  jQuery("#login_option_2fa_div").css("display", "none");
@@ -111,7 +120,7 @@ else
111
  jQuery("#setup_2fa").addClass("active");
112
  function openTab2fa(elmt){
113
  var tabname = elmt.id;
114
- var tabarray = ["setup_2fa","rba_2fa","custom_login_2fa","shortcode_2fa","login_option_2fa", "custom_form_2fa", "video_guide_2fa","unlimittedUser_2fa","upgrade_2fa"];
115
  for (var i = 0; i < tabarray.length; i++) {
116
  if(tabarray[i] == tabname){
117
  jQuery("#"+tabarray[i]).addClass("active");
@@ -127,15 +136,19 @@ else
127
  var is_onprem = '<?php echo MO2F_IS_ONPREM;?>';
128
  if(tab == "setup_twofa"){
129
  document.getElementById("setup_2fa").click();
130
- }else if(tab == "rba_2fa"){
131
- document.getElementById("rba_2fa").click();
132
- }
133
- else if(tab == "custom_login_2fa"){
134
- document.getElementById("custom_login_2fa").click();
135
- }
136
- else if(tab == "shortcode_2fa"){
137
- document.getElementById("shortcode_2fa").click();
138
- }
 
 
 
 
139
  else if(tab == "login_option_2fa"){
140
  document.getElementById("login_option_2fa").click();
141
  }
21
  }
22
  if(current_user_can('administrator'))
23
  {
24
+ ?>
25
+ <button class="tablinks" onclick="openTab2fa(this)" id="session_2fa">Session Control</button>
26
+ <?php
27
  if( !get_option( 'mo2f_is_NC' ))
28
  {
29
  ?>
30
+ <button class="tablinks" onclick="openTab2fa(this)" id="custom_form_2fa">Form Integration</button>
31
  <button class="tablinks" onclick="openTab2fa(this)" id="login_option_2fa">Login Option</button>
 
32
  <?php
33
  }
34
  else
35
  {
36
  ?>
37
+ <button class="tablinks" onclick="openTab2fa(this)" id="custom_form_2fa">Form Integration</button>
38
  <button class="tablinks" onclick="openTab2fa(this)" id="rba_2fa">Remember Device</button>
39
  <button class="tablinks" onclick="openTab2fa(this)" id="custom_login_2fa">Personalization</button>
 
40
  <button class="tablinks" onclick="openTab2fa(this)" id="shortcode_2fa">Shortcode</button>
41
  <?php
42
  }
68
  mo2f_rba_description($mo2f_user_email);
69
  else
70
  include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_rba.php';
71
+ ?>
72
+ </div>
73
+ <div class="mo_wpns_divided_layout" id="session_2fa_div">
74
+ <?php
75
+ include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_session_control.php';
76
+ ?>
77
+ </div>
78
  <div class="mo_wpns_divided_layout" id="custom_login_2fa_div">
79
  <?php
80
  if ( get_option( 'mo2f_personalization_installed' ) )
110
  jQuery("#setup_2fa_div").css("display", "block");
111
  jQuery("#upgrade_2fa_div").css("display" , "none");
112
  jQuery("#rba_2fa_div").css("display", "none");
113
+ jQuery("#session_2fa_div").css("display", "none");
114
  jQuery("#custom_login_2fa_div").css("display", "none");
115
  jQuery("#shortcode_2fa_div").css("display", "none");
116
  jQuery("#login_option_2fa_div").css("display", "none");
120
  jQuery("#setup_2fa").addClass("active");
121
  function openTab2fa(elmt){
122
  var tabname = elmt.id;
123
+ var tabarray = ["setup_2fa","rba_2fa","session_2fa","custom_login_2fa","shortcode_2fa","login_option_2fa", "custom_form_2fa", "video_guide_2fa","unlimittedUser_2fa","upgrade_2fa"];
124
  for (var i = 0; i < tabarray.length; i++) {
125
  if(tabarray[i] == tabname){
126
  jQuery("#"+tabarray[i]).addClass("active");
136
  var is_onprem = '<?php echo MO2F_IS_ONPREM;?>';
137
  if(tab == "setup_twofa"){
138
  document.getElementById("setup_2fa").click();
139
+ }
140
+ else if(tab == "session_2fa"){
141
+ document.getElementById("session_2fa").click();
142
+ }
143
+ else if(tab == "rba_2fa"){
144
+ document.getElementById("rba_2fa").click();
145
+ }
146
+ else if(tab == "custom_login_2fa"){
147
+ document.getElementById("custom_login_2fa").click();
148
+ }
149
+ else if(tab == "shortcode_2fa"){
150
+ document.getElementById("shortcode_2fa").click();
151
+ }
152
  else if(tab == "login_option_2fa"){
153
  document.getElementById("login_option_2fa").click();
154
  }
{views → miniorange-2-factor-authentication/views}/twofa/two_fa_addon.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/twofa/two_fa_custom_form.php RENAMED
@@ -5,34 +5,45 @@
5
  <div>
6
  <table class="customloginform" style="width: 100%;" align="left">
7
  <tr>
8
- <th class="fontsize">
9
  Custom Login form
10
  </th>
11
- <th style="width: 50%;">
12
  Show 2FA prompt on Custom login
13
 
14
  </th>
 
 
 
 
15
  </tr>
16
  <tr>
17
  <td>
18
  <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/woocommerce.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit; padding-right: 50px;">Woocommerce</h3>
19
  </td>
20
- <td style="align-items: right;width: 50%;">
21
  <form id="woocommerce_login_prompt_form" method="post">
22
  <div align="center">
23
- <input type="checkbox" name="woocommerce_login_prompt" onchange="document.getElementById('woocommerce_login_prompt_form').submit();" <?php if(get_site_option('mo2f_woocommerce_login_prompt')){?> checked <?php } ?> <?php if(!get_site_option('mo2f_enable_2fa_prompt_on_login_page')){?> disabled <?php } ?>/>
24
  </div>
25
  <input type="hidden" name="option" value="woocommerce_disable_login_prompt">
26
 
27
  </form>
28
  </td>
 
 
 
 
 
29
  </tr>
30
  <tr>
31
  <td>
32
  <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/ultimate_member.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Ultimate Member</h3>
33
  </td>
34
  <td style="text-align: center;">
35
- <input type="checkbox" name="" disabled>
 
 
36
  </td>
37
  </tr>
38
  <tr>
@@ -40,7 +51,9 @@
40
  <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/restrict_content_pro.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Restrict Content Pro</h3>
41
  </td>
42
  <td style="text-align: center;">
43
- <input type="checkbox" name="" disabled>
 
 
44
  </td>
45
  </tr>
46
  <tr>
@@ -48,7 +61,9 @@
48
  <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/theme_my_login.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">My Theme Login</h3>
49
  </td>
50
  <td style="text-align: center;">
51
- <input type="checkbox" name="" disabled>
 
 
52
  </td>
53
  </tr>
54
  <tr>
@@ -56,7 +71,9 @@
56
  <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/user_registration.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">User Registration</h3>
57
  </td>
58
  <td style="text-align: center;">
59
- <input type="checkbox" name="" disabled>
 
 
60
  </td>
61
  </tr>
62
  <tr>
@@ -64,7 +81,9 @@
64
  <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/Custom_Login_Page_Customizer_LoginPress.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Custom Login Page Customizer | LoginPress</h3>
65
  </td>
66
  <td style="text-align: center;">
67
- <input type="checkbox" name="" disabled>
 
 
68
  </td>
69
  </tr>
70
  <tr>
@@ -72,7 +91,9 @@
72
  <?php echo '<img style="width:30px; height:30px;display: inline;float: left;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/Admin_Custom_Login.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Admin Custom Login</h3>
73
  </td>
74
  <td style="text-align: center;">
75
- <input type="checkbox" name="" disabled>
 
 
76
  </td>
77
  </tr>
78
  <tr>
@@ -80,7 +101,9 @@
80
  <?php echo '<img style="width:30px; height:30px;display: inline;float: left;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/RegistrationMagic_Custom_Registration_Forms_and_User_Login.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">RegistrationMagic – Custom Registration Forms and User Login</h3>
81
  </td>
82
  <td style="text-align: center; ">
83
- <input type="checkbox" name="" disabled>
 
 
84
  </td>
85
  </tr>
86
 
5
  <div>
6
  <table class="customloginform" style="width: 100%;" align="left">
7
  <tr>
8
+ <th style="width: 65%">
9
  Custom Login form
10
  </th>
11
+ <th style="width: 22%">
12
  Show 2FA prompt on Custom login
13
 
14
  </th>
15
+ <th style="width: 13%">
16
+ Documents
17
+
18
+ </th>
19
  </tr>
20
  <tr>
21
  <td>
22
  <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/woocommerce.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit; padding-right: 50px;">Woocommerce</h3>
23
  </td>
24
+ <td style="align-items: right;">
25
  <form id="woocommerce_login_prompt_form" method="post">
26
  <div align="center">
27
+ <input type="checkbox" name="woocommerce_login_prompt" onchange="document.getElementById('woocommerce_login_prompt_form').submit();" <?php if(get_site_option('mo2f_woocommerce_login_prompt')){?> checked <?php } ?> <?php if(!get_site_option('mo2f_enable_2fa_prompt_on_login_page')){?> checked <?php } ?>/>
28
  </div>
29
  <input type="hidden" name="option" value="woocommerce_disable_login_prompt">
30
 
31
  </form>
32
  </td>
33
+ <td>
34
+ <div style="text-align: center;">
35
+ <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/setup-custom-login-form" target="blank"><span class="dashicons dashicons-text-page mo2f_doc_icon_style" style="font-size: 25px;color: #199C95"></span></a>
36
+ </div>
37
+ </td>
38
  </tr>
39
  <tr>
40
  <td>
41
  <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/ultimate_member.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Ultimate Member</h3>
42
  </td>
43
  <td style="text-align: center;">
44
+ <input type="checkbox" name="" checked>
45
+ </td>
46
+ <td>
47
  </td>
48
  </tr>
49
  <tr>
51
  <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/restrict_content_pro.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Restrict Content Pro</h3>
52
  </td>
53
  <td style="text-align: center;">
54
+ <input type="checkbox" name="" checked>
55
+ </td>
56
+ <td>
57
  </td>
58
  </tr>
59
  <tr>
61
  <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/theme_my_login.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">My Theme Login</h3>
62
  </td>
63
  <td style="text-align: center;">
64
+ <input type="checkbox" name="" checked>
65
+ </td>
66
+ <td>
67
  </td>
68
  </tr>
69
  <tr>
71
  <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/user_registration.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">User Registration</h3>
72
  </td>
73
  <td style="text-align: center;">
74
+ <input type="checkbox" name="" checked>
75
+ </td>
76
+ <td>
77
  </td>
78
  </tr>
79
  <tr>
81
  <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/Custom_Login_Page_Customizer_LoginPress.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Custom Login Page Customizer | LoginPress</h3>
82
  </td>
83
  <td style="text-align: center;">
84
+ <input type="checkbox" name="" checked>
85
+ </td>
86
+ <td>
87
  </td>
88
  </tr>
89
  <tr>
91
  <?php echo '<img style="width:30px; height:30px;display: inline;float: left;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/Admin_Custom_Login.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Admin Custom Login</h3>
92
  </td>
93
  <td style="text-align: center;">
94
+ <input type="checkbox" name="" checked>
95
+ </td>
96
+ <td>
97
  </td>
98
  </tr>
99
  <tr>
101
  <?php echo '<img style="width:30px; height:30px;display: inline;float: left;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/RegistrationMagic_Custom_Registration_Forms_and_User_Login.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">RegistrationMagic – Custom Registration Forms and User Login</h3>
102
  </td>
103
  <td style="text-align: center; ">
104
+ <input type="checkbox" name="" checked>
105
+ </td>
106
+ <td>
107
  </td>
108
  </tr>
109
 
{views → miniorange-2-factor-authentication/views}/twofa/two_fa_custom_login.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/twofa/two_fa_login_option.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/twofa/two_fa_rba.php RENAMED
File without changes
miniorange-2-factor-authentication/views/twofa/two_fa_session_control.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="mo_wpns_setting_layout">
2
+ <div>
3
+ <table style="width:100%">
4
+ <tr>
5
+ <th align="left">
6
+ <h3>User Session Control: <?php echo '<a href="'.$upgrade_url .'" style="color: red">'; ?>[ PREMIUM ]</a>
7
+ <br>
8
+ <p><i class="mo_wpns_not_bold">This will help you limit the number of simultaneous sessions for your users. You can decide to allow access to the new session after limit is reached and destroy all other sessions or block access to the new session when the limit is reached.</i></p>
9
+ </h3>
10
+ </th>
11
+ <th align="right">
12
+ <label class='mo_wpns_switch'>
13
+ <input type=checkbox/>
14
+ <span class='mo_wpns_slider mo_wpns_round'></span>
15
+ </label>
16
+ </th>
17
+ </tr>
18
+ </table>
19
+ </div>
20
+ <br>
21
+ <div>
22
+ <h3>Number of Sessions
23
+ <input type="text" name="">
24
+ </h3>
25
+ </div>
26
+ <br>
27
+ <div>
28
+ <input type="radio" name="mo2f_allow_access" id="mo2f_allow_access" value="allow" checked>Allow access
29
+ <input type="radio" name="mo2f_allow_access" id="mo2f_block_access" value="block">Block Access
30
+ </div>
31
+
32
+ <hr>
33
+ <div>
34
+ <table style="width:100%">
35
+ <tr>
36
+ <th align="left">
37
+ <h3>Idle Session: <?php echo '<a href="'.$upgrade_url .'" style="color: red">'; ?>[ PREMIUM ]</a>
38
+ <br>
39
+ <p><i class="mo_wpns_not_bold">This will allow you to logout a Wordpress user who was inactive for a period of time. You can set the amount of hours after which you want to logout the inactive user.</i></p>
40
+ </h3>
41
+ </th>
42
+ <th align="right">
43
+ <label class='mo_wpns_switch'>
44
+ <input type=checkbox/>
45
+ <span class='mo_wpns_slider mo_wpns_round'></span>
46
+ </label>
47
+ </th>
48
+ </tr>
49
+ </table>
50
+ </div>
51
+ <br>
52
+ <div>
53
+ <h3>Number of Hours
54
+ <input type="text" name="">
55
+ </h3>
56
+ </div>
57
+
58
+ <hr>
59
+ <div>
60
+ <table style="width:100%">
61
+ <tr>
62
+ <th align="left">
63
+ <h3>Set Session TIme: <?php echo '<a href="'.$upgrade_url .'" style="color: red">'; ?>[ PREMIUM ]</a>
64
+ <br>
65
+ <p><i class="mo_wpns_not_bold">This will allow you to set a time limit on the user's session. After that time, the user would be logged out and will be required to login again.</i></p>
66
+ </h3>
67
+ </th>
68
+ <th align="right">
69
+ <label class='mo_wpns_switch'>
70
+ <input type=checkbox/>
71
+ <span class='mo_wpns_slider mo_wpns_round'></span>
72
+ </label>
73
+ </th>
74
+ </tr>
75
+ </table>
76
+ </div>
77
+ <br>
78
+ <div>
79
+ <h3>Number of Hours
80
+ <input type="text" name="">
81
+ </h3>
82
+ </div>
83
+ <hr>
84
+ <center>
85
+ <button type="submit" class="mo_wpns_button mo_wpns_button1">Save Settings</button>
86
+ </center>
87
+ </div>
{views → miniorange-2-factor-authentication/views}/twofa/two_fa_setup_notification.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/twofa/two_fa_shortcode.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/twofa/two_fa_unlimittedUser.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/twofa/two_fa_video_guide.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/upgrade.php RENAMED
@@ -7,6 +7,17 @@
7
  if ($_GET['page'] == 'mo_2fa_upgrade') {
8
  ?><br><br><?php
9
  }
 
 
 
 
 
 
 
 
 
 
 
10
  ?>
11
  <div class="mo_upgrade_toggle">
12
  <p class="mo_upgrade_toggle_2fa">
@@ -26,6 +37,11 @@ if ($_GET['page'] == 'mo_2fa_upgrade') {
26
  <label for="Recharge" class="mo_upgrade_toggle_2fa_lable" id="mo_ns_licensing_plans_title">Website Security</label>
27
  <label for="Recharge" class="mo_upgrade_toggle_2fa_lable" id="mo_ns_licensing_plans_title1" style="background-color: #20b2aa;border-radius: 50em;display: none;">Website Security</label>
28
 
 
 
 
 
 
29
  <span class="cd-switch"></span>
30
  </p>
31
  </div>
@@ -83,9 +99,8 @@ if ($_GET['page'] == 'mo_2fa_upgrade') {
83
 
84
  <?php echo mo2f_yearly_standard_pricing_plan(); ?>
85
  <?php echo mo2f_sms_cost();?>
 
86
  </center>
87
-
88
- <br>
89
  <div style="text-align: center;">
90
  <?php if( $is_customer_registered) {
91
  ?>
@@ -123,8 +138,8 @@ if ($_GET['page'] == 'mo_2fa_upgrade') {
123
 
124
  <?php echo mo2f_yearly_premium_pricing_plan(); ?>
125
  <?php echo mo2f_sms_cost();?>
 
126
  </center>
127
- <br>
128
  <div style="text-align: center;">
129
  <?php if( $is_customer_registered) {
130
  ?>
@@ -154,7 +169,7 @@ if ($_GET['page'] == 'mo_2fa_upgrade') {
154
  Multi-Site Support<br>
155
  Additional 2FA methods<br>
156
  Prevent Account Sharing<br>
157
- Login and File Protection, Strong Passwords<br>
158
  </h4>
159
  </center>
160
  <div class="mo_wpns_upgrade_page_2fa_background">
@@ -163,9 +178,9 @@ if ($_GET['page'] == 'mo_2fa_upgrade') {
163
  <h1 class="mo_wpns_upgrade_pade_pricing">$59</h1>
164
  <?php echo mo2f_yearly_all_inclusive_pricing_plan(); ?>
165
  <?php echo mo2f_sms_cost();?>
 
166
  </center>
167
 
168
- <br>
169
  <div style="text-align: center;">
170
  <?php if( $is_customer_registered) {
171
  ?>
@@ -239,10 +254,9 @@ if ($_GET['page'] == 'mo_2fa_upgrade') {
239
  <h1 class="mo_wpns_upgrade_pade_pricing">$49</h1>
240
 
241
  <?php echo mo2f_yearly_standard_pricing_onpremise(); ?>
242
- <?php echo mo2f_sms_cost();?>
243
  </center>
244
 
245
- <br>
246
  <div style="text-align: center;">
247
  <?php if( $is_customer_registered) {
248
  ?>
@@ -279,9 +293,8 @@ if ($_GET['page'] == 'mo_2fa_upgrade') {
279
  <h1 class="mo_wpns_upgrade_pade_pricing">$99</h1>
280
 
281
  <?php echo mo2f_yearly_premium_pricing_onpremise(); ?>
282
- <?php echo mo2f_sms_cost();?>
283
  </center>
284
- <br>
285
  <div style="text-align: center;">
286
  <?php if( $is_customer_registered) {
287
  ?>
@@ -298,10 +311,45 @@ if ($_GET['page'] == 'mo_2fa_upgrade') {
298
  </div>
299
  </div>
300
  <div class="mo_wpns_upgrade_page_space_in_div"></div>
301
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
302
  <div class="mo_wpns_upgrade_page_space_in_div"></div>
303
  <div style="width: 96%; min-height: 60px;background-color: white;float: left;border-bottom: 2px solid #2ba29b; text-align: center;">
304
- <h1 style="color: #2ba29b;">Features</h1>
 
 
 
305
  </div>
306
  </div>
307
 
@@ -345,9 +393,9 @@ if ($_GET['page'] == 'mo_2fa_upgrade') {
345
  ?>
346
  </div>
347
  <h1 class="mo_wpns_upgrade_page_2fa_ns_1"> Website Security Plans</h1></div>
348
- <div class="mo_wpns_upgrade_title11" >
349
  <div class="mo_wpns_upgrade_page_title_name">
350
- <h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 250%;">
351
  WAF</h1><hr class="mo_wpns_upgrade_page_hr"></div>
352
  <div><center><b>
353
  <ul>
@@ -383,9 +431,9 @@ if ($_GET['page'] == 'mo_2fa_upgrade') {
383
  </div></div>
384
  </div>
385
  <div class="mo_wpns_upgrade_page_space_in_div"></div>
386
- <div class="mo_wpns_upgrade_title11" >
387
  <div class="mo_wpns_upgrade_page_title_name">
388
- <h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 250%;">
389
  Login and Spam</h1><hr class="mo_wpns_upgrade_page_hr"></div>
390
  <div><center><b>
391
  <ul>
@@ -423,9 +471,9 @@ if ($_GET['page'] == 'mo_2fa_upgrade') {
423
 
424
  </div>
425
  <div class="mo_wpns_upgrade_page_space_in_div"></div>
426
- <div class="mo_wpns_upgrade_title11" >
427
  <div class="mo_wpns_upgrade_page_title_name">
428
- <h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 250%;">
429
  Malware Scanner</h1><hr class="mo_wpns_upgrade_page_hr"></div>
430
  <div><center><b>
431
  <ul>
@@ -462,9 +510,9 @@ if ($_GET['page'] == 'mo_2fa_upgrade') {
462
  </div>
463
  </div>
464
  <div class="mo_wpns_upgrade_page_space_in_div"></div>
465
- <div class="mo_wpns_upgrade_title11" >
466
  <div class="mo_wpns_upgrade_page_title_name">
467
- <h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 250%;">
468
  Encrypted Backup</h1><hr class="mo_wpns_upgrade_page_hr"></div>
469
  <div><center><b>
470
  <ul>
@@ -499,6 +547,233 @@ if ($_GET['page'] == 'mo_2fa_upgrade') {
499
  ?>
500
 
501
  </div></div></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
502
  </div>
503
  <div id="mo2f_payment_option" class="mo_wpns_setting_layout" style="margin-top: 1%;width: 93.5%;margin-left: 0%;">
504
  <div>
@@ -629,6 +904,30 @@ function mo2f_sms_cost() {
629
 
630
  <?php
631
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
632
  function mo2f_yearly_standard_pricing_plan() {
633
  ?>
634
 
@@ -718,6 +1017,19 @@ function mo2f_yearly_standard_pricing_onpremise() {
718
  </p>
719
  <?php
720
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
721
  function mo2f_waf_yearly_standard_pricing() {
722
  ?>
723
  <p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
@@ -778,6 +1090,14 @@ function mo2f_scanner_yearly_standard_pricing() {
778
  <div><br></div>
779
  <?php
780
  }
 
 
 
 
 
 
 
 
781
  ?>
782
 
783
  <script type="text/javascript">
@@ -790,23 +1110,40 @@ function wpns_pricing()
790
 
791
  <script type="text/javascript">
792
 
793
- function mo2fa_show_detail_features()
794
- {
795
- jQuery("#mo2f_features_id").hide(1500);
 
 
 
 
 
 
 
 
 
 
 
 
796
 
797
- document.getElementById("mo2f_show_features").style.display = "none";
798
- document.getElementById("mo2f_hide_features").style.display = "block";
 
 
799
 
800
- }
 
 
 
801
 
802
- function mo2fa_hide_detail_features()
803
- {
804
- jQuery("#mo2f_features_id").show(1500);
805
 
806
- document.getElementById("mo2f_show_features").style.display = "block";
807
- document.getElementById("mo2f_hide_features").style.display = "none";
808
 
809
- }
810
  function mo2f_payment_option()
811
  {
812
  document.getElementById('mo2f_payment_option').scrollIntoView();
@@ -838,19 +1175,24 @@ function wpns_pricing()
838
  document.getElementById('mo_2fa_features_only').style.display = "none";
839
  document.getElementById('mo_ns_features_only').style.display = "none";
840
  document.getElementById('mo2f_features_id').style.display = "none";
 
841
  document.getElementById('mo2f_2fa_lite_features_id').style.display = "block";
842
  document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "none";
843
  document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "block";
844
  document.getElementById('mo_ns_licensing_plans_title').style.display = "block";
845
  document.getElementById('mo_ns_licensing_plans_title1').style.display = "none";
846
  document.getElementById('mo_2fa_licensing_plans_title').style.display = "block";
847
- document.getElementById('mo_2fa_licensing_plans_title1').style.display = "none";
 
 
 
848
  }
849
  function mo_2fa_show_plans()
850
  {
851
  document.getElementById('mo_2fa_features_only').style.display = "block";
852
  document.getElementById('mo_ns_features_only').style.display = "none";
853
  document.getElementById('mo2f_features_id').style.display = "block";
 
854
  document.getElementById('mo2f_2fa_lite_features_id').style.display = "none";
855
  document.getElementById('mo_2fa_lite_features_only').style.display = "none";
856
  document.getElementById('mo_ns_licensing_plans_title').style.display = "block";
@@ -858,13 +1200,17 @@ function wpns_pricing()
858
  document.getElementById('mo_2fa_licensing_plans_title').style.display = "none";
859
  document.getElementById('mo_2fa_licensing_plans_title1').style.display = "block";
860
  document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "block";
861
- document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "none";
 
 
 
862
  }
863
  function mo_ns_show_plans()
864
  {
865
  document.getElementById('mo_2fa_features_only').style.display = "none";
866
  document.getElementById('mo_ns_features_only').style.display = "block";
867
  document.getElementById('mo2f_features_id').style.display = "none";
 
868
  document.getElementById('mo2f_2fa_lite_features_id').style.display = "none";
869
  document.getElementById('mo_2fa_lite_features_only').style.display = "none";
870
  document.getElementById('mo_2fa_licensing_plans_title').style.display = "block";
@@ -873,5 +1219,26 @@ function wpns_pricing()
873
  document.getElementById('mo_ns_licensing_plans_title').style.display = "none";
874
  document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "block";
875
  document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "none";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
876
  }
877
  </script>
7
  if ($_GET['page'] == 'mo_2fa_upgrade') {
8
  ?><br><br><?php
9
  }
10
+ $mo2f_feature_description_set_addon = array(
11
+ "This will allow you to set a time limit on the user's session. After that time, the user would be logged out.",
12
+ "Sharing passwords will not work. Only one user will be able to login from one account.",
13
+ "Admin can set the number of allowed deivces per user to login.",
14
+ "This will allow you to logout a Wordpress user who was inactive for a period of time.",
15
+ "Set a fixed time per user session and force log out after that time irrespective of user activity.",
16
+ "Admins can decide the number of active sessions for a particular account. Limiting active sessions prevents friends and family share and access website at the same time.",
17
+ "Users login with Email without worrying for passwords. It only works with 2fa.",
18
+ "You can login with your phone number, OTP will send on your mobile phone, you can skip password for login.",
19
+ "You can login with your username, you can skip password for login.",
20
+ );
21
  ?>
22
  <div class="mo_upgrade_toggle">
23
  <p class="mo_upgrade_toggle_2fa">
37
  <label for="Recharge" class="mo_upgrade_toggle_2fa_lable" id="mo_ns_licensing_plans_title">Website Security</label>
38
  <label for="Recharge" class="mo_upgrade_toggle_2fa_lable" id="mo_ns_licensing_plans_title1" style="background-color: #20b2aa;border-radius: 50em;display: none;">Website Security</label>
39
 
40
+ <input type="radio" name="sitetype" value="mo_addon" id="mo_addon" onclick="mo_addon_show_plans(); " style="display: none;" >
41
+
42
+ <label for="mo_addon" class="mo_upgrade_toggle_2fa_lable" id="mo_addon_licensing_plans_title" style="background-color: #20b2aa;border-radius: 50em;display: none;">Addons</label>
43
+ <label for="mo_addon" class="mo_upgrade_toggle_2fa_lable" id="mo_addon_licensing_plans_title1">Addons</label>
44
+
45
  <span class="cd-switch"></span>
46
  </p>
47
  </div>
99
 
100
  <?php echo mo2f_yearly_standard_pricing_plan(); ?>
101
  <?php echo mo2f_sms_cost();?>
102
+ <?php echo mo2f_supported_forms();?>
103
  </center>
 
 
104
  <div style="text-align: center;">
105
  <?php if( $is_customer_registered) {
106
  ?>
138
 
139
  <?php echo mo2f_yearly_premium_pricing_plan(); ?>
140
  <?php echo mo2f_sms_cost();?>
141
+ <?php echo mo2f_supported_forms();?>
142
  </center>
 
143
  <div style="text-align: center;">
144
  <?php if( $is_customer_registered) {
145
  ?>
169
  Multi-Site Support<br>
170
  Additional 2FA methods<br>
171
  Prevent Account Sharing<br>
172
+ Login and File Protection<br>
173
  </h4>
174
  </center>
175
  <div class="mo_wpns_upgrade_page_2fa_background">
178
  <h1 class="mo_wpns_upgrade_pade_pricing">$59</h1>
179
  <?php echo mo2f_yearly_all_inclusive_pricing_plan(); ?>
180
  <?php echo mo2f_sms_cost();?>
181
+ <?php echo mo2f_supported_forms();?>
182
  </center>
183
 
 
184
  <div style="text-align: center;">
185
  <?php if( $is_customer_registered) {
186
  ?>
254
  <h1 class="mo_wpns_upgrade_pade_pricing">$49</h1>
255
 
256
  <?php echo mo2f_yearly_standard_pricing_onpremise(); ?>
257
+ <?php echo mo2f_supported_forms();?>
258
  </center>
259
 
 
260
  <div style="text-align: center;">
261
  <?php if( $is_customer_registered) {
262
  ?>
293
  <h1 class="mo_wpns_upgrade_pade_pricing">$99</h1>
294
 
295
  <?php echo mo2f_yearly_premium_pricing_onpremise(); ?>
296
+ <?php echo mo2f_supported_forms();?>
297
  </center>
 
298
  <div style="text-align: center;">
299
  <?php if( $is_customer_registered) {
300
  ?>
311
  </div>
312
  </div>
313
  <div class="mo_wpns_upgrade_page_space_in_div"></div>
314
+ <div class="mo_wpns_upgrade_title_2fa_lite" >
315
+ <div class="mo_wpns_upgrade_page_title_name">
316
+ <h1 class="mo_wpns_upgrade_page_2fa_integration_plan_name">Custom Forms</h1>
317
+ <hr class="mo_wpns_upgrade_page_hr">
318
+ </div>
319
+ <center>
320
+ <h4>
321
+ Unlimited Users<br>
322
+ Multi-Site Support<br>
323
+ 2FA on login page<br>
324
+ 2FA on registration page<br>
325
+
326
+ </h4>
327
+ </center>
328
+ <div class="mo_wpns_upgrade_page_2fa_lite_background">
329
+ <center>
330
+ <h4 class="mo_wpns_upgrade_page_starting_price">Starting From</h4>
331
+ <h1 class="mo_wpns_upgrade_pade_pricing">$120</h1>
332
+
333
+ <?php echo mo2f_yearly_custom_login_forms_pricing(); ?>
334
+ <?php echo mo2f_supported_forms();?>
335
+ </center>
336
+ <div style="text-align: center;">
337
+ <button class="mo_wpns_button mo_wpns_button1 mo_wpns_upgrade_page_button" href="mailto:2fasupport@xecurify.com">Contact Us</button>
338
+
339
+ <?php
340
+ mo2f_payment_option_ui();
341
+ ?>
342
+
343
+
344
+ </div>
345
+ </div>
346
+ </div>
347
  <div class="mo_wpns_upgrade_page_space_in_div"></div>
348
  <div style="width: 96%; min-height: 60px;background-color: white;float: left;border-bottom: 2px solid #2ba29b; text-align: center;">
349
+ <br>
350
+ <a id= "mo2f_show_2fa_lite_features" class="mo_wpns_upgrade_page_show_feature" onclick="mo2fa_show_2fa_lite_detail_features()"><span style="font-size: 63%;"><u>Hide Features</u></span></a>
351
+ <a id= "mo2f_hide_2fa_lite_features" class="mo_wpns_upgrade_page_hide_feature" onclick="mo2fa_show_hide_lite_detail_features()"><span style="font-size: 63%;"><u>Show more Features</u></span></a>
352
+ <br>
353
  </div>
354
  </div>
355
 
393
  ?>
394
  </div>
395
  <h1 class="mo_wpns_upgrade_page_2fa_ns_1"> Website Security Plans</h1></div>
396
+ <div class="mo_wpns_upgrade_security_title" >
397
  <div class="mo_wpns_upgrade_page_title_name">
398
+ <h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 200%;">
399
  WAF</h1><hr class="mo_wpns_upgrade_page_hr"></div>
400
  <div><center><b>
401
  <ul>
431
  </div></div>
432
  </div>
433
  <div class="mo_wpns_upgrade_page_space_in_div"></div>
434
+ <div class="mo_wpns_upgrade_security_title" >
435
  <div class="mo_wpns_upgrade_page_title_name">
436
+ <h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 200%;">
437
  Login and Spam</h1><hr class="mo_wpns_upgrade_page_hr"></div>
438
  <div><center><b>
439
  <ul>
471
 
472
  </div>
473
  <div class="mo_wpns_upgrade_page_space_in_div"></div>
474
+ <div class="mo_wpns_upgrade_security_title" >
475
  <div class="mo_wpns_upgrade_page_title_name">
476
+ <h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 200%;">
477
  Malware Scanner</h1><hr class="mo_wpns_upgrade_page_hr"></div>
478
  <div><center><b>
479
  <ul>
510
  </div>
511
  </div>
512
  <div class="mo_wpns_upgrade_page_space_in_div"></div>
513
+ <div class="mo_wpns_upgrade_security_title" >
514
  <div class="mo_wpns_upgrade_page_title_name">
515
+ <h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 200%;">
516
  Encrypted Backup</h1><hr class="mo_wpns_upgrade_page_hr"></div>
517
  <div><center><b>
518
  <ul>
547
  ?>
548
 
549
  </div></div></div>
550
+ </div>
551
+ <div id="mo_addon_features_only" style="display: none;">
552
+ <div id="mo2f_payment_option" style="margin-top: -2%;width: 93.5%;margin-left: 0%;border: none;box-shadow: none;background: none; padding: 5px 20px 30px 20px;">
553
+ <div>
554
+ <div class="mo_2fa_container">
555
+ <div class="mo_2fa_card-deck">
556
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;
557
+ background-color: white;width: 30%;margin: 10px;">
558
+ <div class="mo_2fa_Card-header">
559
+ <h3>Learning Management System / Online Courses</h3>
560
+ </div>
561
+ <hr>
562
+ <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
563
+ <h4>
564
+ <span>Session Handling</span>
565
+ <?php echo mo2f_addon_features_on_hover($mo2f_feature_description_set_addon[0]);?>
566
+
567
+ <br>
568
+ <span>Prevent Account Sharing</span>
569
+ <?php echo mo2f_addon_features_on_hover($mo2f_feature_description_set_addon[1]);?>
570
+ <br>
571
+ <span>Restrict no of device per user</span>
572
+ <?php echo mo2f_addon_features_on_hover($mo2f_feature_description_set_addon[2]);?>
573
+ </h4>
574
+ </div>
575
+ <hr>
576
+ <div style="text-align: center;">
577
+ <b><a href="mailto:2fasupport@xecurify.com" class = "mo_wpns_button mo_wpns_button1 "><i>Contact Us</i></a></b>
578
+ </div><br>
579
+ </div>
580
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;
581
+ background-color: white;width: 30%;margin: 10px;">
582
+ <div class="mo_2fa_Card-header">
583
+ <h3>User Session Control</h3>
584
+ </div>
585
+ <hr>
586
+ <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
587
+
588
+ <h4>
589
+ <span>Idle Session Control</span>
590
+ <?php echo mo2f_addon_features_on_hover($mo2f_feature_description_set_addon[3]);?>
591
+ <br>
592
+ <span>User Session Timeout</span>
593
+ <?php echo mo2f_addon_features_on_hover($mo2f_feature_description_set_addon[4]);?>
594
+ <br>
595
+ <span>Limit Simultaneous Session</span>
596
+ <?php echo mo2f_addon_features_on_hover($mo2f_feature_description_set_addon[5]);?>
597
+ </h4>
598
+ </div>
599
+ <hr>
600
+ <div style="text-align: center;">
601
+ <b><a href="mailto:2fasupport@xecurify.com" class = "mo_wpns_button mo_wpns_button1 "><i>Contact Us</i></a></b>
602
+ </div><br>
603
+ </div>
604
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;background-color: white;width: 30%;margin: 10px;">
605
+ <div class="mo_2fa_Card-header">
606
+ <h3>Password-Less Login</h3>
607
+ </div>
608
+ <hr>
609
+ <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
610
+ <h4>
611
+ <span>Login with email only</span>
612
+ <?php echo mo2f_addon_features_on_hover($mo2f_feature_description_set_addon[6]);?>
613
+ <br>
614
+ <span>Login with Phone only</span>
615
+ <?php echo mo2f_addon_features_on_hover($mo2f_feature_description_set_addon[7]);?>
616
+ <br>
617
+ <span>Login with username only</span>
618
+ <?php echo mo2f_addon_features_on_hover($mo2f_feature_description_set_addon[8]);?>
619
+ </h4>
620
+ </div><hr>
621
+ <div style="text-align: center;">
622
+ <b><a href="mailto:2fasupport@xecurify.com" class = "mo_wpns_button mo_wpns_button1 "><i>Contact Us</i></a></b>
623
+ </div><br>
624
+ </div>
625
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;background-color: white;width: 30%;margin: 10px;">
626
+ <div class="mo_2fa_Card-header">
627
+ <h3>WooCommerce</h3>
628
+ </div>
629
+ <hr>
630
+ <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
631
+ <h4>
632
+ <span>OTP on Login Page</span>
633
+ <br>
634
+ <span>OTP on Registration</span>
635
+ <br><br>
636
+ </h4>
637
+ </div><hr>
638
+ <div style="text-align: center;">
639
+ <b><a href="mailto:2fasupport@xecurify.com" class = "mo_wpns_button mo_wpns_button1 "><i>Contact Us</i></a></b>
640
+ </div><br>
641
+ </div>
642
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;background-color: white;width: 30%;margin: 10px;">
643
+ <div class="mo_2fa_Card-header">
644
+ <h3>User Registration</h3>
645
+ </div>
646
+ <hr>
647
+ <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
648
+ <h4>
649
+ <span>OTP on Login Page</span>
650
+ <br>
651
+ <span>OTP on Registration</span>
652
+ <br><br>
653
+ </h4>
654
+ </div><hr>
655
+ <div style="text-align: center;">
656
+ <b><a href="mailto:2fasupport@xecurify.com" class = "mo_wpns_button mo_wpns_button1 "><i>Contact Us</i></a></b>
657
+ </div><br>
658
+ </div>
659
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;background-color: white;width: 30%;margin: 10px;">
660
+ <div class="mo_2fa_Card-header">
661
+ <h3>Ultimate Member</h3>
662
+ </div>
663
+ <hr>
664
+ <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
665
+ <h4>
666
+ <span>OTP on Login Page</span>
667
+ <br>
668
+ <span>OTP on Registration</span>
669
+ <br>
670
+ <span>OTP on Reset Password</span>
671
+ </h4>
672
+ </div><hr>
673
+ <div style="text-align: center;">
674
+ <b><a href="mailto:2fasupport@xecurify.com" class = "mo_wpns_button mo_wpns_button1 "><i>Contact Us</i></a></b>
675
+ </div><br>
676
+ </div>
677
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;
678
+ background-color: white;width: 30%;margin: 10px">
679
+ <div class="mo_2fa_Card-header">
680
+ <h3>RBA & Trusted Devices Management</h3>
681
+ </div>
682
+ <hr>
683
+ <h1 class="mo_wpns_upgrade_pade_pricing" style="color: #20b2aa">$49</h1>
684
+ <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
685
+ <h3>Features</h3>
686
+ <h4>
687
+ Remember Device<br>
688
+ Limit users to login from specific IPs<br>
689
+ Set Device Limit for the users to login<br><br><br>
690
+
691
+ </h4>
692
+ </div>
693
+ <hr>
694
+ <div style="text-align: center;">
695
+ <?php if( $is_customer_registered)
696
+ {
697
+ ?>
698
+ <button class="mo_wpns_button mo_wpns_button1 " onclick="mo2f_upgradeform('wp_2fa_addon_rba')" >Purchase</button>
699
+ <?php
700
+ }else
701
+ { ?>
702
+ <button class="mo_wpns_button mo_wpns_button1 " onclick="mo2f_register_and_upgradeform('wp_2fa_addon_rba')" >Purchase</button>
703
+ <?php
704
+ }
705
+ ?>
706
+ </div>
707
+ <br>
708
+ </div>
709
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;
710
+ background-color: white;width: 30%;margin: 10px">
711
+ <div class="mo_2fa_Card-header">
712
+ <h3>Personalization Add-on Features</h3>
713
+ </div>
714
+ <hr>
715
+ <h1 class="mo_wpns_upgrade_pade_pricing" style="color: #20b2aa">$199</h1>
716
+ <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
717
+ <h3>Features</h3>
718
+ <h4>
719
+ Custom UI of 2FA popups<br>
720
+ Customize 'powered by' Logo<br>
721
+ Custom Email and SMS Templates<br>
722
+ Customize Plugin Icon and Plugin Name<br><br>
723
+ </h4>
724
+ </div>
725
+ <hr>
726
+ <div style="text-align: center;">
727
+ <?php if( $is_customer_registered)
728
+ {
729
+ ?>
730
+ <button class="mo_wpns_button mo_wpns_button1 " onclick="mo2f_upgradeform('wp_2fa_addon_personalization')" >Purchase</button>
731
+ <?php
732
+ }else
733
+ { ?>
734
+ <button class="mo_wpns_button mo_wpns_button1 " onclick="mo2f_register_and_upgradeform('wp_2fa_addon_personalization')" >Purchase</button>
735
+ <?php }
736
+ ?>
737
+ </div>
738
+ <br>
739
+ </div>
740
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;
741
+ background-color: white;width: 30%;margin: 10px">
742
+ <div class="mo_2fa_Card-header">
743
+ <h3>Short Codes Add-on Features</h3>
744
+ </div>
745
+ <hr>
746
+ <h1 class="mo_wpns_upgrade_pade_pricing" style="color: #20b2aa">$99</h1>
747
+ <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
748
+ <h3>Features</h3>
749
+ <h4>
750
+ Turn on/off 2-factor by user<br>
751
+ Configure Security Questions by user<br>
752
+ Remember Device from custom forms<br>
753
+ Configure Google Authenticator by user<br>
754
+ On-Demand ShortCodes for specific fuctionalities
755
+
756
+ </h4>
757
+
758
+ </div><hr>
759
+ <div style="text-align: center;">
760
+ <?php if( $is_customer_registered) {
761
+ ?>
762
+ <button class="mo_wpns_button mo_wpns_button1 " onclick="mo2f_upgradeform('wp_2fa_addon_shortcode')" >Purchase</button>
763
+ <?php
764
+ }else
765
+ { ?>
766
+ <button class="mo_wpns_button mo_wpns_button1 " onclick="mo2f_register_and_upgradeform('wp_2fa_addon_shortcode')" >Purchase</button>
767
+ <?php }
768
+ ?>
769
+ </div>
770
+ <br>
771
+ </div>
772
+ </div>
773
+ </div>
774
+ </div>
775
+ </div>
776
+
777
  </div>
778
  <div id="mo2f_payment_option" class="mo_wpns_setting_layout" style="margin-top: 1%;width: 93.5%;margin-left: 0%;">
779
  <div>
904
 
905
  <?php
906
  }
907
+ function mo2f_supported_forms() {
908
+ ?>
909
+ <p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price" id="mo2f_sms_cost"><?php echo mo2f_lt( 'Popular Supported Forms' ); ?>
910
+ <br/>
911
+ <select id="mo2f_sms" class="form-control" style="border-radius:5px;width:200px;">
912
+ <option><?php echo mo2f_lt( 'Woocommerce' ); ?></option>
913
+ <option><?php echo mo2f_lt( 'Ultimate member' ); ?></option>
914
+ <option><?php echo mo2f_lt( 'Restrict Content Pro' ); ?></option>
915
+ <option><?php echo mo2f_lt( 'User Registration' ); ?></option>
916
+ <option><?php echo mo2f_lt( 'BBPress' ); ?></option>
917
+ <option><?php echo mo2f_lt( 'Member Press' ); ?></option>
918
+ <option><?php echo mo2f_lt( 'DigiMember' ); ?></option>
919
+ <option><?php echo mo2f_lt( 'Theme My Login' ); ?></option>
920
+ <option><?php echo mo2f_lt( 'Admin Custom Login' ); ?></option>
921
+ <option><?php echo mo2f_lt( 'Registrationmagic | Custom Registration Form and User Login' ); ?></option>
922
+ <option><?php echo mo2f_lt( 'Users Ultra registration form' ); ?></option>
923
+ <option style="color: red;"><?php echo mo2f_lt( 'If your forms are not included, this does not mean that they are not supported' ); ?></option>
924
+
925
+ </select><br>
926
+ <span style="color: black;"><b>[ Contact Us for Custom Forms ]</b></span>
927
+ </p>
928
+
929
+ <?php
930
+ }
931
  function mo2f_yearly_standard_pricing_plan() {
932
  ?>
933
 
1017
  </p>
1018
  <?php
1019
  }
1020
+ function mo2f_yearly_custom_login_forms_pricing() {
1021
+ ?>
1022
+ <p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
1023
+ id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
1024
+ <select id="mo2f_yearly" class="form-control" style="border-radius:5px;width:200px;">
1025
+ <option> <?php echo mo2f_lt( '1 site - $120 per year' ); ?> </option>
1026
+ <option> <?php echo mo2f_lt( 'Upto 5 sites - $249 per year' ); ?> </option>
1027
+ <option> <?php echo mo2f_lt( 'Upto 10 sites - $379 per year' ); ?> </option>
1028
+ <option> <?php echo mo2f_lt( '10+ sites - contact us' ); ?> </option>
1029
+ </select>
1030
+ </p>
1031
+ <?php
1032
+ }
1033
  function mo2f_waf_yearly_standard_pricing() {
1034
  ?>
1035
  <p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
1090
  <div><br></div>
1091
  <?php
1092
  }
1093
+ function mo2f_addon_features_on_hover($mo2f_addon_feature)
1094
+ {
1095
+ return '<div class="mo2f_tooltip_addon">
1096
+ <span class="dashicons dashicons-info mo2f_info_tab"></span>
1097
+ <span class="mo2f_tooltiptext_addon" >'. $mo2f_addon_feature .'
1098
+ </span>
1099
+ </div>';
1100
+ }
1101
  ?>
1102
 
1103
  <script type="text/javascript">
1110
 
1111
  <script type="text/javascript">
1112
 
1113
+ function mo2fa_show_detail_features()
1114
+ {
1115
+ jQuery("#mo2f_features_id").hide(1500);
1116
+
1117
+ document.getElementById("mo2f_show_features").style.display = "none";
1118
+ document.getElementById("mo2f_hide_features").style.display = "block";
1119
+
1120
+ }
1121
+
1122
+ function mo2fa_hide_detail_features()
1123
+ {
1124
+ jQuery("#mo2f_features_id").show(1500);
1125
+
1126
+ document.getElementById("mo2f_show_features").style.display = "block";
1127
+ document.getElementById("mo2f_hide_features").style.display = "none";
1128
 
1129
+ }
1130
+ function mo2fa_show_2fa_lite_detail_features()
1131
+ {
1132
+ jQuery("#mo2f_2fa_lite_features_id").hide(1500);
1133
 
1134
+ document.getElementById("mo2f_show_2fa_lite_features").style.display = "none";
1135
+ document.getElementById("mo2f_hide_2fa_lite_features").style.display = "block";
1136
+
1137
+ }
1138
 
1139
+ function mo2fa_hide_2fa_lite_detail_features()
1140
+ {
1141
+ jQuery("#mo2f_2fa_lite_features_id").show(1500);
1142
 
1143
+ document.getElementById("mo2f_show_2fa_lite_features").style.display = "block";
1144
+ document.getElementById("mo2f_hide_2fa_lite_features").style.display = "none";
1145
 
1146
+ }
1147
  function mo2f_payment_option()
1148
  {
1149
  document.getElementById('mo2f_payment_option').scrollIntoView();
1175
  document.getElementById('mo_2fa_features_only').style.display = "none";
1176
  document.getElementById('mo_ns_features_only').style.display = "none";
1177
  document.getElementById('mo2f_features_id').style.display = "none";
1178
+ document.getElementById('mo_addon_features_only').style.display = "none";
1179
  document.getElementById('mo2f_2fa_lite_features_id').style.display = "block";
1180
  document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "none";
1181
  document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "block";
1182
  document.getElementById('mo_ns_licensing_plans_title').style.display = "block";
1183
  document.getElementById('mo_ns_licensing_plans_title1').style.display = "none";
1184
  document.getElementById('mo_2fa_licensing_plans_title').style.display = "block";
1185
+ document.getElementById('mo_2fa_licensing_plans_title1').style.display = "none";
1186
+ document.getElementById('mo_addon_licensing_plans_title').style.display = "none";
1187
+ document.getElementById('mo_addon_licensing_plans_title1').style.display = "block";
1188
+
1189
  }
1190
  function mo_2fa_show_plans()
1191
  {
1192
  document.getElementById('mo_2fa_features_only').style.display = "block";
1193
  document.getElementById('mo_ns_features_only').style.display = "none";
1194
  document.getElementById('mo2f_features_id').style.display = "block";
1195
+ document.getElementById('mo_addon_features_only').style.display = "none";
1196
  document.getElementById('mo2f_2fa_lite_features_id').style.display = "none";
1197
  document.getElementById('mo_2fa_lite_features_only').style.display = "none";
1198
  document.getElementById('mo_ns_licensing_plans_title').style.display = "block";
1200
  document.getElementById('mo_2fa_licensing_plans_title').style.display = "none";
1201
  document.getElementById('mo_2fa_licensing_plans_title1').style.display = "block";
1202
  document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "block";
1203
+ document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "none";
1204
+ document.getElementById('mo_addon_licensing_plans_title').style.display = "none";
1205
+ document.getElementById('mo_addon_licensing_plans_title1').style.display = "block";
1206
+
1207
  }
1208
  function mo_ns_show_plans()
1209
  {
1210
  document.getElementById('mo_2fa_features_only').style.display = "none";
1211
  document.getElementById('mo_ns_features_only').style.display = "block";
1212
  document.getElementById('mo2f_features_id').style.display = "none";
1213
+ document.getElementById('mo_addon_features_only').style.display = "none";
1214
  document.getElementById('mo2f_2fa_lite_features_id').style.display = "none";
1215
  document.getElementById('mo_2fa_lite_features_only').style.display = "none";
1216
  document.getElementById('mo_2fa_licensing_plans_title').style.display = "block";
1219
  document.getElementById('mo_ns_licensing_plans_title').style.display = "none";
1220
  document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "block";
1221
  document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "none";
1222
+ document.getElementById('mo_addon_licensing_plans_title').style.display = "none";
1223
+ document.getElementById('mo_addon_licensing_plans_title1').style.display = "block";
1224
+
1225
+ }
1226
+ function mo_addon_show_plans()
1227
+ {
1228
+ document.getElementById('mo_addon_features_only').style.display = "block";
1229
+ document.getElementById('mo_2fa_features_only').style.display = "none";
1230
+ document.getElementById('mo_ns_features_only').style.display = "none";
1231
+ document.getElementById('mo2f_features_id').style.display = "none";
1232
+ document.getElementById('mo_addon_licensing_plans_title').style.display = "block";
1233
+ document.getElementById('mo_addon_licensing_plans_title1').style.display = "none";
1234
+ document.getElementById('mo_ns_licensing_plans_title').style.display = "block";
1235
+ document.getElementById('mo_ns_licensing_plans_title1').style.display = "none";
1236
+ document.getElementById('mo_2fa_licensing_plans_title').style.display = "block";
1237
+ document.getElementById('mo_2fa_licensing_plans_title1').style.display = "none";
1238
+ document.getElementById('mo2f_2fa_lite_features_id').style.display = "none";
1239
+ document.getElementById('mo_2fa_lite_features_only').style.display = "none";
1240
+ document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "block";
1241
+ document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "none";
1242
+
1243
  }
1244
  </script>
miniorange-2-factor-authentication/views/upgrade_2fa.php ADDED
@@ -0,0 +1,603 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ global $Mo2fdbQueries;
3
+ $user = wp_get_current_user();
4
+ $is_NC = get_option( 'mo2f_is_NC' );
5
+
6
+ $is_customer_registered = $Mo2fdbQueries->get_user_detail( 'user_registration_with_miniorange', $user->ID ) == 'SUCCESS' ? true : false;
7
+
8
+ $mo2f_feature_set = array(
9
+ "Authentication Methods",
10
+ "Language Translation Support",
11
+ "Password Less Login",
12
+ "Backup",
13
+ "Multi-Site Support",
14
+ "User role based redirection after Login",
15
+ "Add custom Security Questions (KBA)",
16
+ "Customize name in Google Authenticator app",
17
+ "Brute Force Protection",
18
+ "Blocking IP",
19
+ "Monitoring",
20
+ "Strong Password",
21
+ "File Protection",
22
+ "2FA for specific User Roles",
23
+ "2FA for specific Users",
24
+ "Choose specific authentication methods",
25
+ "Force Two Factor for users",
26
+ "Email Verification during 2FA Registration",
27
+ "Enable Security Questions as backup",
28
+ "App Specific Password from mobile Apps",
29
+ "Support"
30
+ );
31
+
32
+ $mo2f_feature_description_set = array(
33
+ "You can translate the plugin in a language of your choice",
34
+ "After a valid username is entered, the 2FA prompt will be directly displayed",
35
+ "By using backup you can restore the plugin settings",
36
+ "Two Factor premium plugin works on both single site and multisite environment",
37
+ "According to user's role the particular user will be redirected to specific location",
38
+ "Add your own questions for your users.",
39
+ "You can customize the account name in Google Authenticator app on mobile",
40
+ "This protects your site from attacks which tries to gain access / login to a site with random usernames and passwords.",
41
+ "Allows you to manually/automatically block any IP address that seems malicious from accessing your website. ",
42
+ "Monitor activity of your users. For ex:- login activity, error report",
43
+ "Increase security by enforcing users to set a strong password.",
44
+ "Allows you to protect sensitive files through the malware scanner and other security features.",
45
+ "Enable and disable 2fa for users based on roles(Like Administrator, Editor and others). It works for custom roles too.",
46
+ "Enable or disable 2fa for a particular user.",
47
+ "You can choose specific authentication methods for specific user roles",
48
+ "Enforce user to setup 2nd factor during registration",
49
+ "One time Email Verification for Users during 2FA Registration",
50
+ "Allows for login using security questions in cases where physical access to the mobile isn’t possible",
51
+ "For login into WordPress sites through mobile, a mobile specific password can be set",
52
+ "24/7 support is available."
53
+ );
54
+ $two_factor_methods = array(
55
+ "miniOrange QR Code Authentication",
56
+ "miniOrange Soft Token",
57
+ "miniOrange Push Notification",
58
+ "Google Authenticator",
59
+ "Security Questions",
60
+ "Authy Authenticator",
61
+ "Email Verification",
62
+ "OTP Over SMS",
63
+ "OTP Over Email",
64
+ "OTP Over SMS and Email",
65
+ "Hardware Token"
66
+ );
67
+
68
+ $two_factor_methods_EC = array_slice( $two_factor_methods, 0, 7 );
69
+
70
+ $mo2f_feature_set_with_plans_NC = array(
71
+ "Authentication Methods" => array(
72
+ array_slice( $two_factor_methods, 0, 5 ),
73
+ array_slice( $two_factor_methods, 0, 10 ),
74
+ array_slice( $two_factor_methods, 0, 11 ),
75
+ array_slice( $two_factor_methods, 0, 11 )
76
+ ),
77
+
78
+
79
+ "Language Translation Support" => array( true, true, true, true ),
80
+ "Password Less Login" => array( false, true, true, true ),
81
+ "Backup" => array( false, true, true, true),
82
+ "Multi-Site Support" => array( false, true, true, true ),
83
+ "User role based redirection after Login" => array( false, true, true, true ),
84
+ "Add custom Security Questions (KBA)" => array( false, true, true, true ),
85
+ "Add custom Security Questions (KBA)" => array( false, true, true, true ),
86
+ "Customize name in Google Authenticator app" => array( false, true, true, true ),
87
+ "Brute Force Protection" => array( true, false, false, true ),
88
+ "Blocking IP" => array( true, false, false, true ),
89
+ "Monitoring" => array( true, false, false, true ),
90
+ "Strong Password" => array( true, false, false, true ),
91
+ "File Protection" => array( true, false, false, true ),
92
+ "2FA for specific User Roles" => array( false, true, true, true ),
93
+ "2FA for specific Users" => array( false, false, true, true ),
94
+ "Choose specific authentication methods" => array( false, true, true, true ),
95
+ "Force Two Factor for users" => array( false, false, true, true ),
96
+ "Email Verification during 2FA Registration" => array( false, false, true, true ),
97
+ "Enable Security Questions as backup" => array( false, false, true, true ),
98
+ "App Specific Password from mobile Apps" => array( false, false, true, true ),
99
+ "Support" => array(
100
+ array("Basic Support by Email"),
101
+ array("Priority Support by Email"),
102
+ array( "Priority Support by Email", "Priority Support with GoTo meetings" ),
103
+ array( "Priority Support by Email", "Priority Support with GoTo meetings" )
104
+ ),
105
+
106
+ );
107
+
108
+ $mo2f_feature_set_with_plans_EC = array(
109
+ "Authentication Methods" => array(
110
+ array_slice( $two_factor_methods, 0, 8 ),
111
+ array_slice( $two_factor_methods, 0, 10 ),
112
+ array_slice( $two_factor_methods, 0, 11 ),
113
+ array_slice( $two_factor_methods, 0, 11 )
114
+ ),
115
+
116
+ "Language Translation Support" => array( true, true, true, true ),
117
+ "Password Less Login" => array( true, true, true, true ),
118
+ "Backup" => array( false, true, true, true),
119
+ "Multi-Site Support" => array( false, true, true, true ),
120
+ "Brute Force Protection" => array( true, false, false, true ),
121
+ "Blocking IP" => array( true, false, false, true ),
122
+ "Monitoring" => array( true, false, false, true ),
123
+ "Strong Password" => array( true, false, false, true ),
124
+ "File Protection" => array( true, false, false, true ),
125
+ "User role based redirection after Login" => array( false, true, true, true ),
126
+ "Add custom Security Questions (KBA)" => array( false, true, true, true ),
127
+ "Customize name in Google Authenticator app" => array( false, true, true, true ),
128
+ "2FA for specific User Roles" => array( false, false, true, true ),
129
+ "2FA for specific Users" => array( false, false, true, true ),
130
+ "Choose specific authentication methods" => array( false, false, true, true ),
131
+ "Force Two Factor for users" => array( false, true, true, true ),
132
+ "Email Verification during 2FA Registration" => array( false, false, true, true ),
133
+ "Enable Security Questions as backup" => array( false, false, true, true ),
134
+ "App Specific Password from mobile Apps" => array( false, false, true, true ),
135
+ "Support" => array(
136
+ array("Basic Support by Email"),
137
+ array("Priority Support by Email"),
138
+ array( "Priority Support by Email", "Priority Support with GoTo meetings" ),
139
+ array( "Priority Support by Email", "Priority Support with GoTo meetings" )
140
+ ),
141
+
142
+ );
143
+
144
+ $mo2f_addons = array(
145
+ "RBA & Trusted Devices Management Add-on",
146
+ "Personalization Add-on",
147
+ "Short Codes Add-on"
148
+ );
149
+ $mo2f_addons_plan_name = array(
150
+ "RBA & Trusted Devices Management Add-on" => "wp_2fa_addon_rba",
151
+ "Personalization Add-on" => "wp_2fa_addon_personalization",
152
+ "Short Codes Add-on" => "wp_2fa_addon_shortcode"
153
+ );
154
+
155
+
156
+ $mo2f_addons_with_features = array(
157
+ "Personalization Add-on" => array(
158
+ "Custom UI of 2FA popups",
159
+ "Custom Email and SMS Templates",
160
+ "Customize 'powered by' Logo",
161
+ "Customize Plugin Icon",
162
+ "Customize Plugin Name",
163
+
164
+ ),
165
+ "RBA & Trusted Devices Management Add-on" => array(
166
+ "Remember Device",
167
+ "Set Device Limit for the users to login",
168
+ "IP Restriction: Limit users to login from specific IPs"
169
+ ),
170
+ "Short Codes Add-on" => array(
171
+ "Option to turn on/off 2-factor by user",
172
+ "Option to configure the Google Authenticator and Security Questions by user",
173
+ "Option to 'Enable Remember Device' from a custom login form",
174
+ "On-Demand ShortCodes for specific fuctionalities ( like for enabling 2FA for specific pages)"
175
+ )
176
+ );
177
+ ?>
178
+ <div class="mo2f_licensing_plans" style="border:0px;width: 98%">
179
+
180
+ <table class="table mo_table-bordered mo_table-striped" style="width: 100%">
181
+ <thead>
182
+ <tr>
183
+ <th class="mo2f_2fa_lite_plan_title"><h1 class="mo2f_white_color_style">Free</h1></th>
184
+ <th></th>
185
+ <th class="mo2f_2fa_lite_plan_title"><h1 class="mo2f_white_color_style">Standard</h1></th>
186
+ <th></th>
187
+ <th class="mo2f_2fa_lite_plan_title"><h1 class="mo2f_white_color_style">Premium</h1></th>
188
+ <th></th>
189
+ <th class="mo2f_2fa_lite_plan_title"><h1 class="mo2f_white_color_style">Enterprise</h1></th>
190
+ </tr>
191
+
192
+
193
+ </thead>
194
+ <tbody class="mo_align-center mo-fa-icon">
195
+ <?php for ( $i = 0; $i < count( $mo2f_feature_set ); $i ++ ) { ?>
196
+ <tr>
197
+ <?php
198
+ $feature_set = $mo2f_feature_set[ $i ];
199
+
200
+ if ( $is_NC ) {
201
+ $f_feature_set_with_plan = $mo2f_feature_set_with_plans_NC[ $feature_set ];
202
+ } else {
203
+ $f_feature_set_with_plan = $mo2f_feature_set_with_plans_EC[ $feature_set ];
204
+ }
205
+ ?>
206
+ <td class="mo2f_padding_style"><?php
207
+ if ($feature_set == "Authentication Methods" || $feature_set == "Support") {
208
+ ?>
209
+ <div>
210
+ <?php
211
+ }
212
+ else
213
+ {
214
+ ?>
215
+ <div style="float: left;">
216
+ <?php
217
+ }
218
+ if ( is_array( $f_feature_set_with_plan[0] ) ) {
219
+ echo mo2f_create_li( $f_feature_set_with_plan[0] );
220
+ } else {
221
+ ?>
222
+ <div>
223
+ <?php
224
+ if ( gettype( $f_feature_set_with_plan[0] ) == "boolean" ) {
225
+ echo mo2f_get_binary_equivalent( $f_feature_set_with_plan[0] );
226
+ } else {
227
+ echo $f_feature_set_with_plan[0];
228
+ }
229
+ echo $feature_set;
230
+ ?>
231
+ </div></div>
232
+ <?php
233
+ if ($feature_set == "Backup") {
234
+ ?>
235
+ <span style="float: left;">&nbsp;method</span>
236
+ <?php
237
+ }
238
+ ?>
239
+ <div style="float: right;">
240
+ <?php
241
+ if ($feature_set == "Backup") {
242
+
243
+ echo mo2f_features_on_hover("Use Security Questions, OTP Over Email, Backup Codes as a backup method");
244
+ }
245
+ else
246
+ {
247
+ echo mo2f_features_on_hover($mo2f_feature_description_set[$i-1]);
248
+ }
249
+ ?></div><?php
250
+ } ?>
251
+ </td>
252
+ <td class="mo2f_black_background"></td>
253
+ <td class="mo2f_padding_style"><?php
254
+ if ($feature_set == "Authentication Methods" || $feature_set == "Support") {
255
+ ?>
256
+ <div>
257
+ <?php
258
+ }
259
+ else
260
+ {
261
+ ?>
262
+ <div style="float: left;">
263
+ <?php
264
+ }
265
+ if($feature_set != "Authentication Methods")
266
+ {
267
+ if ( is_array( $f_feature_set_with_plan[1] ) ) {
268
+ echo mo2f_create_li( $f_feature_set_with_plan[1] );
269
+ } else {
270
+ if ( gettype( $f_feature_set_with_plan[1] ) == "boolean" ) {
271
+ echo mo2f_get_binary_equivalent( $f_feature_set_with_plan[1] );
272
+ } else {
273
+ echo $f_feature_set_with_plan[1];
274
+ }
275
+ echo $feature_set;
276
+ ?>
277
+ </div>
278
+ <?php
279
+ if ($feature_set == "Backup") {
280
+ ?>
281
+ <span style="float: left;">:- Security Questions (KBA)</span>
282
+ <?php
283
+ }
284
+ ?>
285
+ <div style="float: right;">
286
+ <?php
287
+ if ($feature_set == "Backup") {
288
+ echo mo2f_features_on_hover("Security Questions is available as a backup method");
289
+ }
290
+ else
291
+ {
292
+ echo mo2f_features_on_hover($mo2f_feature_description_set[$i-1]);
293
+ }
294
+ ?></div><?php
295
+ }
296
+ }
297
+ if ($feature_set == "Authentication Methods") {
298
+ $feature_array_1[] = array_slice( $two_factor_methods, 0, 10 );
299
+ for ($k=0; $k < 10 ; $k++)
300
+ {
301
+ if($is_NC)
302
+ {
303
+ if ($k<5)
304
+ {
305
+ echo $feature_array_1[0][$k];
306
+ ?><br><?php
307
+ }
308
+ else
309
+ {
310
+ ?><b><?php
311
+ echo $feature_array_1[0][$k];
312
+ ?></b><br><?php
313
+ }
314
+ }
315
+ else
316
+ {
317
+ if ($k<8)
318
+ {
319
+ echo $feature_array_1[0][$k];
320
+ ?><br><?php
321
+ }
322
+ else
323
+ {
324
+ ?><b><?php
325
+ echo $feature_array_1[0][$k];
326
+ ?></b><br><?php
327
+ }
328
+ }
329
+ }
330
+ ?>
331
+ <?php
332
+ }
333
+ ?>
334
+ </div>
335
+ </td>
336
+ <td class="mo2f_black_background"></td>
337
+ <td class="mo2f_padding_style"><?php
338
+ if ($feature_set == "Authentication Methods" || $feature_set == "Support") {
339
+ ?>
340
+ <div>
341
+ <?php
342
+ }
343
+ else
344
+ {
345
+ ?>
346
+ <div style="float: left;">
347
+ <?php
348
+ }
349
+ if($feature_set != "Authentication Methods")
350
+ {
351
+ if ( is_array( $f_feature_set_with_plan[2] ) ) {
352
+ echo mo2f_create_li( $f_feature_set_with_plan[2] );
353
+ } else {
354
+ if ( gettype( $f_feature_set_with_plan[2] ) == "boolean" ) {
355
+ echo mo2f_get_binary_equivalent( $f_feature_set_with_plan[2] );
356
+ } else {
357
+ echo $f_feature_set_with_plan[2];
358
+ }
359
+ echo $feature_set;
360
+ ?>
361
+ </div>
362
+ <?php
363
+ if ($feature_set == "Backup") {
364
+ ?>
365
+ <span style="float: left;">:- KBA, OTP Over Email, Backup Codes</span>
366
+ <?php
367
+ }
368
+ ?>
369
+ <div style="float: right;">
370
+ <?php
371
+ if ($feature_set == "Backup") {
372
+ echo mo2f_features_on_hover("Security Questions, OTP Over Email, Backup Codes are available as a backup method");
373
+ }
374
+ else
375
+ {
376
+ echo mo2f_features_on_hover($mo2f_feature_description_set[$i-1]);
377
+ }
378
+ ?></div><?php
379
+ }
380
+ }
381
+ if ($feature_set == "Authentication Methods") {
382
+ $feature_array_3[] = array_slice( $two_factor_methods, 0, 11 );
383
+ for ($k=0; $k < 11 ; $k++)
384
+ {
385
+ if ($is_NC)
386
+ {
387
+ if ($k<5)
388
+ {
389
+ echo $feature_array_3[0][$k];
390
+ ?><br><?php
391
+ }
392
+ else
393
+ {
394
+ ?><b><?php
395
+ echo $feature_array_3[0][$k];
396
+ ?></b><br><?php
397
+ }
398
+ }
399
+ else
400
+ {
401
+ if ($k<8)
402
+ {
403
+ echo $feature_array_3[0][$k];
404
+ ?><br><?php
405
+ }
406
+ else
407
+ {
408
+ ?><b><?php
409
+ echo $feature_array_3[0][$k];
410
+ ?></b><br><?php
411
+ }
412
+ }
413
+ }
414
+ ?>
415
+ <?php
416
+ }?></div>
417
+ </td>
418
+ <td class="mo2f_black_background"></td>
419
+ <td class="mo2f_padding_style"><?php
420
+ if ($feature_set == "Authentication Methods" || $feature_set == "Support") {
421
+ ?>
422
+ <div>
423
+ <?php
424
+ }
425
+ else
426
+ {
427
+ ?>
428
+ <div style="float: left;">
429
+ <?php
430
+ }
431
+ if($feature_set != "Authentication Methods")
432
+ {
433
+ if ( is_array( $f_feature_set_with_plan[3] ) ) {
434
+ echo mo2f_create_li( $f_feature_set_with_plan[3] );
435
+ } else {
436
+ if ( gettype( $f_feature_set_with_plan[3] ) == "boolean" ) {
437
+ echo mo2f_get_binary_equivalent( $f_feature_set_with_plan[3] );
438
+ } else {
439
+ echo $f_feature_set_with_plan[3];
440
+ }
441
+ echo $feature_set;
442
+ ?>
443
+ </div>
444
+ <?php
445
+ if ($feature_set == "Backup") {
446
+ ?>
447
+ <span style="float: left;">:- KBA, OTP Over Email, Backup Codes</span>
448
+ <?php
449
+ }
450
+ ?>
451
+ <div style="float: right;">
452
+ <?php
453
+ if ($feature_set == "Backup") {
454
+ echo mo2f_features_on_hover("Security Questions, OTP Over Email, Backup Codes are available as a backup method");
455
+ }
456
+ else
457
+ {
458
+ echo mo2f_features_on_hover($mo2f_feature_description_set[$i-1]);
459
+ }
460
+ ?></div><?php
461
+ }
462
+ }
463
+ if ($feature_set == "Authentication Methods") {
464
+ $feature_array_4[] = array_slice( $two_factor_methods, 0, 11 );
465
+ for ($k=0; $k < 11 ; $k++)
466
+ {
467
+ if ($is_NC)
468
+ {
469
+ if ($k<5)
470
+ {
471
+ echo $feature_array_4[0][$k];
472
+ ?><br><?php
473
+ }
474
+ else
475
+ {
476
+ ?><b><?php
477
+ echo $feature_array_4[0][$k];
478
+ ?></b><br><?php
479
+ }
480
+ }
481
+ else
482
+ {
483
+ if ($k<8)
484
+ {
485
+ echo $feature_array_4[0][$k];
486
+ ?><br><?php
487
+ }
488
+ else
489
+ {
490
+ ?><b><?php
491
+ echo $feature_array_4[0][$k];
492
+ ?></b><br><?php
493
+ }
494
+ }
495
+ }
496
+ ?>
497
+ <?php
498
+ }?></div>
499
+ </td>
500
+ </tr>
501
+ <?php } ?>
502
+
503
+ <tr>
504
+ <td><b>Add-Ons</b></td><td class="mo2f_black_background"></td>
505
+ <?php if ( $is_NC ) { ?>
506
+ <td><b>Purchase Separately</b></td><td class="mo2f_black_background"></td>
507
+ <?php } else { ?>
508
+ <td><b>Purchase Separately</b></td><td class="mo2f_black_background"></td>
509
+ <?php } ?>
510
+ <td><b>Included</b></td><td class="mo2f_black_background"></td>
511
+ <td><b>Included</b></td>
512
+ </tr>
513
+ <?php for ( $i = 0; $i < count( $mo2f_addons ); $i ++ ) { ?>
514
+ <tr>
515
+ <td><?php echo $mo2f_addons[ $i ]; ?> <?php for ( $j = 0; $j < $i + 1; $j ++ ) { ?>*<?php } ?>
516
+ </td><td class="mo2f_black_background"></td>
517
+ <?php if ( $is_NC ) { ?>
518
+ <td>
519
+ <button class="mo_wpns_button mo_wpns_button1" style="cursor:pointer"
520
+ onclick="mo2f_upgradeform('<?php echo $mo2f_addons_plan_name[ $mo2f_addons[ $i ] ]; ?>')" <?php echo $is_customer_registered ? "" : " disabled " ?> >
521
+ Purchase
522
+ </button>
523
+
524
+ </td><td class="mo2f_black_background"></td>
525
+ <?php } else { ?>
526
+ <td>Contact Us</td><td class="mo2f_black_background"></td>
527
+ <?php } ?>
528
+
529
+ <td><div style="color:#20b2aa;font-size: large;">✔</div></td><td class="mo2f_black_background"></td>
530
+ <td><div style="color:#20b2aa;font-size: large;">✔</div></td>
531
+ </tr>
532
+ <?php } ?>
533
+
534
+ </tbody>
535
+ </table>
536
+ <hr><br>
537
+ <div style="padding:10px;">
538
+ <?php for ( $i = 0; $i < count( $mo2f_addons ); $i ++ ) {
539
+ $f_feature_set_of_addons = $mo2f_addons_with_features[ $mo2f_addons[ $i ] ];
540
+ for ( $j = 0; $j < $i + 1; $j ++ ) { ?>*<?php } ?>
541
+ <b><?php echo $mo2f_addons[ $i ]; ?> Features</b>
542
+ <br>
543
+ <ol>
544
+ <?php for ( $k = 0; $k < count( $f_feature_set_of_addons ); $k ++ ) { ?>
545
+ <li><?php echo $f_feature_set_of_addons[ $k ]; ?></li>
546
+ <?php } ?>
547
+ </ol>
548
+
549
+ <hr><br>
550
+ <?php } ?>
551
+ <b>**** SMS Charges</b>
552
+ <p><?php echo mo2f_lt( 'If you wish to choose OTP Over SMS / OTP Over SMS and Email as your authentication method,
553
+ SMS transaction prices & SMS delivery charges apply and they depend on country. SMS validity is for lifetime.' ); ?></p>
554
+ <hr>
555
+ <br>
556
+ <div>
557
+ <h2>Note</h2>
558
+ <ol class="mo2f_licensing_plans_ol">
559
+ <li><?php echo mo2f_lt( 'The plugin works with many of the default custom login forms (like Woocommerce / Theme My Login), however if you face any issues with your custom login form, contact us and we will help you with it.' ); ?></li>
560
+ <li><?php echo mo2f_lt( 'There is no license key required to activate the Standard/Premium Plugins. You will have to just login with the miniOrange Account you used to make the purchase.' ); ?>
561
+
562
+ </li>
563
+ </ol>
564
+ </div>
565
+
566
+ <br>
567
+ <hr>
568
+
569
+
570
+
571
+ <style>#mo2f_support_table {
572
+ display: none;
573
+ }
574
+
575
+ </style>
576
+ </div>
577
+ </div>
578
+
579
+ <?php
580
+ function mo2f_create_li( $mo2f_array ) {
581
+ $html_ol = '<ul>';
582
+ foreach ( $mo2f_array as $element ) {
583
+ $html_ol .= "<li>" . $element . "</li>";
584
+ }
585
+ $html_ol .= '</ul>';
586
+
587
+ return $html_ol;
588
+ }
589
+ function mo2f_get_binary_equivalent( $mo2f_var ) {
590
+ switch ( $mo2f_var ) {
591
+ case 1:
592
+ return "<div style='color: #20b2aa;font-size: large;float:left;margin:0px 5px;'>✔</div>";
593
+ case 0:
594
+ return "<div style='color: red;font-size: x-large;float:left;margin:0px 5px;'>×</div>";
595
+ default:
596
+ return $mo2f_var;
597
+ }
598
+ }
599
+
600
+ function mo2f_features_on_hover( $mo2f_var ) {
601
+
602
+ return '<div class="mo2f_tooltip"><span class="dashicons dashicons-info mo2f_info_tab"></span><br><span class="mo2f_tooltiptext" style="margin-left: -1089%;">'. $mo2f_var .'</span>';
603
+ }
{views → miniorange-2-factor-authentication/views}/upgrade_2fa_lite.php RENAMED
@@ -9,11 +9,11 @@
9
  "Authentication Methods",
10
  "Language Translation Support",
11
  "Password Less Login",
12
- "Backup Methods",
13
  "Multi-Site Support",
14
  "User role based redirection after Login",
15
  "Add custom Security Questions (KBA)",
16
- "Customize account name in Google Authenticator app",
17
  "Brute Force Protection",
18
  "Blocking IP",
19
  "Monitoring",
@@ -23,8 +23,8 @@
23
  "2FA for specific Users",
24
  "Choose specific authentication methods",
25
  "Force Two Factor for users",
26
- "One Time Email Verification for Users during 2FA Registration",
27
- "Enable Security Questions as backup",
28
  "App Specific Password from mobile Apps",
29
  "Support"
30
  );
@@ -50,37 +50,35 @@
50
  "Authentication Methods" => array(
51
  array_slice( $two_factor_methods, 3, 3 ),
52
  array_slice( $two_factor_methods, 3, 5 ),
 
53
  array_slice( $two_factor_methods, 3, 5 )
54
  ),
55
 
56
 
57
- "Language Translation Support" => array( true, true, true ),
58
- "Password Less Login" => array( false, true, true ),
59
- "Backup Methods" => array(
60
- array("Backup Method:- None"),
61
- array( " Backup Method:- Security Questions"),
62
- array( "Backup Method:- Security Questions, OTP Over Email, Backup Codes" )
63
- ),
64
- "Multi-Site Support" => array( false, true, true ),
65
- "User role based redirection after Login" => array( false, true, true ),
66
- "Add custom Security Questions (KBA)" => array( false, true, true ),
67
- "Add custom Security Questions (KBA)" => array( false, true, true ),
68
- "Customize account name in Google Authenticator app" => array( false, true, true ),
69
- "Brute Force Protection" => array( true, false, false ),
70
- "Blocking IP" => array( true, false, false ),
71
- "Monitoring" => array( true, false, false ),
72
- "Strong Password" => array( true, false, false ),
73
- "File Protection" => array( true, false, false ),
74
- "2FA for specific User Roles" => array( false, false, true ),
75
- "2FA for specific Users" => array( false, false, true ),
76
- "Choose specific authentication methods" => array( false, false, true ),
77
- "Force Two Factor for users" => array( false, false, true ),
78
- "One Time Email Verification for Users during 2FA Registration" => array( false, false, true ),
79
- "Enable Security Questions as backup" => array( false, false, true ),
80
- "App Specific Password from mobile Apps" => array( false, false, true ),
81
  "Support" => array(
82
  array("Basic Support by Email"),
83
  array("Priority Support by Email"),
 
84
  array( "Priority Support by Email", "Priority Support with GoTo meetings" )
85
  ),
86
 
@@ -93,37 +91,55 @@
93
  array_slice( $two_factor_methods, 3, 5 )
94
  ),
95
 
96
- "Language Translation Support" => array( true, true, true ),
97
- "Password Less Login" => array( true, true, true ),
98
- "Backup Methods" => array(
99
- array( "Backup Method:- None"),
100
- array( "Backup Method:- Security Questions"),
101
- array( "Backup Method:- Security Questions, OTP Over Email, Backup Codes" )
102
- ),
103
- "Multi-Site Support" => array( false, true, true ),
104
- "Brute Force Protection" => array( true, false, false ),
105
- "Blocking IP" => array( true, false, false ),
106
- "Monitoring" => array( true, false, false ),
107
- "Strong Password" => array( true, false, false ),
108
- "File Protection" => array( true, false, false ),
109
- "User role based redirection after Login" => array( false, true, true ),
110
- "Add custom Security Questions (KBA)" => array( false, true, true ),
111
- "Customize account name in Google Authenticator app" => array( false, true, true ),
112
- "2FA for specific User Roles" => array( false, false, true ),
113
- "2FA for specific Users" => array( false, false, true ),
114
- "Choose specific authentication methods" => array( false, false, true ),
115
- "Force Two Factor for users" => array( false, false, true ),
116
- "One Time Email Verification for Users during 2FA Registration" => array( false, false, true ),
117
- "Enable Security Questions as backup" => array( false, false, true ),
118
- "App Specific Password from mobile Apps" => array( false, false, true ),
119
  "Support" => array(
120
  array("Basic Support by Email"),
121
  array("Priority Support by Email"),
 
122
  array( "Priority Support by Email", "Priority Support with GoTo meetings" )
123
  ),
124
 
125
  );
126
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  $mo2f_addons = array(
128
  "RBA & Trusted Devices Management Add-on",
129
  "Personalization Add-on",
@@ -160,13 +176,17 @@
160
  ?>
161
  <div class="mo2f_licensing_plans" style="border:0px;width: 98%">
162
 
163
- <table class="table mo_table-bordered mo_table-striped" style="width: 100%">
164
- <thead>
165
- <tr>
166
- <th style="background-color: #20b2aa;border: 2px solid #20b2aa;width: 33%"><h1 style="color: white;">Free</h1></th>
167
- <th style="background-color: #20b2aa;border: 2px solid #20b2aa;"><h1 style="color: white;">Standard</h1></th>
168
- <th style="background-color: #20b2aa;border: 2px solid #20b2aa;"><h1 style="color: white;">Premium</h1></th>
169
- </tr>
 
 
 
 
170
 
171
 
172
  </thead>
@@ -182,8 +202,8 @@
182
  $f_feature_set_with_plan = $mo2f_feature_set_with_plans_EC[ $feature_set ];
183
  }
184
  ?>
185
- <td><?php
186
- if ($feature_set == "Authentication Methods" || $feature_set == "Backup Methods" || $feature_set == "Support") {
187
  ?>
188
  <div>
189
  <?php
@@ -195,18 +215,42 @@
195
  <?php
196
  }
197
  if ( is_array( $f_feature_set_with_plan[0] ) ) {
198
- echo mo2f_create_li( $f_feature_set_with_plan[0] );
199
  } else {
 
 
 
200
  if ( gettype( $f_feature_set_with_plan[0] ) == "boolean" ) {
201
  echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[0] );
202
  } else {
203
  echo $f_feature_set_with_plan[0];
204
  }
205
  echo $feature_set;
206
- } ?></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
207
  </td>
208
- <td><?php
209
- if ($feature_set == "Authentication Methods" || $feature_set == "Backup Methods" || $feature_set == "Support") {
 
210
  ?>
211
  <div>
212
  <?php
@@ -220,7 +264,7 @@
220
  if($feature_set != "Authentication Methods")
221
  {
222
  if ( is_array( $f_feature_set_with_plan[1] ) ) {
223
- echo mo2f_create_li( $f_feature_set_with_plan[1] );
224
  } else {
225
  if ( gettype( $f_feature_set_with_plan[1] ) == "boolean" ) {
226
  echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[1] );
@@ -228,37 +272,57 @@
228
  echo $f_feature_set_with_plan[1];
229
  }
230
  echo $feature_set;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
231
  }
232
  }
233
  if ($feature_set == "Authentication Methods") {
234
- $feature_array_1[] = array_slice( $two_factor_methods, 3, 5 );
235
  for ($k=0; $k < 5 ; $k++)
236
  {
237
  if($is_NC)
238
  {
239
  if ($k<3)
240
  {
241
- echo $feature_array_1[0][$k];
242
- ?><br><?php
 
243
  }
244
  else
245
  {
246
- ?><b><?php
247
- echo $feature_array_1[0][$k];
248
- ?></b><br><?php
249
  }
250
  }
251
  else
252
  {
253
  if ($k<4)
254
  {
255
- echo $feature_array_1[0][$k];
256
  ?><br><?php
257
  }
258
  else
259
  {
260
  ?><b><?php
261
- echo $feature_array_1[0][$k];
262
  ?></b><br><?php
263
  }
264
  }
@@ -269,8 +333,9 @@
269
  ?>
270
  </div>
271
  </td>
272
- <td><?php
273
- if ($feature_set == "Authentication Methods" || $feature_set == "Backup Methods" || $feature_set == "Support") {
 
274
  ?>
275
  <div>
276
  <?php
@@ -284,7 +349,7 @@
284
  if($feature_set != "Authentication Methods")
285
  {
286
  if ( is_array( $f_feature_set_with_plan[2] ) ) {
287
- echo mo2f_create_li( $f_feature_set_with_plan[2] );
288
  } else {
289
  if ( gettype( $f_feature_set_with_plan[2] ) == "boolean" ) {
290
  echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[2] );
@@ -292,23 +357,42 @@
292
  echo $f_feature_set_with_plan[2];
293
  }
294
  echo $feature_set;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
295
  }
296
  }
297
  if ($feature_set == "Authentication Methods") {
298
- $feature_array_1[] = array_slice( $two_factor_methods, 3, 5 );
299
  for ($k=0; $k < 5 ; $k++)
300
  {
301
  if ($is_NC)
302
  {
303
  if ($k<3)
304
  {
305
- echo $feature_array_1[0][$k];
306
  ?><br><?php
307
  }
308
  else
309
  {
310
  ?><b><?php
311
- echo $feature_array_1[0][$k];
312
  ?></b><br><?php
313
  }
314
  }
@@ -316,13 +400,95 @@
316
  {
317
  if ($k<4)
318
  {
319
- echo $feature_array_1[0][$k];
320
  ?><br><?php
321
  }
322
  else
323
  {
324
  ?><b><?php
325
- echo $feature_array_1[0][$k];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
326
  ?></b><br><?php
327
  }
328
  }
@@ -331,39 +497,48 @@
331
  <?php
332
  }?></div>
333
  </td>
334
-
335
  </tr>
336
  <?php } ?>
337
 
338
  <tr>
339
  <td><b>Add-Ons</b></td>
 
340
  <?php if ( $is_NC ) { ?>
341
  <td><b>Purchase Separately</b></td>
 
342
  <?php } else { ?>
343
  <td><b>Purchase Separately</b></td>
 
344
  <?php } ?>
345
  <td><b>Included</b></td>
 
 
346
  </tr>
347
  <?php for ( $i = 0; $i < count( $mo2f_addons ); $i ++ ) { ?>
348
  <tr>
349
  <td><?php echo $mo2f_addons[ $i ]; ?> <?php for ( $j = 0; $j < $i + 1; $j ++ ) { ?>*<?php } ?>
350
  </td>
 
351
  <?php if ( $is_NC ) { ?>
352
  <td>
353
  Contact Us
354
 
355
  </td>
 
356
  <?php } else { ?>
357
  <td>Contact Us</td>
 
358
  <?php } ?>
359
 
360
  <td><div>Contact Us</div></td>
 
 
361
  </tr>
362
  <?php } ?>
363
 
364
  </tbody>
365
  </table>
366
- <br>
367
  <div style="padding:10px;">
368
  <?php for ( $i = 0; $i < count( $mo2f_addons ); $i ++ ) {
369
  $f_feature_set_of_addons = $mo2f_addons_with_features[ $mo2f_addons[ $i ] ];
@@ -407,14 +582,27 @@
407
  </div>
408
 
409
  <?php
 
 
 
 
 
 
410
 
 
 
411
  function mo2f_get_binary_equivalent_2fa_lite( $mo2f_var ) {
412
  switch ( $mo2f_var ) {
413
  case 1:
414
- return "<div style='color: #008ec2;font-size: large;float:left;margin:0px 5px;'>✔</div>";
415
  case 0:
416
- return "<div style='color: red;font-size: large;float:left;margin:0px 5px;'>×</div>";
417
  default:
418
  return $mo2f_var;
419
  }
420
- }
 
 
 
 
 
9
  "Authentication Methods",
10
  "Language Translation Support",
11
  "Password Less Login",
12
+ "Backup",
13
  "Multi-Site Support",
14
  "User role based redirection after Login",
15
  "Add custom Security Questions (KBA)",
16
+ "Customize name in Google Authenticator app",
17
  "Brute Force Protection",
18
  "Blocking IP",
19
  "Monitoring",
23
  "2FA for specific Users",
24
  "Choose specific authentication methods",
25
  "Force Two Factor for users",
26
+ "Email Verification during 2FA Registration",
27
+ "Security Questions as backup",
28
  "App Specific Password from mobile Apps",
29
  "Support"
30
  );
50
  "Authentication Methods" => array(
51
  array_slice( $two_factor_methods, 3, 3 ),
52
  array_slice( $two_factor_methods, 3, 5 ),
53
+ array_slice( $two_factor_methods, 3, 5 ),
54
  array_slice( $two_factor_methods, 3, 5 )
55
  ),
56
 
57
 
58
+ "Language Translation Support" => array( true, true, true, true ),
59
+ "Password Less Login" => array( false, true, true, true ),
60
+ "Backup" => array( false, true, true, true),
61
+ "Multi-Site Support" => array( false, true, true, true ),
62
+ "User role based redirection after Login" => array( false, true, true, true ),
63
+ "Add custom Security Questions (KBA)" => array( false, true, true, true ),
64
+ "Add custom Security Questions (KBA)" => array( false, true, true, true ),
65
+ "Customize name in Google Authenticator app" => array( false, true, true, true ),
66
+ "Brute Force Protection" => array( true, false, false, false ),
67
+ "Blocking IP" => array( true, false, false, false ),
68
+ "Monitoring" => array( true, false, false, false ),
69
+ "Strong Password" => array( true, false, false, false ),
70
+ "File Protection" => array( true, false, false, false ),
71
+ "2FA for specific User Roles" => array( false, true, true, true ),
72
+ "2FA for specific Users" => array( false, false, true, true ),
73
+ "Choose specific authentication methods" => array( false, false, true, true ),
74
+ "Force Two Factor for users" => array( false, true, true, true ),
75
+ "Email Verification during 2FA Registration" => array( false, false, true, true ),
76
+ "Security Questions as backup" => array( false, false, true, true ),
77
+ "App Specific Password from mobile Apps" => array( false, false, true, true ),
 
 
 
 
78
  "Support" => array(
79
  array("Basic Support by Email"),
80
  array("Priority Support by Email"),
81
+ array( "Priority Support by Email", "Priority Support with GoTo meetings" ),
82
  array( "Priority Support by Email", "Priority Support with GoTo meetings" )
83
  ),
84
 
91
  array_slice( $two_factor_methods, 3, 5 )
92
  ),
93
 
94
+ "Language Translation Support" => array( true, true, true, true ),
95
+ "Password Less Login" => array( true, true, true, true ),
96
+ "Backup" => array( false, true, true, true),
97
+ "Multi-Site Support" => array( false, true, true, true ),
98
+ "Brute Force Protection" => array( true, false, false, false ),
99
+ "Blocking IP" => array( true, false, false, false ),
100
+ "Monitoring" => array( true, false, false, false ),
101
+ "Strong Password" => array( true, false, false, false ),
102
+ "File Protection" => array( true, false, false, false ),
103
+ "User role based redirection after Login" => array( false, true, true, true ),
104
+ "Add custom Security Questions (KBA)" => array( false, true, true, true ),
105
+ "Customize name in Google Authenticator app" => array( false, true, true, true ),
106
+ "2FA for specific User Roles" => array( false, true, true, true ),
107
+ "2FA for specific Users" => array( false, false, true, true ),
108
+ "Choose specific authentication methods" => array( false, false, true, true ),
109
+ "Force Two Factor for users" => array( false, true, true, true ),
110
+ "Email Verification during 2FA Registration" => array( false, false, true, true ),
111
+ "Security Questions as backup" => array( false, false, true, true ),
112
+ "App Specific Password from mobile Apps" => array( false, false, true, true ),
 
 
 
 
113
  "Support" => array(
114
  array("Basic Support by Email"),
115
  array("Priority Support by Email"),
116
+ array( "Priority Support by Email", "Priority Support with GoTo meetings" ),
117
  array( "Priority Support by Email", "Priority Support with GoTo meetings" )
118
  ),
119
 
120
  );
121
+ $mo2f_feature_description_set = array(
122
+ "You can translate the plugin in a language of your choice",
123
+ "After a valid username is entered, the 2FA prompt will be directly displayed",
124
+ "By using backup you can restore the plugin settings",
125
+ "All features including 2FA can be enabled for all subsites",
126
+ "According to user's role the particular user will be redirected to specific location",
127
+ "Custom questions can be added for the Security Questions Method",
128
+ "You can customize the account name in Google Authenticator app on mobile",
129
+ "This protects your site from attacks which tries to gain access / login to a site with random usernames and passwords.",
130
+ "Allows you to manually/automatically block any IP address that seems malicious from accessing your website. ",
131
+ "Monitor activity of your users. For ex:- login activity, error report",
132
+ "Enforce users to set a strong password.",
133
+ "Allows you to protect sensitive files through the malware scanner and other security features.",
134
+ "Enable and disable 2fa for users based on roles(Like Administrator, Editor and others). It works for custom roles too.",
135
+ "Enable or disable 2fa for a particular user.",
136
+ "You can choose specific authentication methods for specific user roles",
137
+ "Enforce user to setup 2nd factor during registration",
138
+ "One time Email Verification for Users during 2FA Registration",
139
+ "Allows for login using security questions in cases where physical access to the mobile isn’t possible",
140
+ "For login into WordPress sites through mobile, a mobile specific password can be set",
141
+ "24/7 support is available."
142
+ );
143
  $mo2f_addons = array(
144
  "RBA & Trusted Devices Management Add-on",
145
  "Personalization Add-on",
176
  ?>
177
  <div class="mo2f_licensing_plans" style="border:0px;width: 98%">
178
 
179
+ <table class="table mo_table-bordered mo_table-striped" style="width: 100%">
180
+ <thead>
181
+ <tr>
182
+ <th class="mo2f_2fa_lite_plan_title"><h1 class="mo2f_white_color_style">Free</h1></th>
183
+ <th></th>
184
+ <th class="mo2f_2fa_lite_plan_title"><h1 class="mo2f_white_color_style">Standard</h1></th>
185
+ <th></th>
186
+ <th class="mo2f_2fa_lite_plan_title"><h1 class="mo2f_white_color_style">Premium</h1></th>
187
+ <th></th>
188
+ <th class="mo2f_2fa_lite_plan_title"><h1 class="mo2f_white_color_style">Custom Forms</h1></th>
189
+ </tr>
190
 
191
 
192
  </thead>
202
  $f_feature_set_with_plan = $mo2f_feature_set_with_plans_EC[ $feature_set ];
203
  }
204
  ?>
205
+ <td class="mo2f_padding_style"><?php
206
+ if ($feature_set == "Authentication Methods" || $feature_set == "Support") {
207
  ?>
208
  <div>
209
  <?php
215
  <?php
216
  }
217
  if ( is_array( $f_feature_set_with_plan[0] ) ) {
218
+ echo mo2f_create_li_2fa_lite( $f_feature_set_with_plan[0] );
219
  } else {
220
+ ?>
221
+ <div>
222
+ <?php
223
  if ( gettype( $f_feature_set_with_plan[0] ) == "boolean" ) {
224
  echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[0] );
225
  } else {
226
  echo $f_feature_set_with_plan[0];
227
  }
228
  echo $feature_set;
229
+ ?>
230
+ </div></div>
231
+ <?php
232
+ if ($feature_set == "Backup") {
233
+ ?>
234
+ <span style="float: left;">&nbsp; method is not available</span>
235
+ <?php
236
+ }
237
+ ?>
238
+ <div style="float: right;">
239
+ <?php
240
+ if ($feature_set == "Backup") {
241
+
242
+ echo mo2f_features_on_hover_2fa_lite("Backup Method is not available in free plugin.");
243
+ }
244
+ else
245
+ {
246
+ echo mo2f_features_on_hover_2fa_lite($mo2f_feature_description_set[$i-1]);
247
+ }
248
+ ?></div><?php
249
+ } ?>
250
  </td>
251
+ <td class="mo2f_black_background"></td>
252
+ <td class="mo2f_padding_style"><?php
253
+ if ($feature_set == "Authentication Methods" || $feature_set == "Support") {
254
  ?>
255
  <div>
256
  <?php
264
  if($feature_set != "Authentication Methods")
265
  {
266
  if ( is_array( $f_feature_set_with_plan[1] ) ) {
267
+ echo mo2f_create_li_2fa_lite( $f_feature_set_with_plan[1] );
268
  } else {
269
  if ( gettype( $f_feature_set_with_plan[1] ) == "boolean" ) {
270
  echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[1] );
272
  echo $f_feature_set_with_plan[1];
273
  }
274
  echo $feature_set;
275
+ ?>
276
+ </div>
277
+ <?php
278
+ if ($feature_set == "Backup") {
279
+ ?>
280
+ <span style="float: left;">:- Security Questions (KBA)</span>
281
+ <?php
282
+ }
283
+ ?>
284
+ <div style="float: right;">
285
+ <?php
286
+ if ($feature_set == "Backup") {
287
+ echo mo2f_features_on_hover_2fa_lite("Security Questions is available as a backup method");
288
+ }
289
+ else
290
+ {
291
+ echo mo2f_features_on_hover_2fa_lite($mo2f_feature_description_set[$i-1]);
292
+ }
293
+ ?></div><?php
294
  }
295
  }
296
  if ($feature_set == "Authentication Methods") {
297
+ $feature_array_5[] = array_slice( $two_factor_methods, 3, 5 );
298
  for ($k=0; $k < 5 ; $k++)
299
  {
300
  if($is_NC)
301
  {
302
  if ($k<3)
303
  {
304
+
305
+ echo $feature_array_5[0][$k];
306
+ ?><br><?php
307
  }
308
  else
309
  {
310
+ ?><b><?php
311
+ echo $feature_array_5[0][$k];
312
+ ?></b><br><?php
313
  }
314
  }
315
  else
316
  {
317
  if ($k<4)
318
  {
319
+ echo $feature_array_5[0][$k];
320
  ?><br><?php
321
  }
322
  else
323
  {
324
  ?><b><?php
325
+ echo $feature_array_5[0][$k];
326
  ?></b><br><?php
327
  }
328
  }
333
  ?>
334
  </div>
335
  </td>
336
+ <td class="mo2f_black_background"></td>
337
+ <td class="mo2f_padding_style"><?php
338
+ if ($feature_set == "Authentication Methods" || $feature_set == "Support") {
339
  ?>
340
  <div>
341
  <?php
349
  if($feature_set != "Authentication Methods")
350
  {
351
  if ( is_array( $f_feature_set_with_plan[2] ) ) {
352
+ echo mo2f_create_li_2fa_lite( $f_feature_set_with_plan[2] );
353
  } else {
354
  if ( gettype( $f_feature_set_with_plan[2] ) == "boolean" ) {
355
  echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[2] );
357
  echo $f_feature_set_with_plan[2];
358
  }
359
  echo $feature_set;
360
+ ?>
361
+ </div>
362
+ <?php
363
+ if ($feature_set == "Backup") {
364
+ ?>
365
+ <span style="float: left;">:- KBA, OTP Over Email, Backup Codes</span>
366
+ <?php
367
+ }
368
+ ?>
369
+ <div style="float: right;">
370
+ <?php
371
+ if ($feature_set == "Backup") {
372
+ echo mo2f_features_on_hover_2fa_lite("Security Questions, OTP Over Email, Backup Codes are available as a backup method");
373
+ }
374
+ else
375
+ {
376
+ echo mo2f_features_on_hover_2fa_lite($mo2f_feature_description_set[$i-1]);
377
+ }
378
+ ?></div><?php
379
  }
380
  }
381
  if ($feature_set == "Authentication Methods") {
382
+ $feature_array_6[] = array_slice( $two_factor_methods, 3, 5 );
383
  for ($k=0; $k < 5 ; $k++)
384
  {
385
  if ($is_NC)
386
  {
387
  if ($k<3)
388
  {
389
+ echo $feature_array_6[0][$k];
390
  ?><br><?php
391
  }
392
  else
393
  {
394
  ?><b><?php
395
+ echo $feature_array_6[0][$k];
396
  ?></b><br><?php
397
  }
398
  }
400
  {
401
  if ($k<4)
402
  {
403
+ echo $feature_array_6[0][$k];
404
  ?><br><?php
405
  }
406
  else
407
  {
408
  ?><b><?php
409
+ echo $feature_array_6[0][$k];
410
+ ?></b><br><?php
411
+ }
412
+ }
413
+ }
414
+ ?>
415
+ <?php
416
+ }?></div>
417
+ </td>
418
+ <td class="mo2f_black_background"></td>
419
+ <td class="mo2f_padding_style"><?php
420
+ if ($feature_set == "Authentication Methods" || $feature_set == "Support") {
421
+ ?>
422
+ <div>
423
+ <?php
424
+ }
425
+ else
426
+ {
427
+ ?>
428
+ <div style="float: left;">
429
+ <?php
430
+ }
431
+ if($feature_set != "Authentication Methods")
432
+ {
433
+ if ( is_array( $f_feature_set_with_plan[3] ) ) {
434
+ echo mo2f_create_li_2fa_lite( $f_feature_set_with_plan[3] );
435
+ } else {
436
+ if ( gettype( $f_feature_set_with_plan[3] ) == "boolean" ) {
437
+ echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[3] );
438
+ } else {
439
+ echo $f_feature_set_with_plan[3];
440
+ }
441
+ echo $feature_set;
442
+ ?>
443
+ </div>
444
+ <?php
445
+ if ($feature_set == "Backup") {
446
+ ?>
447
+ <span style="float: left;">:- KBA, OTP Over Email, Backup Codes</span>
448
+ <?php
449
+ }
450
+ ?>
451
+ <div style="float: right;">
452
+ <?php
453
+ if ($feature_set == "Backup") {
454
+ echo mo2f_features_on_hover_2fa_lite("Security Questions, OTP Over Email, Backup Codes are available as a backup method");
455
+ }
456
+ else
457
+ {
458
+ echo mo2f_features_on_hover_2fa_lite($mo2f_feature_description_set[$i-1]);
459
+ }
460
+ ?></div><?php
461
+ }
462
+ }
463
+ if ($feature_set == "Authentication Methods") {
464
+ $feature_array_7[] = array_slice( $two_factor_methods, 3, 5 );
465
+ for ($k=0; $k < 5 ; $k++)
466
+ {
467
+ if ($is_NC)
468
+ {
469
+ if ($k<3)
470
+ {
471
+ echo $feature_array_7[0][$k];
472
+ ?><br><?php
473
+ }
474
+ else
475
+ {
476
+ ?><b><?php
477
+ echo $feature_array_7[0][$k];
478
+ ?></b><br><?php
479
+ }
480
+ }
481
+ else
482
+ {
483
+ if ($k<4)
484
+ {
485
+ echo $feature_array_7[0][$k];
486
+ ?><br><?php
487
+ }
488
+ else
489
+ {
490
+ ?><b><?php
491
+ echo $feature_array_7[0][$k];
492
  ?></b><br><?php
493
  }
494
  }
497
  <?php
498
  }?></div>
499
  </td>
 
500
  </tr>
501
  <?php } ?>
502
 
503
  <tr>
504
  <td><b>Add-Ons</b></td>
505
+ <td class="mo2f_black_background"></td>
506
  <?php if ( $is_NC ) { ?>
507
  <td><b>Purchase Separately</b></td>
508
+ <td class="mo2f_black_background"></td>
509
  <?php } else { ?>
510
  <td><b>Purchase Separately</b></td>
511
+ <td class="mo2f_black_background"></td>
512
  <?php } ?>
513
  <td><b>Included</b></td>
514
+ <td class="mo2f_black_background"></td>
515
+ <td><b>Included</b></td>
516
  </tr>
517
  <?php for ( $i = 0; $i < count( $mo2f_addons ); $i ++ ) { ?>
518
  <tr>
519
  <td><?php echo $mo2f_addons[ $i ]; ?> <?php for ( $j = 0; $j < $i + 1; $j ++ ) { ?>*<?php } ?>
520
  </td>
521
+ <td class="mo2f_black_background"></td>
522
  <?php if ( $is_NC ) { ?>
523
  <td>
524
  Contact Us
525
 
526
  </td>
527
+ <td class="mo2f_black_background"></td>
528
  <?php } else { ?>
529
  <td>Contact Us</td>
530
+ <td class="mo2f_black_background"></td>
531
  <?php } ?>
532
 
533
  <td><div>Contact Us</div></td>
534
+ <td class="mo2f_black_background"></td>
535
+ <td><div>Contact Us</div></td>
536
  </tr>
537
  <?php } ?>
538
 
539
  </tbody>
540
  </table>
541
+ <hr><br>
542
  <div style="padding:10px;">
543
  <?php for ( $i = 0; $i < count( $mo2f_addons ); $i ++ ) {
544
  $f_feature_set_of_addons = $mo2f_addons_with_features[ $mo2f_addons[ $i ] ];
582
  </div>
583
 
584
  <?php
585
+ function mo2f_create_li_2fa_lite( $mo2f_array ) {
586
+ $html_ol = '<ul>';
587
+ foreach ( $mo2f_array as $element ) {
588
+ $html_ol .= "<li>" . $element . "</li>";
589
+ }
590
+ $html_ol .= '</ul>';
591
 
592
+ return $html_ol;
593
+ }
594
  function mo2f_get_binary_equivalent_2fa_lite( $mo2f_var ) {
595
  switch ( $mo2f_var ) {
596
  case 1:
597
+ return "<div style='color: #20b2aa;font-size: large;float:left;margin:0px 5px;'>✔</div>";
598
  case 0:
599
+ return "<div style='color: red;font-size: x-large;float:left;margin:0px 5px;'>×</div>";
600
  default:
601
  return $mo2f_var;
602
  }
603
+ }
604
+
605
+ function mo2f_features_on_hover_2fa_lite( $mo2f_var ) {
606
+
607
+ return '<div class="mo2f_tooltip"><span class="dashicons dashicons-info mo2f_info_tab"></span><br><span class="mo2f_tooltiptext" style="margin-left: -1089%;">'. $mo2f_var .'</span>';
608
+ }
{views → miniorange-2-factor-authentication/views}/waf-settings.php RENAMED
File without changes
{views → miniorange-2-factor-authentication/views}/waf.php RENAMED
@@ -82,16 +82,17 @@
82
 
83
  <table style="width:100%">
84
  <tr><th align="left">
85
- <h3>Real Time IP Blocking <strong style="color: red"><a href="admin.php?page=mo_2fa_upgrade"> [Premium Feature] </a></strong>:
86
  <br>
87
  <p><i class="mo_wpns_not_bold">Blocking those malicious IPs Which has been detected by miniOrange WAF. This feature contains a list of malicious IPs which is mantained in real time. By enabling this option if any attack has been detected on miniOrange WAF on others wbsite then that IP will be blocked from your site also.</i></p>
88
  </th><th align="right">
 
89
  <label class='mo_wpns_switch'>
90
  <input type=checkbox id='RealTimeIP' name='RealTimeIP' disabled/>
91
  <span class='mo_wpns_slider mo_wpns_round'></span>
92
  </label>
93
  </tr></th>
94
- </h3>
95
  </table>
96
  </div>
97
  </div>
@@ -108,11 +109,11 @@
108
  <table style="width:100%">
109
  <tr>
110
  <th align="left">
111
- <h3>Rate Limiting:</h3>
112
- <br>
113
  <p><i class="mo_wpns_not_bold">This will protect your Website from Dos attack and block request after a limit exceed.</i></p>
114
  </th>
115
  <th align="right">
 
116
  <label class='mo_wpns_switch'>
117
  <input type=checkbox id='rateL' name='rateL' />
118
  <span class='mo_wpns_slider mo_wpns_round'></span>
@@ -230,18 +231,20 @@
230
  <div class="mo_wpns_setting_layout">
231
  <table style="width:100%">
232
  <tr><th align="left">
233
- <h3>Website Firewall on Plugin Level:
234
- <br>
235
  <p><i class="mo_wpns_not_bold">This will activate WAF after the WordPress load. This will block illegitimate requests after making connection to WordPress. This will check Every Request in plugin itself.</i></p>
236
  </th><th align="right">
 
237
  <label class='mo_wpns_switch'>
238
  <input type=checkbox id='pluginWAF' name='pluginWAF' />
239
  <span class='mo_wpns_slider mo_wpns_round'></span>
240
  </label>
241
  </tr></th>
242
- </h3>
243
  <tr><th align="left">
244
- <h3>Website Firewall on .htaccess Level <strong style="color: #20b2aa">[Recommended] </strong>:
 
245
  <br>
246
  <p><i class="mo_wpns_not_bold">This will activate WAF before the WordPress load. This will block illegitimate request before any connection to WordPress. This level doesnot allow illegal requests to before any page gets loaded.</i></p>
247
  </th><th align="right">
@@ -249,7 +252,7 @@
249
  <input type=checkbox id='htaccessWAF' name='htaccessWAF' />
250
  <span class='mo_wpns_slider mo_wpns_round'></span>
251
  </label>
252
- </h3></th></tr>
253
  </table>
254
  <div id ='htaccessChange' name ='htaccessChange'>
255
  <p><i class="mo_wpns_not_bold"> This feature will make changes to .htaccess file, Please confirm before the changes<br>
82
 
83
  <table style="width:100%">
84
  <tr><th align="left">
85
+ <h3>Real Time IP Blocking <strong style="color: red"><a href="admin.php?page=mo_2fa_upgrade"> [Premium Feature] </a></strong> :</h3>
86
  <br>
87
  <p><i class="mo_wpns_not_bold">Blocking those malicious IPs Which has been detected by miniOrange WAF. This feature contains a list of malicious IPs which is mantained in real time. By enabling this option if any attack has been detected on miniOrange WAF on others wbsite then that IP will be blocked from your site also.</i></p>
88
  </th><th align="right">
89
+
90
  <label class='mo_wpns_switch'>
91
  <input type=checkbox id='RealTimeIP' name='RealTimeIP' disabled/>
92
  <span class='mo_wpns_slider mo_wpns_round'></span>
93
  </label>
94
  </tr></th>
95
+
96
  </table>
97
  </div>
98
  </div>
109
  <table style="width:100%">
110
  <tr>
111
  <th align="left">
112
+ <h3>Rate Limiting : <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/web-firewall#dos-proctection" target="_blank"><span class=" dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;"></span></a></h3>
 
113
  <p><i class="mo_wpns_not_bold">This will protect your Website from Dos attack and block request after a limit exceed.</i></p>
114
  </th>
115
  <th align="right">
116
+
117
  <label class='mo_wpns_switch'>
118
  <input type=checkbox id='rateL' name='rateL' />
119
  <span class='mo_wpns_slider mo_wpns_round'></span>
231
  <div class="mo_wpns_setting_layout">
232
  <table style="width:100%">
233
  <tr><th align="left">
234
+ <h3>Website Firewall on Plugin Level : <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/web-firewall/#firewall-level" target="_blank">
235
+ <span class=" dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;"></span></a></h3>
236
  <p><i class="mo_wpns_not_bold">This will activate WAF after the WordPress load. This will block illegitimate requests after making connection to WordPress. This will check Every Request in plugin itself.</i></p>
237
  </th><th align="right">
238
+
239
  <label class='mo_wpns_switch'>
240
  <input type=checkbox id='pluginWAF' name='pluginWAF' />
241
  <span class='mo_wpns_slider mo_wpns_round'></span>
242
  </label>
243
  </tr></th>
244
+
245
  <tr><th align="left">
246
+ <h3>Website Firewall on .htaccess Level <strong style="color: #20b2aa">[Recommended] </strong>: <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/web-firewall/#firewall-level" target="_blank">
247
+ <span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;"></span></a></h3>
248
  <br>
249
  <p><i class="mo_wpns_not_bold">This will activate WAF before the WordPress load. This will block illegitimate request before any connection to WordPress. This level doesnot allow illegal requests to before any page gets loaded.</i></p>
250
  </th><th align="right">
252
  <input type=checkbox id='htaccessWAF' name='htaccessWAF' />
253
  <span class='mo_wpns_slider mo_wpns_round'></span>
254
  </label>
255
+ </th></tr>
256
  </table>
257
  <div id ='htaccessChange' name ='htaccessChange'>
258
  <p><i class="mo_wpns_not_bold"> This feature will make changes to .htaccess file, Please confirm before the changes<br>
views/troubleshooting.php DELETED
@@ -1,100 +0,0 @@
1
- <?php
2
-
3
- echo'<div class="mo_wpns_divided_layout">
4
- <div class="mo_wpns_setting_layout">
5
- <table class="mo_wpns_help">
6
- <tbody><tr>
7
- <td class="mo_wpns_help_cell">
8
- <div id="mo_wpns_help_curl_title" class="mo_wpns_title_panel">
9
- <div class="mo_wpns_help_title">How to enable PHP cURL extension? (Pre-requisite)</div>
10
- </div>
11
- <div hidden="" id="mo_wpns_help_curl_desc" class="mo_wpns_help_desc" style="display: none;">
12
- <ul>
13
- <li>Step 1:&nbsp;&nbsp;&nbsp;&nbsp;Open php.ini file located under php installation folder.</li>
14
- <li>Step 2:&nbsp;&nbsp;&nbsp;&nbsp;Search for <b>extension=php_curl.dll</b>. </li>
15
- <li>Step 3:&nbsp;&nbsp;&nbsp;&nbsp;Uncomment it by removing the semi-colon(<b>;</b>) in front of it.</li>
16
- <li>Step 4:&nbsp;&nbsp;&nbsp;&nbsp;Restart the Apache Server.</li>
17
- </ul>
18
- For any further queries, please contact us.
19
- </div>
20
- </td>
21
- </tr><tr>
22
- <td class="mo_wpns_help_cell">
23
- <div id="mo_wpns_help_mobile_auth_title" class="mo_wpns_title_panel">
24
- <div class="mo_wpns_help_title">How to enable Mobile authentication ( 2 Factor ) ?</div>
25
- </div>
26
- <div hidden="" id="mo_wpns_help_mobile_auth_desc" class="mo_wpns_help_desc" style="display: none;">
27
- <ul>
28
- <li>Step 1:&nbsp;&nbsp;&nbsp;&nbsp;Go to <b>Login Security</b> Tab and go to <b>Mobile Authentication</b> section.</li>
29
- <li>Step 2:&nbsp;&nbsp;&nbsp;&nbsp;If you have not installed 2 factor plugin you wil see link <b>"Install 2 Factor Plugin"</b>. Click this link and activate miniOrange 2 factor plugin.</li>
30
- <li>Step 3:&nbsp;&nbsp;&nbsp;&nbsp;If you already have 2 factor plugin installed and its disable you wil see link <b>"Click here to activate 2 Factor Plugin"</b>. Click this link and activate miniOrange 2 factor plugin.</li>
31
- <li>Step 4:&nbsp;&nbsp;&nbsp;&nbsp;Go to <b>"miniOrange 2-Factor"</b> tab from wordpress sidebar</li>
32
- <li>Step 5:&nbsp;&nbsp;&nbsp;&nbsp;Click on <b>"Setup Two-Factor"</b> tab and configure your 2nd factor method which you want to use during login.</li>
33
- </ul>
34
- For any further queries, please contact us.
35
- </div>
36
- </td>
37
- </tr>
38
- <tr>
39
- <td class="mo_wpns_help_cell">
40
- <div id="mo_wpns_help_disposable_title" class="mo_wpns_title_panel">
41
- <div class="mo_wpns_help_title">What "Block Registerations from fake users" does ? (Premium Feature)</div>
42
- </div>
43
- <div hidden="" id="mo_wpns_help_disposable_desc" class="mo_wpns_help_desc" style="display: none;">
44
- There are many fake email provides which provides dispsable or temporary email address to users which expires in few minutes or few hours. You can block registrations from those email addresses.<br><br>
45
-
46
- For any further queries, please contact us.
47
- </div>
48
- </td>
49
- </tr>
50
- <tr>
51
- <td class="mo_wpns_help_cell">
52
- <div id="mo_wpns_help_strong_pass_title" class="mo_wpns_title_panel">
53
- <div class="mo_wpns_help_title">What "Enforce Strong Passwords" does ?</div>
54
- </div>
55
- <div hidden="" id="mo_wpns_help_strong_pass_desc" class="mo_wpns_help_desc" style="display: none;">
56
- This feature check if users are having strong passwords for their account. If No, we force users to change their passwords to strong passwords during their login to wordpress.<br><br>
57
-
58
- For any further queries, please contact us.
59
- </div>
60
- </td>
61
- </tr>
62
- <tr>
63
- <td class="mo_wpns_help_cell">
64
- <div id="mo_wpns_help_adv_user_ver_title" class="mo_wpns_title_panel">
65
- <div class="mo_wpns_help_title">What "Advanced User Verification" does ? (Premium Feature)</div>
66
- </div>
67
- <div hidden="" id="mo_wpns_help_adv_user_ver_desc" class="mo_wpns_help_desc" style="display: none;">
68
- This verifies users phone number or email address before registering users by sending One Time Password ( OTP ) on his phone number or email address. You can avoid fake registrations with it.<br><br>
69
-
70
- For any further queries, please contact us.
71
- </div>
72
- </td>
73
- </tr>
74
- <tr>
75
- <td class="mo_wpns_help_cell">
76
- <div id="mo_wpns_help_social_login_title" class="mo_wpns_title_panel">
77
- <div class="mo_wpns_help_title">What "Social Login Integration" does ? (Premium Feature)</div>
78
- </div>
79
- <div hidden="" id="mo_wpns_help_social_login_desc" class="mo_wpns_help_desc" style="display: none;">
80
- You can allow your users to login or register to your site with their existing account with supported social networks like Google, Twitter, Facebook, Vkontakte, LinkedIn, Instagram, Amazon, Salesforce, Windows Live. No need to remember multiple account credentials for users.<br><br>
81
-
82
- For any further queries, please contact us.
83
- </div>
84
- </td>
85
- </tr><tr>
86
- <td class="mo_wpns_help_cell">
87
- <div id="mo_wpns_help_custom_template_title" class="mo_wpns_title_panel">
88
- <div class="mo_wpns_help_title">What "Customized Email Templates" does ? (Premium Feature)</div>
89
- </div>
90
- <div hidden="" id="mo_wpns_help_custom_template_desc" class="mo_wpns_help_desc" style="display: none;">
91
- You can customize email templates for emails that are sent to users for unusual activities and also Administrator for blocked IP\'s. You can add your own subject, from name and email content. Also we support HTML content for email body.<br><br>
92
-
93
- For any further queries, please contact us.
94
- </div>
95
- </td>
96
- </tr>
97
-
98
- </tbody></table>
99
- </div>
100
- </div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
views/upgrade_2fa.php DELETED
@@ -1,347 +0,0 @@
1
- <?php
2
- global $Mo2fdbQueries;
3
- $user = wp_get_current_user();
4
- $is_NC = get_option( 'mo2f_is_NC' );
5
-
6
- $is_customer_registered = $Mo2fdbQueries->get_user_detail( 'user_registration_with_miniorange', $user->ID ) == 'SUCCESS' ? true : false;
7
-
8
- $mo2f_feature_set = array(
9
- "Authentication Methods",
10
- "Language Translation Support",
11
- "Password Less Login",
12
- "Backup Methods",
13
- "Multi-Site Support",
14
- "User role based redirection after Login",
15
- "Add custom Security Questions (KBA)",
16
- "Customize account name in Google Authenticator app",
17
- "Brute Force Protection",
18
- "Blocking IP",
19
- "Monitoring",
20
- "Strong Password",
21
- "File Protection",
22
- "2FA for specific User Roles",
23
- "2FA for specific Users",
24
- "Choose specific authentication methods",
25
- "Force Two Factor for users",
26
- "One Time Email Verification for Users during 2FA Registration",
27
- "Enable Security Questions as backup",
28
- "App Specific Password from mobile Apps",
29
- "Support"
30
- );
31
-
32
-
33
- $two_factor_methods = array(
34
- "miniOrange QR Code Authentication",
35
- "miniOrange Soft Token",
36
- "miniOrange Push Notification",
37
- "Google Authenticator",
38
- "Security Questions",
39
- "Authy Authenticator",
40
- "Email Verification",
41
- "OTP Over SMS",
42
- "OTP Over Email",
43
- "OTP Over SMS and Email",
44
- "Hardware Token"
45
- );
46
-
47
- $two_factor_methods_EC = array_slice( $two_factor_methods, 0, 7 );
48
-
49
- $mo2f_feature_set_with_plans_NC = array(
50
- "Authentication Methods" => array(
51
- array_slice( $two_factor_methods, 0, 5 ),
52
- array_slice( $two_factor_methods, 0, 10 ),
53
- array_slice( $two_factor_methods, 0, 11 ),
54
- array_slice( $two_factor_methods, 0, 11 )
55
- ),
56
-
57
-
58
- "Language Translation Support" => array( true, true, true, true ),
59
- "Password Less Login" => array( false, true, true, true ),
60
- "Backup Methods" => array(
61
- false,
62
- "Security Questions",
63
- array( "Security Questions", "OTP Over Email", "Backup Codes" ),
64
- array( "Security Questions", "OTP Over Email", "Backup Codes" )
65
- ),
66
- "Multi-Site Support" => array( false, true, true, true ),
67
- "User role based redirection after Login" => array( false, true, true, true ),
68
- "Add custom Security Questions (KBA)" => array( false, true, true, true ),
69
- "Add custom Security Questions (KBA)" => array( false, true, true, true ),
70
- "Customize account name in Google Authenticator app" => array( false, true, true, true ),
71
- "Brute Force Protection" => array( true, false, false, true ),
72
- "Blocking IP" => array( true, false, false, true ),
73
- "Monitoring" => array( true, false, false, true ),
74
- "Strong Password" => array( true, false, false, true ),
75
- "File Protection" => array( true, false, false, true ),
76
- "2FA for specific User Roles" => array( false, false, true, true ),
77
- "2FA for specific Users" => array( false, false, true, true ),
78
- "Choose specific authentication methods" => array( false, false, true, true ),
79
- "Force Two Factor for users" => array( false, false, true, true ),
80
- "One Time Email Verification for Users during 2FA Registration" => array( false, false, true, true ),
81
- "Enable Security Questions as backup" => array( false, false, true, true ),
82
- "App Specific Password from mobile Apps" => array( false, false, true, true ),
83
- "Support" => array(
84
- "Basic Support by Email",
85
- "Priority Support by Email",
86
- array( "Priority Support by Email", "Priority Support with GoTo meetings" ),
87
- array( "Priority Support by Email", "Priority Support with GoTo meetings" )
88
- ),
89
-
90
- );
91
-
92
- $mo2f_feature_set_with_plans_EC = array(
93
- "Authentication Methods" => array(
94
- array_slice( $two_factor_methods, 0, 8 ),
95
- array_slice( $two_factor_methods, 0, 10 ),
96
- array_slice( $two_factor_methods, 0, 11 ),
97
- array_slice( $two_factor_methods, 0, 11 )
98
- ),
99
-
100
- "Language Translation Support" => array( true, true, true, true ),
101
- "Password Less Login" => array( true, true, true, true ),
102
- "Backup Methods" => array(
103
- "Security Questions",
104
- "Security Questions",
105
- array( "Security Questions", "OTP Over Email", "Backup Codes" ),
106
- array( "Security Questions", "OTP Over Email", "Backup Codes" )
107
- ),
108
- "Multi-Site Support" => array( false, true, true, true ),
109
- "Brute Force Protection" => array( true, false, false, true ),
110
- "Blocking IP" => array( true, false, false, true ),
111
- "Monitoring" => array( true, false, false, true ),
112
- "Strong Password" => array( true, false, false, true ),
113
- "File Protection" => array( true, false, false, true ),
114
- "User role based redirection after Login" => array( false, true, true, true ),
115
- "Add custom Security Questions (KBA)" => array( false, true, true, true ),
116
- "Customize account name in Google Authenticator app" => array( false, true, true, true ),
117
- "2FA for specific User Roles" => array( false, false, true, true ),
118
- "2FA for specific Users" => array( false, false, true, true ),
119
- "Choose specific authentication methods" => array( false, false, true, true ),
120
- "Force Two Factor for users" => array( false, false, true, true ),
121
- "One Time Email Verification for Users during 2FA Registration" => array( false, false, true, true ),
122
- "Enable Security Questions as backup" => array( false, false, true, true ),
123
- "App Specific Password from mobile Apps" => array( false, false, true, true ),
124
- "Support" => array(
125
- "Basic Support by Email",
126
- "Priority Support by Email",
127
- array( "Priority Support by Email", "Priority Support with GoTo meetings" ),
128
- array( "Priority Support by Email", "Priority Support with GoTo meetings" )
129
- ),
130
-
131
- );
132
-
133
- $mo2f_addons = array(
134
- "RBA & Trusted Devices Management Add-on",
135
- "Personalization Add-on",
136
- "Short Codes Add-on"
137
- );
138
- $mo2f_addons_plan_name = array(
139
- "RBA & Trusted Devices Management Add-on" => "wp_2fa_addon_rba",
140
- "Personalization Add-on" => "wp_2fa_addon_personalization",
141
- "Short Codes Add-on" => "wp_2fa_addon_shortcode"
142
- );
143
-
144
-
145
- $mo2f_addons_with_features = array(
146
- "Personalization Add-on" => array(
147
- "Custom UI of 2FA popups",
148
- "Custom Email and SMS Templates",
149
- "Customize 'powered by' Logo",
150
- "Customize Plugin Icon",
151
- "Customize Plugin Name",
152
-
153
- ),
154
- "RBA & Trusted Devices Management Add-on" => array(
155
- "Remember Device",
156
- "Set Device Limit for the users to login",
157
- "IP Restriction: Limit users to login from specific IPs"
158
- ),
159
- "Short Codes Add-on" => array(
160
- "Option to turn on/off 2-factor by user",
161
- "Option to configure the Google Authenticator and Security Questions by user",
162
- "Option to 'Enable Remember Device' from a custom login form",
163
- "On-Demand ShortCodes for specific fuctionalities ( like for enabling 2FA for specific pages)"
164
- )
165
- );
166
- ?>
167
- <div class="mo2f_licensing_plans" style="border:0px;">
168
-
169
- <table class="table mo_table-bordered mo_table-striped">
170
- <thead>
171
- <tr>
172
- <th style="background-color: #20b2aa;border: 2px solid #20b2aa;width: 21%;"><h1 style="color: white;">Features</h1></th>
173
- <th style="background-color: #20b2aa;border: 2px solid #20b2aa;"><h1 style="color: white;">Free</h1></th>
174
- <th style="background-color: #20b2aa;border: 2px solid #20b2aa;"><h1 style="color: white;">Standard</h1></th>
175
- <th style="background-color: #20b2aa;border: 2px solid #20b2aa;"><h1 style="color: white;">Premium</h1></th>
176
- <th style="background-color: #20b2aa;border: 2px solid #20b2aa;"><h1 style="color: white;">Enterprise</h1></th>
177
- </tr>
178
-
179
-
180
- </thead>
181
- <tbody class="mo_align-center mo-fa-icon">
182
- <?php for ( $i = 0; $i < count( $mo2f_feature_set ); $i ++ ) { ?>
183
- <tr>
184
- <td><?php
185
- $feature_set = $mo2f_feature_set[ $i ];
186
-
187
- echo $feature_set;
188
- ?>
189
- </td>
190
- <?php if ( $is_NC ) {
191
- $f_feature_set_with_plan = $mo2f_feature_set_with_plans_NC[ $feature_set ];
192
- } else {
193
- $f_feature_set_with_plan = $mo2f_feature_set_with_plans_EC[ $feature_set ];
194
- }
195
- ?>
196
- <td><?php
197
- if ( is_array( $f_feature_set_with_plan[0] ) ) {
198
- echo mo2f_create_li( $f_feature_set_with_plan[0] );
199
- } else {
200
- if ( gettype( $f_feature_set_with_plan[0] ) == "boolean" ) {
201
- echo mo2f_get_binary_equivalent( $f_feature_set_with_plan[0] );
202
- } else {
203
- echo $f_feature_set_with_plan[0];
204
- }
205
- } ?>
206
- </td>
207
- <td><?php
208
- if ( is_array( $f_feature_set_with_plan[1] ) ) {
209
- echo mo2f_create_li( $f_feature_set_with_plan[1] );
210
- } else {
211
- if ( gettype( $f_feature_set_with_plan[1] ) == "boolean" ) {
212
- echo mo2f_get_binary_equivalent( $f_feature_set_with_plan[1] );
213
- } else {
214
- echo $f_feature_set_with_plan[1];
215
- }
216
- } ?>
217
- </td>
218
- <td><?php
219
- if ( is_array( $f_feature_set_with_plan[2] ) ) {
220
- echo mo2f_create_li( $f_feature_set_with_plan[2] );
221
- } else {
222
- if ( gettype( $f_feature_set_with_plan[2] ) == "boolean" ) {
223
- echo mo2f_get_binary_equivalent( $f_feature_set_with_plan[2] );
224
- } else {
225
- echo $f_feature_set_with_plan[2];
226
- }
227
- } ?>
228
- </td>
229
- <td><?php
230
- if ( is_array( $f_feature_set_with_plan[3] ) ) {
231
- echo mo2f_create_li( $f_feature_set_with_plan[3] );
232
- } else {
233
- if ( gettype( $f_feature_set_with_plan[3] ) == "boolean" ) {
234
- echo mo2f_get_binary_equivalent( $f_feature_set_with_plan[3] );
235
- } else {
236
- echo $f_feature_set_with_plan[3];
237
- }
238
- } ?>
239
- </td>
240
- </tr>
241
- <?php } ?>
242
-
243
- <tr>
244
- <td><b>Add-Ons</b></td>
245
- <?php if ( $is_NC ) { ?>
246
- <td><b>Purchase Separately</b></td>
247
- <?php } else { ?>
248
- <td><b>NA</b></td>
249
- <?php } ?>
250
- <td><b>Purchase Separately</b></td>
251
- <td><b>Included</b></td>
252
- <td><b>Included</b></td>
253
- </tr>
254
- <?php for ( $i = 0; $i < count( $mo2f_addons ); $i ++ ) { ?>
255
- <tr>
256
- <td><?php echo $mo2f_addons[ $i ]; ?> <?php for ( $j = 0; $j < $i + 1; $j ++ ) { ?>*<?php } ?>
257
- </td>
258
- <?php if ( $is_NC ) { ?>
259
- <td>
260
- <button class="mo_wpns_button mo_wpns_button1" style="cursor:pointer"
261
- onclick="mo2f_upgradeform('<?php echo $mo2f_addons_plan_name[ $mo2f_addons[ $i ] ]; ?>')" <?php echo $is_customer_registered ? "" : " disabled " ?> >
262
- Purchase
263
- </button>
264
-
265
- </td>
266
- <?php } else { ?>
267
- <td><b>NA</b></td>
268
- <?php } ?>
269
- <td>
270
- <button class="mo_wpns_button mo_wpns_button1" style="cursor:pointer"
271
- onclick="mo2f_upgradeform('<?php echo $mo2f_addons_plan_name[ $mo2f_addons[ $i ] ]; ?>')" <?php echo $is_customer_registered ? "" : " disabled " ?> >
272
- Purchase
273
- </button>
274
- </td>
275
- <td><div style="color:#20b2aa;font-size: large;">✔</div></td>
276
- <td><div style="color:#20b2aa;font-size: large;">✔</div></td>
277
- </tr>
278
- <?php } ?>
279
-
280
- </tbody>
281
- </table>
282
- <br>
283
- <div style="padding:10px;">
284
- <?php for ( $i = 0; $i < count( $mo2f_addons ); $i ++ ) {
285
- $f_feature_set_of_addons = $mo2f_addons_with_features[ $mo2f_addons[ $i ] ];
286
- for ( $j = 0; $j < $i + 1; $j ++ ) { ?>*<?php } ?>
287
- <b><?php echo $mo2f_addons[ $i ]; ?> Features</b>
288
- <br>
289
- <ol>
290
- <?php for ( $k = 0; $k < count( $f_feature_set_of_addons ); $k ++ ) { ?>
291
- <li><?php echo $f_feature_set_of_addons[ $k ]; ?></li>
292
- <?php } ?>
293
- </ol>
294
-
295
- <hr><br>
296
- <?php } ?>
297
- <b>**** SMS Charges</b>
298
- <p><?php echo mo2f_lt( 'If you wish to choose OTP Over SMS / OTP Over SMS and Email as your authentication method,
299
- SMS transaction prices & SMS delivery charges apply and they depend on country. SMS validity is for lifetime.' ); ?></p>
300
- <hr>
301
- <br>
302
- <div>
303
- <h2>Note</h2>
304
- <ol class="mo2f_licensing_plans_ol">
305
- <li><?php echo mo2f_lt( 'The plugin works with many of the default custom login forms (like Woocommerce / Theme My Login), however if you face any issues with your custom login form, contact us and we will help you with it.' ); ?></li>
306
- <li><?php echo mo2f_lt( 'There is no license key required to activate the Standard/Premium Plugins. You will have to just login with the miniOrange Account you used to make the purchase.' ); ?>
307
-
308
- </li>
309
- </ol>
310
- </div>
311
-
312
- <br>
313
- <hr>
314
-
315
-
316
-
317
- <style>#mo2f_support_table {
318
- display: none;
319
- }
320
-
321
- </style>
322
- </div>
323
- </div>
324
-
325
- <?php
326
- function mo2f_create_li( $mo2f_array ) {
327
- $html_ol = '<ul>';
328
- foreach ( $mo2f_array as $element ) {
329
- $html_ol .= "<li>" . $element . "</li>";
330
- }
331
- $html_ol .= '</ul>';
332
-
333
- return $html_ol;
334
- }
335
-
336
-
337
- function mo2f_get_binary_equivalent( $mo2f_var ) {
338
-
339
- switch ( $mo2f_var ) {
340
- case 1:
341
- return "<div style='color:#20b2aa;font-size: large;'>✔</div>";
342
- case 0:
343
- return "<div style='color:red;font-size: large;'>×</div>";
344
- default:
345
- return $mo2f_var;
346
- }
347
- }