Challenge Overview
Welcome to topcoder Forgot Password WordPress Theme Update contest! The goal of this challenge is to get a new "forgot password" functionality built on the new topcoder site.
Resources Provided:
- latest topcoder theme as your base, get it from github https://github.com/topcoderinc/tc-site/tree/dev/wp-content/themes/tcs-responsive
Challenge Task Overview
The goal of this challenge is to create the new "forgot password" functionality of the new topcoder site. There are no storyboard involved, used the site's (http://www.topcoder.com/) general look and feel and with the instructions outlined below.
UI Look and Feel Reference:
- utilize any existing styles from contact us page http://www.topcoder.com/contact-us/
- use the existing template and layout (main pane + sidebar) of contact us page for the new pages
- use the sidebar content/data as well
Required Pages:
1. Password Recovery page
- name of the page is "Password Recovery"
- there will be one field to be use to enter email address or handle
- the label of this field will be "Enter your handle or email:"
- include a button to submit the handle/email
1.1 Functionality of this page will be:
- user will enter his/her handle or email address
- use "Generate Reset Token" API (outlined below) to check whether the user has social login or not
- if this API request returns that the user has social login, the system should return the following message:
"You have registered using social login. Please login using X service"
(where X is the social provider name) - otherwise, the user has a topcoder password.
- Display message on top of page: "Sit tight we have emailed you a confirmation code"
- Send an email to the user, the content this email should be editable in WP Admin. The email content will have variables that needs to be replaced with the actual values prior in sending the email. Sample content is https://docs.google.com/document/d/1yUziXz7FdkDBtu9tQ956DdP9pJBP7lG1j1FMl4kWKrc/edit?usp=sharing
- the variables to be replaced are:
- user handle ($handle)
- reset code from "Generate Reset Token" API request ($code)
- the link for "Change my Password" which will also have a reset code var
- variable for the url of "page" link
- Once the email is sent and after a few seconds, redirect the page to the Reset Password page
2. Reset Password page
- name of the page is "Reset Password"
- this page will have the following text fields:
- New password
- Confirm password
- If the current page URL doesn't contain unlock code, provide a text field to enter the unlock code. This "unlock" code is the generated token from the API request "Generate Reset Token"
- include a submit button to update the new password
2.1 Functionality for this page:
- the purpose of this page is to save the new password
- it is important to verify the level of strength of the password using the same logic we do on the main site. See line 75 of this file.
- All passwords must have a strength of at least 3.
- use "Reset Password" API function to save the new password
API to use:
1. Generate Reset Token
- this API function returns reset token for topcoder user or the social provider name for social login user
- URL: http://tcapi.apiary.io/v2/users/resetToken/?handle={handle}&email={email}
- Method: GET
- Parameters (either of the one should be used):
- handle - the member handle, string and optional
- email - an email address, string and optional
- ���Response (these are the possible response):
200 (OK)
Content-Type: application/json
{
"token":"a3cbG"
}200 (OK)
Content-Type: application/json
{
"socialProvider":"Google"
}400 (Bad Request)
Content-Type: application/json
{
"name":"Bad Request",
"value":"400",
"description":"The handle you entered is not valid"
}500 (Internal Server Error)
Content-Type: application/json
{
"name":"Internal Server Error",
"value":"500",
"description":"Unknown server error. Please contact support."
}503 (Service Unavailable)
Content-Type: application/json
{
"name":"Service Unavailable",
"value":"503",
"description":"Servers are up but overloaded. Try again later."
}
2. Reset Password
- URL: http://tcapi.apiary.io/v2/users/resetPassword/{handle}
- Method: POST
- Parameters:
- handle - the member handle, string and required
- token - the reset password token, string and required. Example: snABCD
- password - the new password, string and required
- Response (these are the possible response):
200 (OK)
Content-Type: application/json
{
"description": "Your password has been reset!"
}400 (Bad Request)
Content-Type: application/json
{
"name":"Bad Request",
"value":"400",
"description":"This message will explain why the request is invalid or cannot be served."
}401 (Unauthorized)
Content-Type: application/json
{
"name":"Unauthorized",
"value":"401",
"description":"Authentication credentials were missing or incorrect."
}403 (Forbidden)
Content-Type: application/json
{
"name":"Forbidden",
"value":"403",
"description":"The request is understood, but it has been refused or access is not allowed."
}500 (Internal Server Error)
Content-Type: application/json
{
"name":"Internal Server Error",
"value":"500",
"description":"Unknown server error. Please contact support."
}503 (Service Unavailable)
Content-Type: application/json
{
"name":"Service Unavailable",
"value":"503",
"description":"Servers are up but overloaded. Try again later."
}
Final Submission Guidelines
Please make sure to ONLY submit updated files instead of overall themes. Reviewer will download theme from git and try to merge your submission into git version