Last but one week for the Google Summer of Code 2019 session just wrapped up and we’re in the final stretch of the program. Its been a rollercoaster ride so far but I am contented with the progress that has been made. Over the course of the week, I was able to introduce a user email field into the user creation process such that a user email is a mandatory part of the user object which is saved when a user is created. That way, subsequent password resets would not need a user adding their email via the mysql terminal as has been done previously.
Day by day, we edge closer to the end of the Google Summer of Code 2019 session and what a ride it has been so far. Over the course of the week, I was able to
- Refactor the react code for the PasswordReset user interface so it meets OpenMRS’ standards.
- Ensured that a user cannot reset their password if their password and password confirmation does not match, and also if the password is a weak password(the user gets a visual representation of this using a progress bar.)
- Experimented with different implementations of adding the user field to the user creation interface, such that the user.email column in he users table is populated when a user is created, and not by crude sql commands afterwards. Now my main focus is implementing this functionality, and carrying out some bug testing.
The second evaluation has come and gone for Google Summer of Code 2019 as we edge closer to the end of this years program. Over the course of the week, I was able to complete my evaluation and make the following code updates.
- Update the password reset page with a new component that automatically checks for the strength of the user password and displays it as a progress bar with multiple colors
- Ensure the password reset button is disabled if the password and password confirmation does not match.
- Reverted the browser information functionality I implemented earlier as that was deemed not necessary.
We’re now in the final stretch of GSoC 2019. Wish me luck!
Its past the half way point of the Google Summer of Code 2019 and my project is entering its final stages. Just a few things and minor tweaks left to be done on the User Interface and the Java backend. Over the course of this week, I was able to update the password reset template with browser information from the browser that launched the password reset. This is just to give the user an insight into what browser and what device in general launched the password reset; in the case where the user himself initiated the password reset, this information would just serve confirmation purposes. But in the case where someone else is trying to maliciously access a users account by reseting their password, this feature will give the user some information that might end up being valuable. This functionality captures the browser name and version from which the password reset was launched, the operating system name and version of the device and the typeof device(mobile or desktop, as well as the Vendor of the device, for example in the case of a Macbook, the vendor is Apple).
I was also able to transfer all the texts from the password reset template to the message.properties file so as to ease translation.
So far, so good, week 7 of the 2019 session of the Google Summer of Code wrapped up and it was a little uneventful for me. Could not get much work done due to some other pressing personal issues, but still managed to stay ahead of my schedule by working and fixing some bugs I had with the activation key implementation from the previous week. Now, the password reset mechanism works flawlessly.
- When a user wants to reset their password, they launch the OpenMRS Password Reset OWA. It prompts them to enter their email or openmrs username.
- Once that is done, an email is sent to the email which they entered, or the email associated to the username which was entered.
- This email contains a unique activation key, which verifies and authenticates a users request.
- This activation key is then passed back to the react app as a react url parameter, and is used for validation once the user sets his/her new password.
- The user can then log in with this new password successfully.
After having a call with my mentor, we singled out some things which need to be handled, but all in all, we are on track to wrap up this project ahead of schedule.
Week six of GSOC 2019 just wrapped up, and every coming day we edge closer to the end of the program. Over the course of the week, I was able to
– Fixed the error my mentor pointed out regarding a bug in the code which I missed. This bug threw a null pointer exception when the user initiates the password reset sequence. I’d have my mentor test it and give me his feedback once I make the commits.
– Worked on a general purpose Toast component which I’ll use to display messages to the user depending on the event. Such as in the password confirmation page if both passwords do not correspond, or if a user doesn’t exist in the system or in any other scenario in which a message will need to be displayed to the user. I expect to be done with this by the end of this week so it could be tested and any necessary changes made.
The fifth week of gsoc 2019 was dedicated to the First Evaluations. Over the course of this week, I carried out my gsoc evaluations concerning the work I had done so far, and did a personal evaluation to see what I had covered and what was left ahead of me in my project, and revised my timeline in order to accommodate the minor changes I had made.
So far, so good!