Skip to content

Commit

Permalink
Merge pull request #98 from Tech-Harbor/Bezsmertnyi
Browse files Browse the repository at this point in the history
Bezsmertnyi | JWT, Update Password, Architecture, Link
  • Loading branch information
Vladik-gif authored Apr 8, 2024
2 parents 7769c58 + 5600794 commit 307fd80
Show file tree
Hide file tree
Showing 38 changed files with 69 additions and 65 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.example.backend.config.cloudinary;

import com.cloudinary.Cloudinary;
import com.example.backend.web.utils.props.CloudinaryProperties;
import com.example.backend.utils.props.CloudinaryProperties;
import lombok.AllArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.graphql.execution.RuntimeWiringConfigurer;

import static com.example.backend.web.utils.Constants.LOCAL_TIME_DATE;
import static com.example.backend.web.utils.Constants.LOCAL_TIME_DATE_SCALAR;
import static com.example.backend.utils.Constants.LOCAL_TIME_DATE;
import static com.example.backend.utils.Constants.LOCAL_TIME_DATE_SCALAR;

@Configuration
public class GraphqlConfig {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import java.util.Date;
import java.util.Locale;

import static com.example.backend.web.utils.Constants.DATE_FORMAT;
import static com.example.backend.utils.Constants.DATE_FORMAT;


public class LocalDateTimeScalarConfig implements Coercing<LocalDateTime, String> {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/example/backend/mail/MailConfig.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.example.backend.mail;

import com.example.backend.web.utils.props.MailProperties;
import com.example.backend.utils.props.MailProperties;
import lombok.AllArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/example/backend/mail/MailServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import java.util.Map;
import java.util.Properties;

import static com.example.backend.web.utils.Constants.UTF_8;
import static com.example.backend.utils.Constants.UTF_8;

@Service
@AllArgsConstructor
Expand Down Expand Up @@ -86,7 +86,7 @@ private String getNewPasswordContent(final UserEntity user) {
Map<String, Object> model = new HashMap<>();

model.put("username", user.getLastname());
model.put("jwt", jwtService.generateNewPasswordTokenAndActiveUser(user.getEmail()));
model.put("jwt", jwtService.generateNewPasswordTokenAndActiveUser(user.getPassword()));

configuration.getTemplate("newPassword.ftlh").process(model, writer);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.example.backend.security;

import com.example.backend.security.service.details.MyUserDetailsService;
import com.example.backend.security.utils.MyPasswordEncoder;
import com.example.backend.utils.MyPasswordEncoder;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.context.annotation.Bean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.example.backend.security.exception.AuthenticationEntryPointJwt;
import com.example.backend.security.jwt.JwtAuthFilter;
import com.example.backend.security.oauth.AuthGoogle;
import com.example.backend.security.utils.CorsConfig;
import com.example.backend.utils.CorsConfig;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.context.annotation.Bean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,18 @@

@RestController
@AllArgsConstructor
@RequestMapping("/api")
@Tag(name = "Authentication", description = "Authentication User and Update Password, personal office users")
public class AuthController {

private final AuthService authService;

private static final String SIGNUP_URI = "/api/auth/signup";
private static final String LOGIN_URI = "/api/auth/login";
private static final String FORM_CHANGE_PASSWORD_URI = "/api/auth/change-password";
private static final String REQUEST_EMAIL_UPDATE_PASSWORD = "/api/auth/request/email";
private static final String INFO = "/api/auth/accouth";
private static final String SIGNUP_URI = "/auth/signup";
private static final String LOGIN_URI = "/auth/login";
private static final String FORM_CHANGE_PASSWORD_URI = "/change-password";
private static final String REQUEST_EMAIL_UPDATE_PASSWORD = "/request/email";
private static final String ACTIVE_USER = "/active";
private static final String INFO = "/accouth";

@PostMapping(SIGNUP_URI)
@SecurityRequirement(name = "Bearer Authentication")
Expand Down Expand Up @@ -102,7 +104,7 @@ public void requestEmailUpdatePassword(@RequestBody @Validated final EmailReques
authService.requestEmailUpdatePassword(emailRequest);
}

@PostMapping()
@PostMapping(ACTIVE_USER)
@Operation(summary = "Active User, JWT Token")
@ApiResponses(value = {
@ApiResponse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;

import static com.example.backend.web.utils.Constants.BEARER;
import static com.example.backend.utils.Constants.BEARER;
import static org.springframework.http.HttpHeaders.AUTHORIZATION;

@Component
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.example.backend.security.oauth;

import com.example.backend.security.service.JwtService;
import com.example.backend.security.utils.MyPasswordEncoder;
import com.example.backend.utils.MyPasswordEncoder;
import com.example.backend.web.User.UserEntity;
import com.example.backend.web.User.UserService;
import com.example.backend.web.User.utils.RegisterAuthStatus;
import com.example.backend.web.User.utils.Role;
import com.example.backend.utils.enums.RegisterAuthStatus;
import com.example.backend.utils.enums.Role;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
Expand All @@ -23,7 +23,7 @@
import java.util.List;
import java.util.Map;

import static com.example.backend.web.utils.Constants.DEPLOY_STORE;
import static com.example.backend.utils.Constants.DEPLOY_STORE;

@Component
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
import com.example.backend.security.models.response.AuthResponse;
import com.example.backend.security.service.AuthService;
import com.example.backend.security.service.JwtService;
import com.example.backend.security.utils.MyPasswordEncoder;
import com.example.backend.utils.MyPasswordEncoder;
import com.example.backend.web.User.UserEntity;
import com.example.backend.web.User.UserService;
import com.example.backend.web.User.utils.RegisterAuthStatus;
import com.example.backend.web.User.utils.Role;
import com.example.backend.utils.enums.RegisterAuthStatus;
import com.example.backend.utils.enums.Role;
import lombok.RequiredArgsConstructor;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package com.example.backend.security.service.impl;

import com.example.backend.web.utils.props.JwtProperties;
import com.example.backend.security.service.JwtService;
import com.example.backend.security.service.details.MyUserDetails;
import com.example.backend.utils.props.JwtProperties;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.security.Keys;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -50,13 +49,14 @@ public String generateNewPasswordTokenAndActiveUser(final String email) {
return generateJwtNewPasswordTokenAndActiveUser(email);
}

private String generateJwtNewPasswordTokenAndActiveUser(final String email) {
private String generateJwtNewPasswordTokenAndActiveUser(final String userData) {
return Jwts
.builder()
.subject(email)
.subject(userData)
.issuedAt(new Date(System.currentTimeMillis()))
.expiration(new Date(System.currentTimeMillis() + jwtProperties.getJwtNewPasswordExpiration()))
.signWith(getSignInKey(), SignatureAlgorithm.HS256)
.expiration(new Date(System.currentTimeMillis() +
jwtProperties.getJwtNewPasswordExpirationAndActiveUser()))
.signWith(getSignInKey())
.compact();
}

Expand All @@ -67,7 +67,7 @@ private String generateJwtAccessToken(final Map<String, Object> extraClaims, fin
.subject(authentication.getName())
.issuedAt(new Date(System.currentTimeMillis()))
.expiration(new Date(System.currentTimeMillis() + jwtProperties.getJwtAccessExpiration()))
.signWith(getSignInKey(), SignatureAlgorithm.HS256)
.signWith(getSignInKey())
.compact();
}

Expand All @@ -77,7 +77,7 @@ private String generateJwtRefreshToken(final Map<String, Object> extraClaims, fi
.claims(extraClaims)
.subject(authentication.getName())
.expiration(new Date(System.currentTimeMillis() + jwtProperties.getJwtRefreshExpiration()))
.signWith(getSignInKey(), SignatureAlgorithm.HS256)
.signWith(getSignInKey())
.compact();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.backend.web.utils;
package com.example.backend.utils;

import lombok.experimental.UtilityClass;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.backend.security.utils;
package com.example.backend.utils;

import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
Expand All @@ -8,7 +8,7 @@

import java.util.Arrays;

import static com.example.backend.web.utils.Constants.*;
import static com.example.backend.utils.Constants.*;

@Component
public class CorsConfig {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.backend.security.utils;
package com.example.backend.utils;

import org.springframework.context.annotation.Bean;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.backend.web.utils;
package com.example.backend.utils;

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.backend.web.utils;
package com.example.backend.utils;


import com.example.backend.web.Category.CategoryEntity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.backend.web.User.utils;
package com.example.backend.utils.enums;

public enum RegisterAuthStatus {
GOOGLE, JWT
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/com/example/backend/utils/enums/Role.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.example.backend.utils.enums;

public enum Role {
ADMIN, USER
}
5 changes: 5 additions & 0 deletions src/main/java/com/example/backend/utils/enums/Status.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.example.backend.utils.enums;

public enum Status {
PENDING
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.backend.web.utils.props;
package com.example.backend.utils.props;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.backend.web.utils.props;
package com.example.backend.utils.props;


import lombok.Data;
Expand All @@ -12,5 +12,5 @@ public class JwtProperties {
private String key;
private long jwtAccessExpiration;
private long jwtRefreshExpiration;
private long jwtNewPasswordExpiration;
private long jwtNewPasswordExpirationAndActiveUser;
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.backend.web.utils.props;
package com.example.backend.utils.props;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.example.backend.web.Category;

import com.example.backend.web.utils.WebIsNullFactory;
import com.example.backend.utils.WebIsNullFactory;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.example.backend.web.File;

import com.example.backend.web.File.utils.FileUpload;
import com.example.backend.web.File.upload.FileUpload;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.stereotype.Service;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.backend.web.File.utils;
package com.example.backend.web.File.upload;

import org.springframework.web.multipart.MultipartFile;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.backend.web.File.utils;
package com.example.backend.web.File.upload;

import com.cloudinary.Cloudinary;
import com.cloudinary.utils.ObjectUtils;
Expand Down
1 change: 1 addition & 0 deletions src/main/java/com/example/backend/web/Order/OrderDTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.example.backend.web.Product.ProductEntity;
import com.example.backend.web.User.UserEntity;
import com.example.backend.utils.enums.Status;
import lombok.Builder;

@Builder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.example.backend.web.Product.ProductEntity;
import com.example.backend.web.User.UserEntity;
import com.example.backend.utils.enums.Status;
import jakarta.persistence.*;
import lombok.*;

Expand Down
5 changes: 0 additions & 5 deletions src/main/java/com/example/backend/web/Order/Status.java

This file was deleted.

4 changes: 2 additions & 2 deletions src/main/java/com/example/backend/web/User/UserDTO.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.example.backend.web.User;

import com.example.backend.web.Product.ProductDTO;
import com.example.backend.web.User.utils.RegisterAuthStatus;
import com.example.backend.web.User.utils.Role;
import com.example.backend.utils.enums.RegisterAuthStatus;
import com.example.backend.utils.enums.Role;
import lombok.Builder;

import java.util.List;
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/example/backend/web/User/UserEntity.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import com.example.backend.web.Comment.CommentEntity;
import com.example.backend.web.Order.OrderEntity;
import com.example.backend.web.Product.ProductEntity;
import com.example.backend.web.User.utils.RegisterAuthStatus;
import com.example.backend.web.User.utils.Role;
import com.example.backend.utils.enums.RegisterAuthStatus;
import com.example.backend.utils.enums.Role;
import jakarta.persistence.*;
import lombok.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.example.backend.web.User;

import com.example.backend.web.utils.WebIsNullFactory;
import com.example.backend.utils.WebIsNullFactory;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

Expand Down
5 changes: 0 additions & 5 deletions src/main/java/com/example/backend/web/User/utils/Role.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

import java.time.LocalDateTime;

import static com.example.backend.web.utils.Constants.PATH;
import static com.example.backend.utils.Constants.PATH;

@ControllerAdvice
public class ExceptionController extends ResponseEntityExceptionHandler {
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,4 @@ jwt:
key: ${JWT_KEY}
jwtAccessExpiration: 604800000
jwtRefreshExpiration: 2592000000
jwtNewPasswordExpiration: 900000
jwtNewPasswordExpirationAndActiveUser: 120000
2 changes: 1 addition & 1 deletion src/main/resources/templates/newPassword.ftlh
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
<div id="div">
<h1 style="text-align: center">Reset Password</h1>
<p>Для зміни пароля перейдіть за посиланням, ${username}!</p>
<a href="https://oranger.store/api/auth/change-password?jwt=${jwt}">Update Password</a>
<a href="https://oranger.store/auth/change-password?jwt=${jwt}">Update Password</a>
</div>
</div>
</body>
Expand Down
Loading

0 comments on commit 307fd80

Please sign in to comment.