Coder Social home page Coder Social logo

auth-friends's Introduction

Auth Friends

Topics:

  • React Router
  • Protected Routes
  • axios package
  • AJAX
  • Promises
  • Authentication tokens

Project Description

  • Last week we built an app that interfaced with a RESTful API. That same project is now to be built using tokens for authentication.

  • Take your examples from the guided project and use them to build a more sophisticated application. Have fun!

  • Once your server is up and running, the URL you'll be able to hit from within your app is http://localhost:5000. You will however need an authentication header on all the calls except the login call.

  • Take a look at the endpoints that our API has to offer in server.js.

    • [POST] * to /api/login: returns a token to be added to the header of all other requests. Pass in the following credentials as the body of the request: { username: 'Lambda School', password: 'i<3Lambd4' }
    • [GET] to /api/friends: returns the list of friends.
    • [GET] to /api/friends/123: returns the friend with the id passed as part of the URL (123 in example).
    • [POST] to /api/friends: creates a friend and return the new list of friends. Pass the friend as the body of the request (the second argument passed to axios.post).
    • [PUT] to /api/friends/:id: updates the friend using the id passed as part of the URL. Send the an object with the updated information as the body of the request (the second argument passed to axios.put).
    • [DELETE] to /api/friends/123: removes the friend using the id passed as part of the URL (123 in example).

Initialize Project

  • Run yarn or npm i inside the root directory of this project to install dependencies.
  • Run yarn start or npm start to start the API server.
  • Run create-react-app friends in a separate terminal window in the root directory of the project to create your starter application.
  • cd into the friends folder and type yarn add axios react-router-dom which will install the needed dependencies.

Build the App!

  • Add a route for a login page and build out a simple login form with username and password inputs and a submit button (design this however you would like).
  • The login function should save the returned token to localStorage. You can setup isLoading state in your Login component, and show a spinner on your form or in your button while the login request is happening.
  • When the request returns, save the token to localStorage, then use the history object in your Login component to navigate your user to your FriendsList route
  • Create a <PrivateRoute /> component to protect your other routes. It should check localStorage for a token, and redirect the user to your login route if there is not a token.
  • Create a protected route for your friends list. Remember, if the user isn't logged in, navigating to this protected route will redirect them to the login page.
  • In your FriendsList component, rendered with <ProtectedRoute />, you will create a list of your friends that you get from the API.

Adding New Friends

  • Create a form to collects data for a new friend.
  • Make a POST request to add a friend to the database
  • Each friend item that is in the friends array should have the following format:
{
  id: 1
  name: 'Joe',
  age: 24,
  email: '[email protected]',
}
  • If you'd like, you can create multiple "view" components for your routes. You could have a component who's sole purpose is to render the login form; one for a form for updating a user; another component who's sole purpose is for creating users; and then another component who's sole purpose is to delete a user.
  • It really is up to you how you build this project. I suggest writing down the flow you want to follow, and then writing down each individual piece you need for each step in the flow so that this process doesn't feel as overwhelming.

Stretch Problem

  • In the requirements for this project, we implemented a login POST operation, a GET operation, and a "add friend" POST operation. Add two more functions, one for making a PUT request, and the other for making a DELETE request.
  • Style the friends list and the input field and make everything look nice.
  • Expand the number of properties that you put on each friend object. Feel free to remove the dummy data on the server or modify it in any way.

auth-friends's People

Contributors

bdurb avatar dustinmyers avatar ladrillo avatar luishrd avatar mixelpixel avatar ryan-hamblin avatar

Forkers

d-e-f-e-a-t

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.