Skip to content
Snippets Groups Projects
Commit 183cbee8 authored by Sarthak Shrivastava's avatar Sarthak Shrivastava
Browse files

really messy semi functional code

parent c058a04e
No related branches found
No related tags found
No related merge requests found
...@@ -8,15 +8,39 @@ import { ...@@ -8,15 +8,39 @@ import {
Register, Register,
UpdatePassword, UpdatePassword,
} from "./components/user/index"; } from "./components/user/index";
import { useState } from "react";
import useToken from "./components/useToken";
// function setToken(userToken) {
// sessionStorage.setItem('token', JSON.stringify(userToken.data));
// }
// function getToken() {
// const tokenString = sessionStorage.getItem('token');
// if (!tokenString)
// return null;
// const userToken = JSON.parse(tokenString);
// if (userToken.user != null)
// return tokenString;
// return null;
// }
function App() { function App() {
// const [token, setToken] = useState();
const { token, setToken } = useToken();
// const token = getToken();
if (!token)
{
return <Login setToken={setToken}/>
}
return ( return (
<div className="App"> <div className="App">
<Navbar /> <Navbar />
<Routes> <Routes>
<Route path="/" element={<Home />} /> <Route path="/" element={<Home />} />
<Route path="/register" element={<Register />} />
<Route path="/login" element={<Login />} /> <Route path="/login" element={<Login />} />
<Route path="/register" element={<Register />} />
<Route path="/deleteUser" element={<DeleteUser />} /> <Route path="/deleteUser" element={<DeleteUser />} />
<Route path="/updatepassword" element={<UpdatePassword />} /> <Route path="/updatepassword" element={<UpdatePassword />} />
</Routes> </Routes>
......
import { useState } from 'react';
export default function useToken() {
const getToken = () => {
const tokenString = sessionStorage.getItem('token');
if (!tokenString)
return null;
const userToken = JSON.parse(tokenString);
if (userToken.user != null)
return tokenString;
return null;
};
const [token, setToken] = useState(getToken());
const saveToken = userToken => {
sessionStorage.setItem('token', JSON.stringify(userToken.data));
setToken(userToken.token);
};
return {
setToken: saveToken,
token
}
}
\ No newline at end of file
import React, { useState } from "react"; import React, { useState } from "react";
import Axios from "axios"; import Axios from "axios";
import PropTypes from "prop-types";
export const Login = (props) => { export const Login = ({setToken}) => {
const [email, setEmail] = useState(""); const [email, setEmail] = useState();
const [pass, setPass] = useState(""); const [pass, setPass] = useState();
const handleSubmit = (e) => { const handleSubmit = (e) => {
e.preventDefault(); e.preventDefault();
console.log(email); console.log(email);
console.log(pass); console.log(pass);
Axios.post("http://localhost:8080/auth/login", {
email: email,
password: pass,
}).then((response) => {
// console.log(typeof(response));
setToken(response);
console.log(response.data);
});
}; };
return ( return (
...@@ -39,5 +45,7 @@ export const Login = (props) => { ...@@ -39,5 +45,7 @@ export const Login = (props) => {
</div> </div>
); );
}; };
Login.propTypes = {
setToken: PropTypes.func.isRequired
};
export default Login; export default Login;
...@@ -52,6 +52,18 @@ ...@@ -52,6 +52,18 @@
<artifactId>jackson-databind</artifactId> <artifactId>jackson-databind</artifactId>
<version>2.14.2</version> <version>2.14.2</version>
</dependency> </dependency>
<!-- JAX-RS Implementation (for example, Jersey) -->
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.example.accessingdatamysql.auth;
import org.springframework.web.bind.annotation.RequestMapping;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import java.util.Map;
import java.util.HashMap;
import java.util.Optional;
import javax.print.attribute.standard.Media;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.example.accessingdatamysql.UserRepository;
import com.example.accessingdatamysql.User;
@Controller
@CrossOrigin
@RequestMapping(path="/auth") // This means URL's start with /demo (after Application path)
public class AuthController {
@Autowired // This means to get the bean called userRepository
// Which is auto-generated by Spring, we will use it to handle the data
private UserRepository userRepository;
@PostMapping(path="/login")
public @ResponseBody Map<String, String> login(@RequestBody Map<String, String> json)
{
// Assuming you have a JSON library for Java, you can use it to build the response
Map<String, String> res = new HashMap<String, String>();
if (!json.containsKey("email") || !json.containsKey("password"))
{
res.put("login", "bad request");
return res;
}
Optional<User> user = userRepository.findById(json.get("email"));
if (user.isPresent())
{
User usr = user.get();
if (usr.getEmail().equals(json.get("email")) && usr.getPassword().equals(json.get("password")))
{
res.put("user", user.get().getEmail());
return res;
}
res.put("login", "failed");
return res;
}
res.put("login", "failed");
return res;
}
}
package com.example.accessingdatamysql.auth;
public class Token {
String token;
}
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
spring.jpa.hibernate.ddl-auto=create spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/inventory spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/inventory
spring.datasource.username=root spring.datasource.username=root
spring.datasource.password=CSD@mysql-1872 spring.datasource.password=czarthak
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.jpa.show-sql: true #spring.jpa.show-sql: true
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment