Skip to content

ShaikAdhil/Nxt-Trends-Authentication-and-Authorization-Part-2

Repository files navigation

In this project, let's build Nxt Trendz app with authentication by applying the concepts we have learned till now.

Refer to the image below:


nxt trendz authentication desktop output

Design Files

Click to view

Set Up Instructions

Click to view
  • Download dependencies by running npm install
  • Start up the app using npm start

Completion Instructions

Functionality to be added

The app must have the following functionalities

  • When an unauthenticated user tries to access the Home Route, Products Route or Cart Route, then the page should be redirected to the Login Route
  • When an authenticated user tries to access the Home Route, Products Route or Cart Route, then the page should be navigated to the respective route
  • When an authenticated user tries to access the Login Route, then the page should be redirected to the Home Route
  • When the Logout button is clicked, then the page should be navigated to the Login Route
API Requests & Responses

loginApiUrl

API: https://apis.ccbp.in/login

Method: POST

Description:

Returns a response based on the credentials provided

Sample Success Response

{
  "jwt_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InJhaHVsIiwicm9sZSI6IlBSSU1FX1VTRVIiLCJpYXQiOjE2MTk2Mjg2MTN9.nZDlFsnSWArLKKeF0QbmdVfLgzUbx1BGJsqa2kc_21Y"
}

Sample Failure Response

{
  "status_code": 404,
  "error_msg": "Username is not found"
}
Components Structure
nxt trendz authentication login and home component structure breakdown

nxt trendz authentication products and cart component structure breakdown

Implementation Files

Use these files to complete the implementation:

  • src/App.js
  • src/components/LoginForm/index.js
  • src/components/Header/index.js
  • src/components/Header/index.css
  • src/components/Products/index.js
  • src/components/Products/index.css
  • src/components/Cart/index.js
  • src/components/Cart/index.css

Quick Tips

Click to view
  • You can use the box-shadow CSS property to apply the box-shadow effect to containers

      box-shadow: 0px 4px 16px 0px #bfbfbf;
    

    box shadow
  • You can use the cursor CSS property to specify the mouse cursor to be displayed when pointing over an element

      cursor: pointer;
    

    cursor pointer
  • You can use the below outline CSS property for buttons and input elements to remove the highlighting when the elements are clicked

      outline: none;
    

Important Note

Click to view

The following instructions are required for the tests to pass

  • Home route should consist of / in the URL path

  • Login route should consist of /login in the URL path

  • Products route should consist of /products in the URL path

  • Cart route should consist of /cart in the URL path

  • No need to use the BrowserRouter in App.js as we have already included in index.js

  • User credentials

     username: rahul
     password: rahul@2021
    

Resources

Image URLs
Colors
Hex: #1e293b
Hex: #ffffff
Hex: #475569
Hex: #e6f6ff
Hex: #d7dfe9
Hex: #e2e8f0
Hex: #64748b
Hex: #0b69ff
Hex: #ff0b37
Hex: #0967d2
Font-families
  • Roboto

Things to Keep in Mind

  • All components you implement should go in the src/components directory.
  • Don't change the component folder names as those are the files being imported into the tests.
  • Do not remove the pre-filled code
  • Want to quickly review some of the concepts you’ve been learning? Take a look at the Cheat Sheets.