Doug Black
Posts: 0
Joined: Wed Aug 14, 2013 11:36 am

Forgot Password Service

Hey team! I have been working on a "Forgot password" page and link for my app. I have been trying to figure out how to do this with server code or not, and just can't get it.

If I do it from within the app, it asks for a token. And I can't figure out how to map the service from the server code (though I have an initial one set up).

Help...please! :) I just can't figure this one out.

Alena Prykhodko
Posts: 0
Joined: Tue Apr 09, 2013 7:36 am

Forgot Password Service

Hello!

What exactly have you tried?
Please tell us more details, share screen shots, etc.

Doug Black
Posts: 0
Joined: Wed Aug 14, 2013 11:36 am

Forgot Password Service

I created this UI:
Image
Based on this great response by Marina.

I created the basic server code; I hadn't made any changes to it.

I created the REST service as such:
Image
Image
Image
Image

The service states it works in the test, but all it returns is the basic response, no matter what you put in.
Image
Image

I just honestly have no idea where to go from here.

Maryna Brodina
Posts: 0
Joined: Thu Apr 05, 2012 7:27 am

Forgot Password Service

Hello! Could you post your JS from Source tab?

Doug Black
Posts: 0
Joined: Wed Aug 14, 2013 11:36 am

Forgot Password Service

Code: Select all

 
 /* 
  * JS for forgotPassword generated by Appery.io 
  * 
  */ 

 Appery.getProjectGUID = function() { 
     return 'b08fa583-d8f9-445d-badd-9accb98031e5'; 
 } 

 function navigateTo(outcome, useAjax) { 
     Appery.navigateTo(outcome, useAjax); 
 } 

 function adjustContentHeight() { 
     Appery.adjustContentHeight(); 
 } 

 function adjustContentHeightWithPadding() { 
     Appery.adjustContentHeightWithPadding(); 
 } 

 function setDetailContent(pageUrl) { 
     Appery.setDetailContent(pageUrl); 
 } 

 Appery.AppPages = [{ 
     "name": "RunEvent", 
     "location": "RunEvent.html" 
 }, { 
     "name": "addChild", 
     "location": "addChild.html" 
 }, { 
     "name": "helpScreen", 
     "location": "helpScreen.html" 
 }, { 
     "name": "register", 
     "location": "register.html" 
 }, { 
     "name": "forgotPassword", 
     "location": "forgotPassword.html" 
 }, { 
     "name": "gNot", 
     "location": "gNot.html" 
 }, { 
     "name": "introPage", 
     "location": "introPage.html" 
 }, { 
     "name": "credits", 
     "location": "credits.html" 
 }, { 
     "name": "editSettings", 
     "location": "editSettings.html" 
 }, { 
     "name": "addGuardian", 
     "location": "addGuardian.html" 
 }, { 
     "name": "notifyDefault", 
     "location": "notifyDefault.html" 
 }, { 
     "name": "editGC", 
     "location": "editGC.html" 
 }, { 
     "name": "lNot", 
     "location": "lNot.html" 
 }, { 
     "name": "signIn", 
     "location": "signIn.html" 
 }]; 

 forgotPassword_js = function(runBeforeShow) { /* Object & array with components "name-to-id" mapping */ 
     var n2id_buf = { 
         'gridEmail': 'forgotPassword_gridEmail', 
         'mobilegridcell_8': 'forgotPassword_mobilegridcell_8', 
         'inputConfirmEmail': 'forgotPassword_inputConfirmEmail', 
         'mobilegridcell_10': 'forgotPassword_mobilegridcell_10', 
         'buttonSendEmail': 'forgotPassword_buttonSendEmail', 
         'gridCode': 'forgotPassword_gridCode', 
         'mobilegridcell_13': 'forgotPassword_mobilegridcell_13', 
         'inputConfirmCode': 'forgotPassword_inputConfirmCode', 
         'mobilegridcell_15': 'forgotPassword_mobilegridcell_15', 
         'submitCode': 'forgotPassword_submitCode', 
         'gridPass': 'forgotPassword_gridPass', 
         'mobilegridcell_23': 'forgotPassword_mobilegridcell_23', 
         'mobiletextinput_5': 'forgotPassword_mobiletextinput_5', 
         'mobilegridcell_25': 'forgotPassword_mobilegridcell_25', 
         'mobiletextinput_6': 'forgotPassword_mobiletextinput_6', 
         'mobilegridcell_27': 'forgotPassword_mobilegridcell_27', 
         'buttonChangePassword': 'forgotPassword_buttonChangePassword' 
     }; 

     if ("n2id" in window && window.n2id !== undefined) { 
         $.extend(n2id, n2id_buf); 
     } else { 
         window.n2id = n2id_buf; 
     } 

     if (navigator.userAgent.indexOf("IEMobile") != -1) { 
         //Fixing issue [url=https://github.com/jquery/jquery-mobile/issues/5424]https://github.com/jquery/jquery-mobi...[/url] on Windows Phone 
         $("div[data-role=footer]").css("bottom", "-36px"); 
     } 

     Appery.CurrentScreen = 'forgotPassword'; 

     /* 
      * Nonvisual components 
      */ 
     var datasources = []; 

     recoverSendEmail = new Appery.DataSource(SendGrid_MailSend, { 
         'onComplete': function(jqXHR, textStatus) { 

 $t.refreshScreenFormElements("forgotPassword"); 
         }, 
         'onSuccess': function(data) { 
             MessageDialog('Nursery Alert Says...', 'Nursery Alert Says...', 'You will receive an email with further instructions! Hit OK AFTER you receive the email.'); 
             toggle('forgotPassword_gridEmail', 'mob', 'false'); 
             toggle('forgotPassword_gridCode', 'mob', 'true'); 
             toggle('forgotPassword_gridPass', 'mob', 'false'); 
         }, 
         'onError': function(jqXHR, textStatus, errorThrown) {}, 
         'responseMapping': [], 
         'requestMapping': [{ 
             'PATH': ['to'], 
             'ID': 'inputConfirmEmail', 
             'ATTR': 'value' 
         }, { 
             'PATH': ['subject'], 
             'ATTR': 'Nursery Alert Password Reset' 
         }, { 
             'PATH': ['text'], 
             'ID': '___local_storage___', 
             'ATTR': 'recoverPass', 
             'TRANSFORMATION': function(value) { 
                 return 'Hello friend! A recent password reset request was requested for this email address. On the app, please enter the code: ' + value + '. Hit confirm and you will be given the opportunity to change password. ~ Support'; 
             } 
         }, { 
             'PATH': ['from'], 
             'ATTR': 'a href="mailto:support@nurseryalert.net" rel="nofollow"support@nurseryalert.net/a' 
         }, { 
             'PATH': ['api_user'], 
             'ATTR': '{api_user}' 
         }, { 
             'PATH': ['api_key'], 
             'ATTR': '{api_key}' 
         }, { 
             'PATH': ['appery-proxy-url'], 
             'HEADER': true, 
             'ATTR': '[url=http://sendgrid.com/api/mail.send.json]http://sendgrid.com/api/mail.send.json[/url]' 
         }, { 
             'PATH': ['appery-key'], 
             'HEADER': true, 
             'ATTR': '1379935239054' 
         }, { 
             'PATH': ['appery-rest'], 
             'HEADER': true, 
             'ATTR': '2498182' 
         }] 
     }); 

 datasources.push(recoverSendEmail); 

 scGetId = new Appery.DataSource(scRecoverCode, { 
     'onComplete': function(jqXHR, textStatus) { 

         $t.refreshScreenFormElements("forgotPassword"); 
     }, 
     'onSuccess': function(data) { 
         alert('Holy crap! ' + localStorage.getItem('artistPrince')); 
     }, 
     'onError': function(jqXHR, textStatus, errorThrown) {}, 
     'responseMapping': [{ 
         'PATH': ['_id'], 
         'ID': '___local_storage___', 
         'ATTR': 'artistPrince' 
     }], 
     'requestMapping': [{ 
         'PATH': ['DB_id'], 
         'ATTR': '{database_id}' 
     }, { 
         'PATH': ['where'], 
         'ID': 'inputConfirmEmail', 
         'ATTR': 'value', 
         'TRANSFORMATION': function(value) { 
             return '{"email": "' + value + '" }'; 
         } 
     }] 
 }); 

 datasources.push(scGetId); 

 /* 
  * Events and handlers 
  */ 

 // Before Show 
 forgotPassword_beforeshow = function() { 
     Appery.CurrentScreen = "forgotPassword"; 
     for (var idx = 0; idx < datasources.length; idx++) { 
         datasources[idx].__setupDisplay(); 
     } 
 } 

 // On Load 
 screen_5DC2_onLoad = forgotPassword_onLoad = function() { 
     screen_5DC2_elementsExtraJS(); 

     // TODO fire device events only if necessary (with JS logic) 
     forgotPassword_deviceEvents(); 
     forgotPassword_windowEvents(); 
     screen_5DC2_elementsEvents(); 
 } 

 // screen window events 
 screen_5DC2_windowEvents = forgotPassword_windowEvents = function() { 
     $('#forgotPassword').bind('pageshow orientationchange', function() { 
         adjustContentHeightWithPadding(); 
     }); 

 } 

 // device events 
 forgotPassword_deviceEvents = function() { 

     document.addEventListener("deviceready", function() { 

     }); 
 } 

 // screen elements extra js 
 screen_5DC2_elementsExtraJS = forgotPassword_elementsExtraJS = function() { 
     // screen (forgotPassword) extra code 

 } 

 // screen elements handler 
 screen_5DC2_elementsEvents = forgotPassword_elementsEvents = function() { 

     $("a :input,a a,a fieldset label").live({ 
         click: function(event) { 
             event.stopPropagation(); 
         } 
     }); 

     $('#forgotPassword_mobilecontainer [name="buttonSendEmail"]').die().live({ 
         click: function() { 
             if (!$(this).attr('disabled')) { 
                 var randomString = Math.random().toString(36).slice(-12); 
                 localStorage.setItem('recoverPass', randomString); 
                 try { 
                     scGetId.execute({}) 
                 } catch (ex) { 
                     console.log(ex.name + '  ' + ex.message); 
                     hideSpinner(); 
                 }; 

             } 
         }, 
     }); 

     $('#forgotPassword_mobilecontainer [name="submitCode"]').die().live({ 
         click: function() { 
             if (!$(this).attr('disabled')) { //check code; 
             } 
         }, 
     }); 

 } 

 $("#forgotPassword").die("pagebeforeshow").live("pagebeforeshow", function(event, ui) { 
     forgotPassword_beforeshow(); 
 }); 

 if (runBeforeShow) { 
     forgotPassword_beforeshow(); 
 } else { 
     forgotPassword_onLoad(); 
 } 

 } 

 $("#forgotPassword").die("pageinit").live("pageinit", function(event, ui) { 
     Appery.processSelectMenu($(this)); 
     forgotPassword_js(); 
 }); 
 
Maryna Brodina
Posts: 0
Joined: Thu Apr 05, 2012 7:27 am

Forgot Password Service

You incorrectly fill in where field. There should be json object, for example pre{"pie": "yummy"}/pre where pie is column name in collection you're doing a search

Maryna Brodina
Posts: 0
Joined: Thu Apr 05, 2012 7:27 am

Forgot Password Service

In request parameters should be header parameter X-Appery-Database-Id with value {database_id}, but you have DB_id parameter instead and it's not header

Doug Black
Posts: 0
Joined: Wed Aug 14, 2013 11:36 am

Forgot Password Service

Changed it. Still returning null.

Kateryna Grynko
Posts: 0
Joined: Thu Nov 15, 2012 9:13 am

Forgot Password Service

Hi Doug,

We are working on it. This may take some time.

Doug Black
Posts: 0
Joined: Wed Aug 14, 2013 11:36 am

Forgot Password Service

Thank you! Much appreciated!

Return to “Issues”