Skip to content
Snippets Groups Projects
Commit 010154eb authored by John Watkins's avatar John Watkins
Browse files

fixed login issue and added get user row to jwtUtils

parent 34ba66ed
Branches issueTen
No related tags found
4 merge requests!56tags will be saved to userFavTags table (needs user ID of current logged in user),!50Merging for latest changes,!48Develop,!47fixed login issue and added get user row to jwtUtils
......@@ -19,7 +19,7 @@ public class UserStampBoards {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long userStampBoardId;
private int userStampBoardPosition;
private int userStampPosition;
@ManyToOne
@JoinColumn(name="Stamp_Board_Id", nullable=false)
......
package com.example.clientproject.service.Utils;
import com.example.clientproject.data.users.Users;
import com.example.clientproject.data.users.UsersRepo;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
......@@ -19,19 +22,25 @@ import java.util.Optional;
@Component
public class JWTUtils {
private static String SECRET_KEY;
private UsersRepo usersRepo;
public JWTUtils(UsersRepo ausersRepo){
usersRepo = ausersRepo;
}
private String SECRET_KEY;
@Value("${jwt.secret_key}")
private void setSECRET_KEY(String aSECRET_KEY){
SECRET_KEY = aSECRET_KEY;
}
public static void getKey(){
public void getKey(){
System.out.println(SECRET_KEY);
}
// https://github.com/oktadev/okta-java-jwt-example/blob/master/src/main/java/com/okta/createverifytokens/JWTDemo.java
public static String createJWT(String id, String issuer, String subject, long ttlMillis) {
public String createJWT(String id, String issuer, String subject, long ttlMillis) {
//The JWT signature algorithm we will be using to sign the token
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
......@@ -61,7 +70,7 @@ public class JWTUtils {
return builder.compact();
}
public static Claims decodeJWT(String jwt) {
public Claims decodeJWT(String jwt) {
//This line will throw an exception if it is not a signed JWS (as expected)
Claims claims = Jwts.parser()
......@@ -70,12 +79,12 @@ public class JWTUtils {
return claims;
}
public static String makeUserJWT(Integer userId, HttpSession session) {
public String makeUserJWT(Integer userId, HttpSession session) {
String jwtId = "loginCred";
String jwtIssuer = "ShopHub";
int jwtTimeToLive = 800000;
String jwt = JWTUtils.createJWT(
String jwt = this.createJWT(
jwtId, // claim = jti
jwtIssuer, // claim = iss
userId.toString(), // claim = sub
......@@ -86,7 +95,7 @@ public class JWTUtils {
return jwt.toString();
}
public static Optional<Integer> getLoggedInUserId(HttpSession session){
public Optional<Integer> getLoggedInUserId(HttpSession session){
String loginJWT = (String) session.getAttribute("loginCredJWT");
if (loginJWT == null) {
System.out.println("Jwt is null");
......@@ -94,7 +103,7 @@ public class JWTUtils {
}
try{
Claims claims = JWTUtils.decodeJWT(loginJWT);
Claims claims = this.decodeJWT(loginJWT);
return Optional.of(Integer.parseInt(claims.getSubject()));
}catch (io.jsonwebtoken.MalformedJwtException e){
System.out.println("malformed jwt");
......@@ -108,7 +117,16 @@ public class JWTUtils {
}
}
public static void logOutUser(HttpSession session){
public Optional<Users> getLoggedInUserRow(HttpSession session){
Optional<Integer> userId = this.getLoggedInUserId(session);
if(!userId.isPresent()){
return Optional.empty();
}
Users loggedInUser = usersRepo.getById(Long.valueOf(userId.get()));
return Optional.of(loggedInUser);
}
public void logOutUser(HttpSession session){
session.removeAttribute("loginCredJWT");
}
}
......@@ -16,9 +16,15 @@ import java.util.Optional;
@Controller
public class SessionTestController {
private JWTUtils jwtUtils;
public SessionTestController(JWTUtils ajwtUtils){
jwtUtils = ajwtUtils;
}
@GetMapping("/sessionJWTTest")
public String jwtTest(Model model, HttpSession session){
Optional<Integer> user = JWTUtils.getLoggedInUserId(session);
Optional<Integer> user = jwtUtils.getLoggedInUserId(session);
if(user.isPresent()){
System.out.println(user.get());
}else{
......@@ -26,17 +32,19 @@ public class SessionTestController {
}
System.out.println("Making jwt");
String jwt = JWTUtils.makeUserJWT(6, session);
String jwt = jwtUtils.makeUserJWT(6, session);
System.out.println(jwt);
user = JWTUtils.getLoggedInUserId(session);
user = jwtUtils.getLoggedInUserId(session);
if(user.isPresent()){
System.out.println(user.get());
}else{
System.out.println("No User");
}
model.addAttribute("sessionData",user.get());
Users loggedInUser = jwtUtils.getLoggedInUserRow(session).get();
model.addAttribute("sessionData",loggedInUser);
return "session-test";
}
......
......@@ -32,9 +32,12 @@ public class SignInController {
private BusinessRegisterSaver saveBusiness;
public SignInController(UsersSearch aUsersSearch, BusinessRegisterSaver sBusiness) {
private JWTUtils jwtUtils;
public SignInController(UsersSearch aUsersSearch, BusinessRegisterSaver sBusiness, JWTUtils ajwtUtils) {
usersSearch = aUsersSearch;
saveBusiness = sBusiness;
jwtUtils = ajwtUtils;
}
@PostMapping("/businessRegister")
......@@ -125,7 +128,7 @@ public class SignInController {
*/
@GetMapping("/log_out")
public String jwtLogout(Model model, HttpSession session){
JWTUtils.logOutUser(session);
jwtUtils.logOutUser(session);
return "redirect:/login";
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment