miniOrange_2factor - Version 1.0.2

Version Notes

1.0.2
== Bug Fix ==

Download this release

Release Info

Developer miniOrange inc.
Extension miniOrange_2factor
Version 1.0.2
Comparing to
See all releases


Code changes from version 1.0.1 to 1.0.2

app/code/community/MiniOrange/2factor/Controllers/IndexController.php DELETED
@@ -1,42 +0,0 @@
1
- <?php
2
-
3
- class MiniOrange_2factor_IndexController extends Mage_Core_Controller_Front_Action
4
- {
5
- /*public function indexAction(){
6
- $this->loadLayout();
7
- $this->renderLayout();
8
- }*/
9
-
10
- /*public function checkemailAction(){
11
- $params = $this->getRequest()->getParams();
12
- $customer = Mage::helper('MiniOrange_2factor/customersetup');
13
- $content = json_decode($customer->check_customer($params['email']), true);
14
- if( strcasecmp( $content['status'], 'CUSTOMER_NOT_FOUND') == 0 ){
15
- $content = json_decode($customer->send_otp_token($email), true); //send otp for verification
16
- if(strcasecmp($content['status'], 'SUCCESS') == 0) {
17
- Mage::getSingleton('core/session')->setMySessionVariable($content['txId']);
18
- //save
19
- }
20
- }
21
- $redirect = Mage::helper('core/url')->getHomeUrl().'customer/account/login#loginScreen';
22
- $this->_redirectUrl($redirect);
23
- }
24
-
25
-
26
- protected function _customerExists($email){
27
- //called to check if customer already exists
28
- $websiteId = Mage::app()->getWebsite()->getId();
29
- $customer = Mage::getModel('customer/customer');
30
- if ($websiteId) {
31
- $customer->setWebsiteId($websiteId);
32
- }
33
- $customer->loadByEmail($email);
34
- if ($customer->getId()) {
35
- return $customer;
36
- }
37
- return false;
38
- }*/
39
-
40
- }
41
-
42
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/{MiniOrange → miniOrange}/2factor/Block/mo2fConfig.php RENAMED
@@ -88,10 +88,6 @@ class MiniOrange_2factor_Block_mo2fConfig extends Mage_Core_Block_Template{
88
  return $customer->is_curl_installed();
89
  }
90
 
91
- public function getForgotPassUrl(){
92
- $url = $this->getHostURl();
93
- return $url.'/moas/idp/userforgotpassword' ;
94
- }
95
 
96
 
97
  }
88
  return $customer->is_curl_installed();
89
  }
90
 
 
 
 
 
91
 
92
 
93
  }
app/code/community/{MiniOrange → miniOrange}/2factor/Controllers/Adminhtml/IndexController.php RENAMED
@@ -12,6 +12,7 @@ class MiniOrange_2factor_Adminhtml_IndexController extends Mage_Adminhtml_Contro
12
  Mage::getSingleton('core/session')->unsSuccessMessage();
13
  Mage::getSingleton('admin/session')->unsshowLoginSettings();
14
  Mage::getSingleton('admin/session')->unsOTPsent();
 
15
  }
16
 
17
 
@@ -20,6 +21,7 @@ class MiniOrange_2factor_Adminhtml_IndexController extends Mage_Adminhtml_Contro
20
  $customer = Mage::helper('MiniOrange_2factor/mo2fUtility');
21
  if($customer->is_curl_installed()){
22
  $email = $params['email'];
 
23
  $password = $params['password'];
24
  $phone = $params['phone'];
25
  $confirmPassword = $params['confirmPassword'];
@@ -85,6 +87,7 @@ class MiniOrange_2factor_Adminhtml_IndexController extends Mage_Adminhtml_Contro
85
  }
86
  else{
87
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
 
88
  }
89
  }
90
 
@@ -130,6 +133,7 @@ class MiniOrange_2factor_Adminhtml_IndexController extends Mage_Adminhtml_Contro
130
  }
131
  else{
132
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
 
133
  }
134
  }
135
 
@@ -138,39 +142,53 @@ class MiniOrange_2factor_Adminhtml_IndexController extends Mage_Adminhtml_Contro
138
  $customer = Mage::helper('MiniOrange_2factor/mo2fUtility');
139
  if($customer->is_curl_installed()){
140
  $email = $params['loginemail'];
 
141
  $password = $params['loginpassword'];
 
142
  $admin = Mage::getSingleton('admin/session')->getUser();
143
  $id = $admin->getUserId();
144
- $content = $customer->get_customer_key($email,$password);
145
- $customerKey = json_decode($content, true);
146
- if(json_last_error() == JSON_ERROR_NONE) {
147
- $this->saveConfig('miniorange_2factor_email',$email,$id);
148
- $collection = Mage::getModel('admin/user')->getCollection();
149
- foreach($collection as $item){
150
- $ids=$item->getData('user_id');
151
- $this->saveConfig('miniorange_2factor_customer_key',$customerKey['id'],$ids);
152
- $this->saveConfig('miniorange_2factor_api_key',$customerKey['apiKey'],$ids);
153
- $this->saveConfig('miniorange_2factor_token',$customerKey['token'],$ids);
154
- if($ids!=$id){
155
- $this->saveConfig('miniorange_2factor_validated',0,$ids);
 
 
156
  }
 
 
 
 
 
 
 
157
  }
158
- $this->saveConfig('miniorange_2factor_pass',"",$id);
159
- $this->saveConfig('miniorange_2factor_show_otp',0,$id);
160
- $this->saveConfig('miniorange_2factor_show_configure',1,$id);
161
- $this->saveConfig('miniorange_2factor_validated',1,$id);
162
- $this->saveConfig('miniorange_2factor_login',0,$id);
163
- $this->displayMessage('Registration Successful. Please Configure your mobile below',"SUCCESS");
 
 
 
164
  $this->redirect("miniorange_2factor/adminhtml_index/index");
165
  }
166
  else{
167
- $this->saveConfig('miniorange_2factor_login',1,$id);
168
- $this->displayMessage('Invalid Credentials',"ERROR");
169
  $this->redirect("miniorange_2factor/adminhtml_index/index");
170
  }
171
  }
172
  else{
173
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
 
174
  }
175
  }
176
 
@@ -202,6 +220,7 @@ class MiniOrange_2factor_Adminhtml_IndexController extends Mage_Adminhtml_Contro
202
  }
203
  else{
204
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
 
205
  }
206
  }
207
 
@@ -240,6 +259,7 @@ class MiniOrange_2factor_Adminhtml_IndexController extends Mage_Adminhtml_Contro
240
  }
241
  else{
242
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
 
243
  }
244
  }
245
 
@@ -254,9 +274,11 @@ class MiniOrange_2factor_Adminhtml_IndexController extends Mage_Adminhtml_Contro
254
  }
255
  else{
256
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
 
257
  }
258
  }
259
 
 
260
  public function registrationSuccessAction(){
261
  $customer = Mage::helper('MiniOrange_2factor/mo2fUtility');
262
  if($customer->is_curl_installed()){
@@ -271,6 +293,7 @@ class MiniOrange_2factor_Adminhtml_IndexController extends Mage_Adminhtml_Contro
271
  }
272
  else{
273
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
 
274
  }
275
  }
276
 
@@ -294,6 +317,7 @@ class MiniOrange_2factor_Adminhtml_IndexController extends Mage_Adminhtml_Contro
294
  }
295
  else{
296
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
 
297
  }
298
  }
299
 
@@ -319,6 +343,7 @@ class MiniOrange_2factor_Adminhtml_IndexController extends Mage_Adminhtml_Contro
319
  }
320
  else{
321
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
 
322
  }
323
  }
324
 
@@ -397,6 +422,7 @@ class MiniOrange_2factor_Adminhtml_IndexController extends Mage_Adminhtml_Contro
397
  $this->displayMessage('Registration Complete. Please Configure your mobile',"SUCCESS");
398
  } else {
399
  $this->displayMessage('An error occurred while creating customer',"ERROR");
 
400
  }
401
  }else{
402
  $collection = Mage::getModel('admin/user')->getCollection();
@@ -420,6 +446,7 @@ class MiniOrange_2factor_Adminhtml_IndexController extends Mage_Adminhtml_Contro
420
  }
421
  else{
422
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
 
423
  }
424
  }
425
 
@@ -440,10 +467,23 @@ class MiniOrange_2factor_Adminhtml_IndexController extends Mage_Adminhtml_Contro
440
  }
441
  else{
442
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
 
443
  }
444
  }
445
 
446
-
 
 
 
 
 
 
 
 
 
 
 
 
447
 
448
 
449
  }
12
  Mage::getSingleton('core/session')->unsSuccessMessage();
13
  Mage::getSingleton('admin/session')->unsshowLoginSettings();
14
  Mage::getSingleton('admin/session')->unsOTPsent();
15
+ Mage::getSingleton('admin/session')->unsEnteredEmail();
16
  }
17
 
18
 
21
  $customer = Mage::helper('MiniOrange_2factor/mo2fUtility');
22
  if($customer->is_curl_installed()){
23
  $email = $params['email'];
24
+ Mage::getSingleton('admin/session')->setEnteredEmail($email);
25
  $password = $params['password'];
26
  $phone = $params['phone'];
27
  $confirmPassword = $params['confirmPassword'];
87
  }
88
  else{
89
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
90
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
91
  }
92
  }
93
 
133
  }
134
  else{
135
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
136
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
137
  }
138
  }
139
 
142
  $customer = Mage::helper('MiniOrange_2factor/mo2fUtility');
143
  if($customer->is_curl_installed()){
144
  $email = $params['loginemail'];
145
+ Mage::getSingleton('admin/session')->setEnteredEmail($email);
146
  $password = $params['loginpassword'];
147
+ $submit = $params['submit'];
148
  $admin = Mage::getSingleton('admin/session')->getUser();
149
  $id = $admin->getUserId();
150
+ if(strcasecmp($submit,"Submit") == 0){
151
+ $content = $customer->get_customer_key($email,$password);
152
+ $customerKey = json_decode($content, true);
153
+ if(json_last_error() == JSON_ERROR_NONE) {
154
+ $this->saveConfig('miniorange_2factor_email',$email,$id);
155
+ $collection = Mage::getModel('admin/user')->getCollection();
156
+ foreach($collection as $item){
157
+ $ids=$item->getData('user_id');
158
+ $this->saveConfig('miniorange_2factor_customer_key',$customerKey['id'],$ids);
159
+ $this->saveConfig('miniorange_2factor_api_key',$customerKey['apiKey'],$ids);
160
+ $this->saveConfig('miniorange_2factor_token',$customerKey['token'],$ids);
161
+ if($ids!=$id){
162
+ $this->saveConfig('miniorange_2factor_validated',0,$ids);
163
+ }
164
  }
165
+ $this->saveConfig('miniorange_2factor_pass',"",$id);
166
+ $this->saveConfig('miniorange_2factor_show_otp',0,$id);
167
+ $this->saveConfig('miniorange_2factor_show_configure',1,$id);
168
+ $this->saveConfig('miniorange_2factor_validated',1,$id);
169
+ $this->saveConfig('miniorange_2factor_login',0,$id);
170
+ $this->displayMessage('Registration Successful. Please Configure your mobile below',"SUCCESS");
171
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
172
  }
173
+ else{
174
+ $this->saveConfig('miniorange_2factor_login',1,$id);
175
+ $this->displayMessage('Invalid Credentials',"ERROR");
176
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
177
+ }
178
+ }
179
+ else if(strcasecmp($submit,"Forgot Password?") == 0){
180
+ $this->forgotPass($email);
181
+ $this->saveConfig('miniorange_2factor_login',1,$id);
182
  $this->redirect("miniorange_2factor/adminhtml_index/index");
183
  }
184
  else{
185
+ $this->saveConfig('miniorange_2factor_login',0,$id);
 
186
  $this->redirect("miniorange_2factor/adminhtml_index/index");
187
  }
188
  }
189
  else{
190
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
191
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
192
  }
193
  }
194
 
220
  }
221
  else{
222
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
223
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
224
  }
225
  }
226
 
259
  }
260
  else{
261
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
262
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
263
  }
264
  }
265
 
274
  }
275
  else{
276
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
277
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
278
  }
279
  }
280
 
281
+
282
  public function registrationSuccessAction(){
283
  $customer = Mage::helper('MiniOrange_2factor/mo2fUtility');
284
  if($customer->is_curl_installed()){
293
  }
294
  else{
295
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
296
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
297
  }
298
  }
299
 
317
  }
318
  else{
319
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
320
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
321
  }
322
  }
323
 
343
  }
344
  else{
345
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
346
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
347
  }
348
  }
349
 
422
  $this->displayMessage('Registration Complete. Please Configure your mobile',"SUCCESS");
423
  } else {
424
  $this->displayMessage('An error occurred while creating customer',"ERROR");
425
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
426
  }
427
  }else{
428
  $collection = Mage::getModel('admin/user')->getCollection();
446
  }
447
  else{
448
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
449
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
450
  }
451
  }
452
 
467
  }
468
  else{
469
  $this->displayMessage('cURL is not enabled. Please <a id="cURL" href="#cURLfaq">click here</a> to see how to enable cURL.',"ERROR");
470
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
471
  }
472
  }
473
 
474
+ private function forgotPass($email){
475
+ $customer = Mage::helper('MiniOrange_2factor/mo2fUtility');
476
+ $params = $this->getRequest()->getParams();
477
+ $content = json_decode($customer->forgot_password($email,$this->defaultCustomerKey,$this->defaultApiKey), true);
478
+ if(strcasecmp($content['status'], 'SUCCESS') == 0){
479
+ $this->displayMessage('Your new password has been generated and sent to '.$email.'.',"SUCCESS");
480
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
481
+ }
482
+ else{
483
+ $this->displayMessage('Sorry we encountered an error while reseting your password.',"ERROR");
484
+ $this->redirect("miniorange_2factor/adminhtml_index/index");
485
+ }
486
+ }
487
 
488
 
489
  }
app/code/community/{MiniOrange → miniOrange}/2factor/Controllers/Adminhtml/Login/miniOrangeController.php RENAMED
File without changes
app/code/community/{MiniOrange → miniOrange}/2factor/Helper/Data.php RENAMED
File without changes
app/code/community/{MiniOrange → miniOrange}/2factor/Helper/mo2fUtility.php RENAMED
@@ -26,7 +26,7 @@ class MiniOrange_2factor_Helper_mo2fUtility extends Mage_Core_Helper_Abstract{
26
  public $email;
27
  public $phone;
28
  public $hostname = "https://auth.miniorange.com";
29
-
30
 
31
  function getHostURl(){
32
  return $this->hostname;
@@ -84,12 +84,14 @@ class MiniOrange_2factor_Helper_mo2fUtility extends Mage_Core_Helper_Abstract{
84
  'customerKey' => $customerKey,
85
  'email' => $email,
86
  'authType' => $authType,
 
87
  );
88
  }else{
89
  $fields = array(
90
  'customerKey' => $customerKey,
91
  'username' => $email,
92
  'authType' => $authType,
 
93
  );
94
  }
95
 
@@ -184,7 +186,7 @@ class MiniOrange_2factor_Helper_mo2fUtility extends Mage_Core_Helper_Abstract{
184
 
185
  $fields = array(
186
  'companyName' => $_SERVER['SERVER_NAME'],
187
- 'areaOfInterest' => 'Magento 2 Factor Authentication Plugin',
188
  'email' => $email,
189
  'phone' => $phone,
190
  'password' => $password
@@ -358,6 +360,59 @@ class MiniOrange_2factor_Helper_mo2fUtility extends Mage_Core_Helper_Abstract{
358
  return $content;
359
  }
360
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
361
  /*Function to extract config stored in the database*/
362
  function getConfig($config,$id){
363
  switch($config){
26
  public $email;
27
  public $phone;
28
  public $hostname = "https://auth.miniorange.com";
29
+ public $pluginName = 'Magento 2 Factor Authentication Plugin';
30
 
31
  function getHostURl(){
32
  return $this->hostname;
84
  'customerKey' => $customerKey,
85
  'email' => $email,
86
  'authType' => $authType,
87
+ 'transactionName' => $this->pluginName,
88
  );
89
  }else{
90
  $fields = array(
91
  'customerKey' => $customerKey,
92
  'username' => $email,
93
  'authType' => $authType,
94
+ 'transactionName' => $this->pluginName,
95
  );
96
  }
97
 
186
 
187
  $fields = array(
188
  'companyName' => $_SERVER['SERVER_NAME'],
189
+ 'areaOfInterest' => $this->pluginName,
190
  'email' => $email,
191
  'phone' => $phone,
192
  'password' => $password
360
  return $content;
361
  }
362
 
363
+
364
+ function forgot_password($email,$defaultCustomerKey,$defaultApiKey){
365
+ $url = $this->hostname . '/moas/rest/customer/password-reset';
366
+ $ch = curl_init($url);
367
+
368
+ /* The customer Key provided to you */
369
+ $customerKey = $defaultCustomerKey;
370
+
371
+ /* The customer API Key provided to you */
372
+ $apiKey = $defaultApiKey;
373
+
374
+ /* Current time in milliseconds since midnight, January 1, 1970 UTC. */
375
+ $currentTimeInMillis = round(microtime(true) * 1000);
376
+
377
+ /* Creating the Hash using SHA-512 algorithm */
378
+ $stringToHash = $customerKey . number_format($currentTimeInMillis, 0, '', '') . $apiKey;
379
+ $hashValue = hash("sha512", $stringToHash);
380
+
381
+ $customerKeyHeader = "Customer-Key: " . $customerKey;
382
+ $timestampHeader = "Timestamp: " . $currentTimeInMillis;
383
+ $authorizationHeader = "Authorization: " . $hashValue;
384
+
385
+ $fields = '';
386
+
387
+ //*check for otp over sms/email
388
+ $fields = array(
389
+ 'email' => $email
390
+ );
391
+
392
+ $field_string = json_encode($fields);
393
+
394
+ curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
395
+ curl_setopt( $ch, CURLOPT_ENCODING, "" );
396
+ curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
397
+ curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
398
+ curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); # required for https urls
399
+
400
+ curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
401
+ curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", $customerKeyHeader,
402
+ $timestampHeader, $authorizationHeader));
403
+ curl_setopt( $ch, CURLOPT_POST, true);
404
+ curl_setopt( $ch, CURLOPT_POSTFIELDS, $field_string);
405
+ curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 5);
406
+ curl_setopt( $ch, CURLOPT_TIMEOUT, 20);
407
+ $content = curl_exec($ch);
408
+
409
+ if(curl_errno($ch)){
410
+ return null;
411
+ }
412
+ curl_close($ch);
413
+ return $content;
414
+ }
415
+
416
  /*Function to extract config stored in the database*/
417
  function getConfig($config,$id){
418
  switch($config){
app/code/community/{MiniOrange → miniOrange}/2factor/Model/Observer.php RENAMED
@@ -182,5 +182,5 @@ class MiniOrange_2factor_Model_Observer
182
  $session->unsshowsofttoken();
183
  Mage::dispatchEvent('admin_session_user_login_success',array('user'=>$user));
184
  }
185
-
186
  }
182
  $session->unsshowsofttoken();
183
  Mage::dispatchEvent('admin_session_user_login_success',array('user'=>$user));
184
  }
185
+
186
  }
app/code/community/{MiniOrange → miniOrange}/2factor/Model/Words.php RENAMED
File without changes
app/code/community/{MiniOrange → miniOrange}/2factor/etc/adminhtml.xml RENAMED
File without changes
app/code/community/{MiniOrange → miniOrange}/2factor/etc/config.xml RENAMED
@@ -8,11 +8,12 @@
8
  <modules>
9
  <!-- This must exactly match the namespace and module's folder names, with directory separators replaced by underscores -->
10
  <MiniOrange_2factor>
11
- <!-- The version of our module, starting at 0.0.1 -->
12
- <version>0.0.2</version>
13
  </MiniOrange_2factor>
14
  </modules>
15
 
 
16
  <!-- we are making changes to the backend -->
17
  <admin>
18
  <routers>
@@ -81,16 +82,7 @@
81
  </helpers>
82
 
83
  <!-- Defining our event observer -->
84
- <events>
85
- <admin_system_config_changed_section_miniorange_2factor_options>
86
- <observers>
87
- <adminhtml_config_save>
88
- <class>MiniOrange_2factor/observer</class>
89
- <method>changeSystemConfig</method>
90
- </adminhtml_config_save>
91
- </observers>
92
- </admin_system_config_changed_section_miniorange_2factor_options>
93
-
94
  <controller_action_predispatch>
95
  <observers>
96
  <miniorange_2factor_login>
8
  <modules>
9
  <!-- This must exactly match the namespace and module's folder names, with directory separators replaced by underscores -->
10
  <MiniOrange_2factor>
11
+ <!-- The version of our module -->
12
+ <version>1.0.2</version>
13
  </MiniOrange_2factor>
14
  </modules>
15
 
16
+
17
  <!-- we are making changes to the backend -->
18
  <admin>
19
  <routers>
82
  </helpers>
83
 
84
  <!-- Defining our event observer -->
85
+ <events>
 
 
 
 
 
 
 
 
 
86
  <controller_action_predispatch>
87
  <observers>
88
  <miniorange_2factor_login>
app/code/community/{MiniOrange → miniOrange}/2factor/sql/MiniOrange_2factor_setup/mysql4-install-0.0.1.php RENAMED
File without changes
app/design/adminhtml/default/default/template/miniorange_2factor/mo2fConfig.phtml CHANGED
@@ -9,27 +9,22 @@
9
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
10
  <script src="http://miniorange.com/js/intlTelInput.min.js"></script>
11
  <script>
12
- var $m=jQuery.noConflict();$m(document).ready(function(){$m("#phone").intlTelInput();$email="<?php echo $this->getConfig('email')?>";$showotp="<?php echo $this->getConfig('otp')?>";$showqr="<?php echo $this->getConfig('qrcode')?>";$configure="<?php echo $this->getConfig('configure')?>";$showlogin="<?php echo $this->getConfig('login')?>";$validated="<?php echo $this->getConfig('validated')?>";$downloaded="<?php echo $this->getConfig('downloaded')?>";$OTPsent="<?php echo Mage::getSingleton('admin/session')->getOTPsent();?>";$showloginsettings="<?php echo Mage::getSingleton('admin/session')->getshowLoginSettings(); ?>";$success='<?php echo Mage::getSingleton('core/session')->getSuccessMessage(); ?>';$error='<?php echo Mage::getSingleton('core/session')->getErrorMessage(); ?>';if($email==""){if($OTPsent!=""){$error="An error occured while saving your registration details. Please Flush you Magento Cache. [ <a id='preview9' href='#slider6'>Click Here</a> for a preview. ]"}}
13
- if($error!=""){$m(".error-msg span").empty();$m(".error-msg span").append($error);$m(".mini-messages li").css("display","block");$m(".success-msg").css("display","none");}
14
- if($success!=""){$m(".success-msg span").empty();$m(".success-msg span").append($success);$m(".mini-messages li").css("display","block");$m(".error-msg").css("display","none");}
15
- if($showotp==0&&$email!=""){$m("#account_setup").css("display","none");if($configure==1){$m("#configuremobile").css("display","block");voiddisplay("#configuremobile");setactive('configure_mobile');}
16
- else if($showloginsettings==1){$m("#login_settings").css("display","block");voiddisplay("#loginsettings");setactive('login_settings');$m("#displayQrCode").hide();$m("#configureMobileButton").css("display","block");}
17
- else{$m("#user_profile").css("display","block");voiddisplay("#userprofile");setactive('user_profile');$m("#displayQrCode").hide();$m("#configureMobileButton").css("display","block");}}
18
- else{if($showlogin==1){$m("#account_setup").css("display","block");$m("#already_registered").css("display","block");$m("#register_miniorange").css("display","none");voiddisplay("#accountsetup");$m("#user_profile").css("display","none");setactive('account_setup');}
19
- else if($validated==0&&$validated!=""){$m("#account_setup").css("display","block");$m("#additional_admin").css("display","block");$m("#register_miniorange").css("display","none");voiddisplay("#accountsetup");$m("#user_profile").css("display","none");setactive('account_setup');}
20
- else{$m("#account_setup").css("display","block");$m("#already_registered").css("display","none");$m("#register_miniorange").css("display","block");voiddisplay("#accountsetup");$m("#user_profile").css("display","none");setactive('account_setup');}}
21
- if($downloaded==1){$m('#showDownload').attr('checked',true);$m("#showDownload").val(1);}
22
- if($m("#showDownload").is(":checked")){$m("#configureqr").css("display","block");$m("#downloadscreen").css("display","none");}
23
- else{$m("#configureqr").css("display","none");$m("#downloadscreen").css("display","block");}
24
- if($showqr==1){$content="<?php echo "<img src='data:image/jpg;base64," . $this->getqrCode() . "'/>" ?>";$m("#displayQrCode").empty();$m("#displayQrCode").append($content);document.location.href="#displayQrCode";}
25
- if($showotp==1){$m(".register_miniorange").hide();$m("#additional_admin").hide();$m(".validate_otp").show();$m("#validateotp").focus();}
26
- else{$m(".validate_otp").hide();$m(".register_miniorange").show();}
27
- $m(".navbar a").click(function(){$id=this.className;setactive($id);$href=$m(this).attr('id')
28
- voiddisplay($href);});$m(".btn-link").click(function(){$m(".collapse").slideUp("slow");if(!$m(this).next("div").is(':visible')){$m(this).next("div").slideDown("slow");}});$m('#showDownload').change(function(){if($m(this).attr('checked')){$m(this).val(0);$m(this).attr('checked',false);}else{$m(this).val(1);$m(this).attr('checked',true);$m("#configureMobileButton").click();}
29
- $m("#downloadscreen").slideToggle();$m("#configureqr").slideToggle();document.location.href="#displayQrCode";});$m("#configureMobileButton").click(function(){$append='<span style=" background:url("http://auth.miniorange.com/moas/images/ajax-loader4.gif")no-repeat; display:block; margin: 3% auto;height:140px; width:140px"></span>'
30
- $m('#displayQrCode').append($append);$m('#displayQrCode').show();document.location.href="#displayQrCode";});$m('#preview1').click(function(){$m(".how_it_works").click();$m("#register-preview").click();document.location.href="#slider";});$m('#preview2').click(function(){$m(".how_it_works").click();$m("#recconfigure-preview").click();document.location.href="#slider5";});$m('#preview3').click(function(){$m(".how_it_works").click();});$m('#preview4').click(function(){$m(".how_it_works").click();$m("#loginQr-preview").click();document.location.href="#slider2";});$m('#preview5').click(function(){$m(".how_it_works").click();$m("#offline-preview").click();document.location.href="#slider3";});$m('#preview6').click(function(){$m(".how_it_works").click();$m("#phonelost-preview").click();document.location.href="#slider4";});$m('#preview7').click(function(){$m(".how_it_works").click();$m("#reconfigure-preview").click();document.location.href="#slider5";});$m('#preview8').click(function(){$m(".how_it_works").click();$m("#loginQr-preview").click();document.location.href="#slider2";});$m('#preview9').click(function(){$m(".how_it_works").click();$m("#cache-preview").click();document.location.href="#slider6";});$m('#error-cancel').click(function(){$error="";$m(".error-msg").css("display","none");});$m('#success-cancel').click(function(){$success="";$m(".success-msg").css("display","none");});$m('#cURL').click(function(){$m(".help_trouble").click();$m("#cURLfaq").click();});});function setactive($id){$m(".navbar-tabs>li").removeClass("active");$id='#'+$id;$m($id).addClass("active");}
31
- function voiddisplay($href){$m(".page").css("display","none");$m($href).css("display","block");}
32
- function mo2f_valid(f){!(/^[a-zA-Z?,.\(\)\/@ 0-9]*$/).test(f.value)?f.value=f.value.replace(/[^a-zA-Z?,.\(\)\/@ 0-9]/,''):null;}
33
  </script>
34
  <script>
35
  var $j=jQuery.noConflict();$j('#refrsh_qrcode').hide();var timeout;pollMobileRegistration();function pollMobileRegistration()
@@ -126,19 +121,21 @@
126
  <table class="table">
127
  <tr>
128
  <td><b><font color="#FF0000">*</font>Email:</b></td>
129
- <td><input class="" type="email" name="loginemail" autofocus="true" required placeholder="person@example.com" style="width:400px;" value="<?php echo $current_user->user_email;?>"/></td>
130
  </tr>
131
  <tr>
132
  <td><b><font color="#FF0000">*</font>Password:</b></td>
133
- <td><input class="" type="password" required name="loginpassword" style="width:400px;" placeholder="Choose your password with minimun 6 characters" pattern="[a-zA-Z0-9!@#$%^&*]{6,24}"/></td>
134
  </tr>
135
  </table>
136
  <br>
137
  <div class="button-align"><input type="submit" name="submit" value="Submit" class="" /></div>
138
- <span style="margin-left:10%;"><a href="<?php echo $this->getForgotPassUrl() ?>">Forgot Password?</a></span>
 
139
  </div>
140
  </div>
141
  </form>
 
142
  <form id="additional_admin" name="f" method="post" action="<?php echo $this->getadminurl('*/*/additionalAdmin') ?>">
143
  <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />
144
  <div class="login_miniorange">
9
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
10
  <script src="http://miniorange.com/js/intlTelInput.min.js"></script>
11
  <script>
12
+ var $m = jQuery.noConflict();
13
+ $m(document).ready(function() {
14
+ $m("#phone").intlTelInput();$email="<?php echo $this->getConfig('email')?>";$showotp="<?php echo $this->getConfig('otp')?>";$showqr="<?php echo $this->getConfig('qrcode')?>";$configure="<?php echo $this->getConfig('configure')?>";$showlogin="<?php echo $this->getConfig('login')?>";$validated="<?php echo $this->getConfig('validated')?>";$downloaded="<?php echo $this->getConfig('downloaded')?>";$OTPsent="<?php echo Mage::getSingleton('admin/session')->getOTPsent();?>";$showloginsettings="<?php echo Mage::getSingleton('admin/session')->getshowLoginSettings(); ?>";$success='<?php echo Mage::getSingleton('core/session')->getSuccessMessage(); ?>';$error='<?php echo Mage::getSingleton('core/session')->getErrorMessage(); ?>';if($email==""){if($OTPsent!=""){$error="An error occured while saving your registration details. Please Flush you Magento Cache. [ <a id='preview9' href='#slider6'>Click Here</a> for a preview. ]"}}
15
+ if($error!=""){$m(".error-msg span").empty();$m(".error-msg span").append($error);$m(".mini-messages li").css("display","block");$m(".success-msg").css("display","none");}
16
+ if($success!=""){$m(".success-msg span").empty();$m(".success-msg span").append($success);$m(".mini-messages li").css("display","block");$m(".error-msg").css("display","none");}
17
+ if($showotp==0&&$email!=""){$m("#account_setup").css("display","none");if($configure==1){$m("#configuremobile").css("display","block");voiddisplay("#configuremobile");setactive('configure_mobile');}else if($showloginsettings==1){$m("#login_settings").css("display","block");voiddisplay("#loginsettings");setactive('login_settings');$m("#displayQrCode").hide();$m("#configureMobileButton").css("display","block");}else{$m("#user_profile").css("display","block");voiddisplay("#userprofile");setactive('user_profile');$m("#displayQrCode").hide();$m("#configureMobileButton").css("display","block");}}else{if($showlogin==1){$m("#account_setup").css("display","block");$m("#already_registered").css("display","block");$m("#register_miniorange").css("display","none");voiddisplay("#accountsetup");$m("#user_profile").css("display","none");setactive('account_setup');}else if($validated==0&&$validated!=""){$m("#account_setup").css("display","block");$m("#additional_admin").css("display","block");$m("#register_miniorange").css("display","none");voiddisplay("#accountsetup");$m("#user_profile").css("display","none");setactive('account_setup');}else{$m("#account_setup").css("display","block");$m("#already_registered").css("display","none");$m("#register_miniorange").css("display","block");voiddisplay("#accountsetup");$m("#user_profile").css("display","none");setactive('account_setup');}}
18
+ if($downloaded==1){$m('#showDownload').attr('checked',true);$m("#showDownload").val(1);}
19
+ if($m("#showDownload").is(":checked")){$m("#configureqr").css("display","block");$m("#downloadscreen").css("display","none");}else{$m("#configureqr").css("display","none");$m("#downloadscreen").css("display","block");}
20
+ if($showqr==1){$content="<?php echo "<img src='data:image/jpg;base64," . $this->getqrCode() . "'/>" ?>";$m("#displayQrCode").empty();$m("#displayQrCode").append($content);document.location.href="#displayQrCode";}
21
+ if($showotp==1){$m(".register_miniorange").hide();$m("#additional_admin").hide();$m(".validate_otp").show();$m("#validateotp").focus();}else{$m(".validate_otp").hide();$m(".register_miniorange").show();}
22
+ $m(".navbar a").click(function(){$id=this.className;setactive($id);$href=$m(this).attr('id')
23
+ voiddisplay($href);});$m(".btn-link").click(function(){$m(".collapse").slideUp("slow");if(!$m(this).next("div").is(':visible')){$m(this).next("div").slideDown("slow");}});$m('#showDownload').change(function(){if($m(this).attr('checked')){$m(this).val(0);$m(this).attr('checked',false);}else{$m(this).val(1);$m(this).attr('checked',true);$m("#configureMobileButton").click();}
24
+ $m("#downloadscreen").slideToggle();$m("#configureqr").slideToggle();document.location.href="#displayQrCode";});$m("#configureMobileButton").click(function(){$append='<span style=" background:url("http://auth.miniorange.com/moas/images/ajax-loader4.gif")no-repeat; display:block; margin: 3% auto;height:140px; width:140px"></span>'
25
+ $m('#displayQrCode').append($append);$m('#displayQrCode').show();document.location.href="#displayQrCode";});$m('#preview1').click(function(){$m(".how_it_works").click();$m("#register-preview").click();document.location.href="#slider";});$m('#preview2').click(function(){$m(".how_it_works").click();$m("#recconfigure-preview").click();document.location.href="#slider5";});$m('#preview3').click(function(){$m(".how_it_works").click();});$m('#preview4').click(function(){$m(".how_it_works").click();$m("#loginQr-preview").click();document.location.href="#slider2";});$m('#preview5').click(function(){$m(".how_it_works").click();$m("#offline-preview").click();document.location.href="#slider3";});$m('#preview6').click(function(){$m(".how_it_works").click();$m("#phonelost-preview").click();document.location.href="#slider4";});$m('#preview7').click(function(){$m(".how_it_works").click();$m("#reconfigure-preview").click();document.location.href="#slider5";});$m('#preview8').click(function(){$m(".how_it_works").click();$m("#loginQr-preview").click();document.location.href="#slider2";});$m('#preview9').click(function(){$m(".how_it_works").click();$m("#cache-preview").click();document.location.href="#slider6";});$m('#error-cancel').click(function(){$error="";$m(".error-msg").css("display","none");});$m('#success-cancel').click(function(){$success="";$m(".success-msg").css("display","none");});$m('#cURL').click(function(){$m(".help_trouble").click();$m("#cURLfaq").click();});});function setactive($id){$m(".navbar-tabs>li").removeClass("active");$id='#'+$id;$m($id).addClass("active");}
26
+ function voiddisplay($href){$m(".page").css("display","none");$m($href).css("display","block");}
27
+ function mo2f_valid(f){!(/^[a-zA-Z?,.\(\)\/@ 0-9]*$/).test(f.value)?f.value=f.value.replace(/[^a-zA-Z?,.\(\)\/@ 0-9]/,''):null;}
 
 
 
 
 
28
  </script>
29
  <script>
30
  var $j=jQuery.noConflict();$j('#refrsh_qrcode').hide();var timeout;pollMobileRegistration();function pollMobileRegistration()
121
  <table class="table">
122
  <tr>
123
  <td><b><font color="#FF0000">*</font>Email:</b></td>
124
+ <td><input class="" type="email" name="loginemail" id="loginemail" autofocus="true" required placeholder="person@example.com" style="width:400px;" value="<?php echo Mage::getSingleton('admin/session')->getEnteredEmail(); ?>"/></td>
125
  </tr>
126
  <tr>
127
  <td><b><font color="#FF0000">*</font>Password:</b></td>
128
+ <td><input class="" type="password" name="loginpassword" style="width:400px;" placeholder="Choose your password with minimun 6 characters" pattern="[a-zA-Z0-9!@#$%^&*]{6,24}"/></td>
129
  </tr>
130
  </table>
131
  <br>
132
  <div class="button-align"><input type="submit" name="submit" value="Submit" class="" /></div>
133
+ <div class="button-align"><input type="submit" name="submit" value="Go back" class="" /></div>
134
+ <div class="button-align"><input type="submit" name="submit" value="Forgot Password?" class="" /></div>
135
  </div>
136
  </div>
137
  </form>
138
+
139
  <form id="additional_admin" name="f" method="post" action="<?php echo $this->getadminurl('*/*/additionalAdmin') ?>">
140
  <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />
141
  <div class="login_miniorange">
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>miniOrange_2factor</name>
4
- <version>1.0.1</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU General Public License (GPL)</license>
7
  <channel>community</channel>
@@ -9,47 +9,47 @@
9
  <summary>Enable Two Factor Authentication (2FA)- Supports QR code, Soft token, otp over sms).</summary>
10
  <description>A highly secure &amp;amp; easy to setup Two-Factor Authentication for your Magento site. miniOrange Two Factor authentication combines something you know, or something you have (smartphone) to reliably confirm your identity. &#xD;
11
  &#xD;
12
- Rather than relying on a password alone, which can be phished or guessed, miniOrange Two Factor authentication adds a second layer of security to your Magento accounts.&#xD;
13
- &#xD;
14
- Currently the extension supports:&#xD;
15
- * It works for administrators.&#xD;
16
- * You can set up your two factor in minutes.&#xD;
17
- * Both iPhone and Android phones are supported.&#xD;
18
- * If your phone is lost or stolen or discharged, it offers an alternate login method.&#xD;
19
- * If your phone is offline, you can use a one time passcode generated by app to login. &#xD;
20
- &#xD;
21
- &#xD;
22
- Feature phone, landline and two factor for frontend are also supported. You need to contact info@miniorange.com to enable it. &#xD;
23
- Trusted Device, Location, Time of access and user behavior is also supported. You need to enable this by contacting info@miniorange.com&#xD;
24
- &#xD;
25
- miniOrange supports 15+ authentication methods. For a complete list of authentication methods please visit http://miniorange.com/strong_auth . If you want to have any other 2-factor for your Magento site, &lt;a href="http://miniorange.com/contact"&gt;Contact us&lt;/a&gt;.&#xD;
26
- &#xD;
27
- * One time passcodes (OTP) over SMS&#xD;
28
- * OTP over Email&#xD;
29
- * OTP over SMS and Email&#xD;
30
- * Out of Band SMS&#xD;
31
- * Out of Band Email&#xD;
32
- * Soft Token&#xD;
33
- * Push Notification&#xD;
34
- * USB based Hardware token (&lt;b&gt;yubico&lt;/b&gt;)&#xD;
35
- * Security Questions&#xD;
36
- * Mobile Authentication&#xD;
37
- * Voice Authentication (Biometrics)&#xD;
38
- * Phone Verification&#xD;
39
- * Device Identification&#xD;
40
- * Location&#xD;
41
- * Time of Access&#xD;
42
- * User Behavior&#xD;
43
- &#xD;
44
- You can choose from any of the above authentication methods to augment your password based authentication. miniOrange authentication service works with all phone types, from landlines to smart-phone platforms.&#xD;
45
- &#xD;
46
- For support please email us at info@miniorange.com or call us at +1 978 658 9387</description>
47
- <notes>== 1.0.1 ==&#xD;
48
- Bug Fixes</notes>
49
  <authors><author><name>miniOrange inc.</name><user>miniOrange</user><email>info@miniorange.com</email></author></authors>
50
- <date>2015-08-20</date>
51
- <time>09:19:48</time>
52
- <contents><target name="magecommunity"><dir name="MiniOrange"><dir name="2factor"><dir name="Block"><file name="mo2fConfig.php" hash="6f5486001145809e212edb86dae5c069"/></dir><dir name="Controllers"><dir name="Adminhtml"><file name="IndexController.php" hash="ad19420a46e349cb13066e0a9dbc804c"/><dir name="Login"><file name="miniOrangeController.php" hash="78d1f305733dc764a87229ea4646a479"/></dir></dir><file name="IndexController.php" hash="10c33497b9bd95b36736d17836ba4c32"/></dir><dir name="Helper"><file name="Data.php" hash="34cbc1036639606723524e411926e15c"/><file name="mo2fUtility.php" hash="416fcc63f606d69665eca24d09c5b52c"/></dir><dir name="Model"><file name="Observer.php" hash="bff2b49fa55e170da17d32909d9e0238"/><file name="Words.php" hash="ee26cc8582d5bbad5632a6e02129f815"/></dir><dir name="etc"><file name="adminhtml.xml" hash="955f9f87d1a5df39eea9fd69379af0ee"/><file name="config.xml" hash="b9cefff138b6350a6a2fb1a45cad4d6e"/></dir><dir name="sql"><dir name="MiniOrange_2factor_setup"><file name="mysql4-install-0.0.1.php" hash="1a05fb90202ca98975ac396006178dec"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="miniorange_2factor_admin.xml" hash="49671205b07f54681d1f93fec9ee4d67"/></dir><dir name="template"><dir name="miniorange_2factor"><file name="login.phtml" hash="06b1788d232f30e62aadb273bda634f5"/><file name="mo2fConfig.phtml" hash="f5b79cb27b2ce203aed095f96f3deac7"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="images"><dir name="MiniOrange_2factor"><file name="appstore.png" hash="1ac5eb0f971fd8cbeac4d3e4449cd9f0"/><file name="arrow.png" hash="47bdba61de621d8ca74c16f6dd5b6565"/><file name="authenticate.png" hash="052bcae5504f3a9c61365ecf8ab0c4e7"/><file name="authvalidate.png" hash="a01eaf3a0002b3e7115813fd4e4efe1a"/><file name="cachesetting.png" hash="15942adf97c0d48abdf2c583c94eb4f5"/><file name="clickconfiguremobile.png" hash="3ee49ca9596e3ad507d66aca43466ea3"/><file name="clickconfiguremobile2.png" hash="fc0ff15007ea57e3ceef75235056dc88"/><file name="configurefirsttime.png" hash="c6982bcd3f70080d893e3da11d2a77d8"/><file name="configuremobile.png" hash="013d6599af7a31fb53a895d877ab1ffe"/><file name="forgot-phone.png" hash="64cfe82547e4db88d025346477025cfe"/><file name="forgotphone.png" hash="4272645ec478f1479fc3dc56df5dd89b"/><file name="loggedin.png" hash="70cc5cad9c475ef9420aa3d70bc43102"/><file name="login1.png" hash="c0dce259d0e2e84957ba77c6e2e78abb"/><file name="login2.png" hash="99e2c32c2fd5f9c9acf6a8002e1d44ac"/><file name="login3.png" hash="305c7bbdb97da888970b7225641757f0"/><file name="loginsettings.png" hash="811b9792a0e47f7e483d01a7ded0ccd0"/><file name="mail.png" hash="751f9588f2e2aac3ec47a6b0ebb2fa4d"/><file name="miniorange_logo.png" hash="b1cd21c2deeb5f199fb55de487bf950b"/><file name="mobileconfigurebutton.png" hash="747a6057cd50099e1cb3b5041320bd85"/><file name="mobilescan.png" hash="dec68c53b12944a45140d909af803fdd"/><file name="mobilesuccess.png" hash="d977fd41088cf0677f33e77de13da56c"/><file name="otp.png" hash="74dc1d7644af2013d256852d26bc920b"/><file name="phone-offline.png" hash="81b25f8125b13fd4d96c23a6fa84574e"/><file name="playStore.png" hash="fbca6f8b28d05c3bcd833965289a20c2"/><file name="processing.png" hash="56b1a14bd1558354250a7a232a4d16e7"/><file name="register.png" hash="37be41049f1d79215322a8cf908bf7b3"/><file name="right.png" hash="2321d72c95ee1fd5708199f56f213136"/><file name="savecache.png" hash="cf686304f47b080ec98930be8bb0f869"/><file name="scanqr.png" hash="dc4c1d070d9b336c790cd2d1d5315ee6"/><file name="sendingotp.png" hash="28c93249e717916d0f3c974b1cd2af7d"/><file name="settings.png" hash="a3e0382615d3f19f5a0dab4d4accbf2d"/><file name="softokenmobile.png" hash="624d589cdfa031df456e25a2ff034e63"/><file name="softtoken.png" hash="804bd9b0a3a600e6f349a6aa4ea00899"/><file name="sync.png" hash="8fffca24e6184fc3f9af8e20feac430b"/><file name="wrong.png" hash="6bd49538f79c4722610c5535f38213af"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="miniorange_2factor.xml" hash="609cb91239fb4a89f64ae28d4b5b5398"/></dir></target></contents>
53
  <compatible/>
54
  <dependencies><required><php><min>5.3.10</min><max>5.6.11</max></php><extension><name>curl</name><min>7.40.0</min><max>7.44.0</max></extension></required></dependencies>
55
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>miniOrange_2factor</name>
4
+ <version>1.0.2</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU General Public License (GPL)</license>
7
  <channel>community</channel>
9
  <summary>Enable Two Factor Authentication (2FA)- Supports QR code, Soft token, otp over sms).</summary>
10
  <description>A highly secure &amp;amp; easy to setup Two-Factor Authentication for your Magento site. miniOrange Two Factor authentication combines something you know, or something you have (smartphone) to reliably confirm your identity. &#xD;
11
  &#xD;
12
+ &lt;p&gt;Rather than relying on a password alone, which can be phished or guessed, miniOrange Two Factor authentication adds a second layer of security to your Magento accounts.&lt;/p&gt;&#xD;
13
+ &#xD;
14
+ &lt;p&gt;Currently the extension supports:&#xD;
15
+ &lt;br /&gt;* It works for administrators.&#xD;
16
+ &lt;br /&gt;* You can set up your two factor in minutes.&#xD;
17
+ &lt;br /&gt;* Both iPhone and Android phones are supported.&#xD;
18
+ &lt;br /&gt;* If your phone is lost or stolen or discharged, it offers an alternate login method.&#xD;
19
+ &lt;br /&gt;* If your phone is offline, you can use a one time passcode generated by app to login.&lt;/p&gt;&#xD;
20
+ &#xD;
21
+ &#xD;
22
+ &lt;p&gt;Feature phone, landline and two factor for frontend are also supported. You need to contact info@miniorange.com to enable it.&#xD;
23
+ Trusted Device, Location, Time of access and user behavior is also supported. You need to enable this by contacting info@miniorange.com&lt;/p&gt;&#xD;
24
+ &#xD;
25
+ &lt;p&gt;miniOrange supports 15+ authentication methods. For a complete list of authentication methods please visit http://miniorange.com/strong_auth . If you want to have any other 2-factor for your Magento site, &lt;a href="http://miniorange.com/contact"&gt;Contact us&lt;/a&gt;.&lt;/p&gt;&#xD;
26
+ &#xD;
27
+ &lt;p&gt;* One time passcodes (OTP) over SMS&#xD;
28
+ &lt;br /&gt;* OTP over Email&#xD;
29
+ &lt;br /&gt;* OTP over SMS and Email&#xD;
30
+ &lt;br /&gt;* Out of Band SMS&#xD;
31
+ &lt;br /&gt;* Out of Band Email&#xD;
32
+ &lt;br /&gt;* Soft Token&#xD;
33
+ &lt;br /&gt;* Push Notification&#xD;
34
+ &lt;br /&gt;* USB based Hardware token (&lt;b&gt;yubico&lt;/b&gt;)&#xD;
35
+ &lt;br /&gt;* Security Questions&#xD;
36
+ &lt;br /&gt;* Mobile Authentication&#xD;
37
+ &lt;br /&gt;* Voice Authentication (Biometrics)&#xD;
38
+ &lt;br /&gt;* Phone Verification&#xD;
39
+ &lt;br /&gt;* Device Identification&#xD;
40
+ &lt;br /&gt;* Location&#xD;
41
+ &lt;br /&gt;* Time of Access&#xD;
42
+ &lt;br /&gt;* User Behavior&lt;/p&gt;&#xD;
43
+ &#xD;
44
+ &lt;p&gt;You can choose from any of the above authentication methods to augment your password based authentication. miniOrange authentication service works with all phone types, from landlines to smart-phone platforms.&lt;/p&gt;&#xD;
45
+ &#xD;
46
+ &lt;p&gt;For support please email us at info@miniorange.com or call us at +1 978 658 9387&lt;/p&gt;</description>
47
+ <notes>1.0.2&#xD;
48
+ == Bug Fix ==</notes>
49
  <authors><author><name>miniOrange inc.</name><user>miniOrange</user><email>info@miniorange.com</email></author></authors>
50
+ <date>2015-08-21</date>
51
+ <time>07:46:19</time>
52
+ <contents><target name="magecommunity"><dir name="miniOrange"><dir name="2factor"><dir name="Block"><file name="mo2fConfig.php" hash="b8bdfeda5b75c15f9ddbcae5adaaa413"/></dir><dir name="Controllers"><dir name="Adminhtml"><file name="IndexController.php" hash="e36c45ea8d719d643a24dbca1787e7ca"/><dir name="Login"><file name="miniOrangeController.php" hash="78d1f305733dc764a87229ea4646a479"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="34cbc1036639606723524e411926e15c"/><file name="mo2fUtility.php" hash="d01340877a2b6d9cdc49922582ee54a6"/></dir><dir name="Model"><file name="Observer.php" hash="9943902d65c40ba35052e5a027a1ca75"/><file name="Words.php" hash="ee26cc8582d5bbad5632a6e02129f815"/></dir><dir name="etc"><file name="adminhtml.xml" hash="955f9f87d1a5df39eea9fd69379af0ee"/><file name="config.xml" hash="749ad39ccb5acb5637b0a264c9d8be8a"/></dir><dir name="sql"><dir name="MiniOrange_2factor_setup"><file name="mysql4-install-0.0.1.php" hash="1a05fb90202ca98975ac396006178dec"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="miniorange_2factor_admin.xml" hash="49671205b07f54681d1f93fec9ee4d67"/></dir><dir name="template"><dir name="miniorange_2factor"><file name="login.phtml" hash="06b1788d232f30e62aadb273bda634f5"/><file name="mo2fConfig.phtml" hash="c7a52e80c2069f08907cf4722d425d90"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="miniorange_2factor.xml" hash="609cb91239fb4a89f64ae28d4b5b5398"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="images"><dir name="MiniOrange_2factor"><file name="appstore.png" hash="1ac5eb0f971fd8cbeac4d3e4449cd9f0"/><file name="arrow.png" hash="47bdba61de621d8ca74c16f6dd5b6565"/><file name="authenticate.png" hash="052bcae5504f3a9c61365ecf8ab0c4e7"/><file name="authvalidate.png" hash="a01eaf3a0002b3e7115813fd4e4efe1a"/><file name="cachesetting.png" hash="15942adf97c0d48abdf2c583c94eb4f5"/><file name="clickconfiguremobile.png" hash="3ee49ca9596e3ad507d66aca43466ea3"/><file name="clickconfiguremobile2.png" hash="fc0ff15007ea57e3ceef75235056dc88"/><file name="configurefirsttime.png" hash="c6982bcd3f70080d893e3da11d2a77d8"/><file name="configuremobile.png" hash="013d6599af7a31fb53a895d877ab1ffe"/><file name="forgot-phone.png" hash="64cfe82547e4db88d025346477025cfe"/><file name="forgotphone.png" hash="4272645ec478f1479fc3dc56df5dd89b"/><file name="loggedin.png" hash="70cc5cad9c475ef9420aa3d70bc43102"/><file name="login1.png" hash="c0dce259d0e2e84957ba77c6e2e78abb"/><file name="login2.png" hash="99e2c32c2fd5f9c9acf6a8002e1d44ac"/><file name="login3.png" hash="305c7bbdb97da888970b7225641757f0"/><file name="loginsettings.png" hash="811b9792a0e47f7e483d01a7ded0ccd0"/><file name="mail.png" hash="751f9588f2e2aac3ec47a6b0ebb2fa4d"/><file name="miniorange_logo.png" hash="b1cd21c2deeb5f199fb55de487bf950b"/><file name="mobileconfigurebutton.png" hash="747a6057cd50099e1cb3b5041320bd85"/><file name="mobilescan.png" hash="dec68c53b12944a45140d909af803fdd"/><file name="mobilesuccess.png" hash="d977fd41088cf0677f33e77de13da56c"/><file name="otp.png" hash="74dc1d7644af2013d256852d26bc920b"/><file name="phone-offline.png" hash="81b25f8125b13fd4d96c23a6fa84574e"/><file name="playStore.png" hash="fbca6f8b28d05c3bcd833965289a20c2"/><file name="processing.png" hash="56b1a14bd1558354250a7a232a4d16e7"/><file name="register.png" hash="37be41049f1d79215322a8cf908bf7b3"/><file name="right.png" hash="2321d72c95ee1fd5708199f56f213136"/><file name="savecache.png" hash="cf686304f47b080ec98930be8bb0f869"/><file name="scanqr.png" hash="dc4c1d070d9b336c790cd2d1d5315ee6"/><file name="sendingotp.png" hash="28c93249e717916d0f3c974b1cd2af7d"/><file name="settings.png" hash="a3e0382615d3f19f5a0dab4d4accbf2d"/><file name="softokenmobile.png" hash="624d589cdfa031df456e25a2ff034e63"/><file name="softtoken.png" hash="804bd9b0a3a600e6f349a6aa4ea00899"/><file name="sync.png" hash="8fffca24e6184fc3f9af8e20feac430b"/><file name="wrong.png" hash="6bd49538f79c4722610c5535f38213af"/></dir></dir></dir></dir></dir></target></contents>
53
  <compatible/>
54
  <dependencies><required><php><min>5.3.10</min><max>5.6.11</max></php><extension><name>curl</name><min>7.40.0</min><max>7.44.0</max></extension></required></dependencies>
55
  </package>