Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
549a9ef
#11 | Hendi Santika | Upgraded into Spring Boot 3.2.0 version βœοΈπŸ“— :oc…
hendisantika May 25, 2024
ff4beb4
#11 | Hendi Santika | Upgraded into Spring Boot 3.2.1 version βœοΈπŸ“— :oc…
hendisantika May 25, 2024
1d6b317
#11 | Hendi Santika | Upgraded into Spring Boot 3.2.2 version βœοΈπŸ“— :oc…
hendisantika May 25, 2024
bcb7513
#11 | Hendi Santika | Upgraded into Spring Boot 3.2.3 version βœοΈπŸ“— :oc…
hendisantika May 25, 2024
f841d32
#11 | Hendi Santika | Upgraded into Spring Boot 3.2.4 version βœοΈπŸ“— :oc…
hendisantika May 25, 2024
adc2ce4
#11 | Hendi Santika | Upgraded into Spring Boot 3.2.5 version βœοΈπŸ“— :oc…
hendisantika May 25, 2024
5509bc2
#11 | Hendi Santika | Upgraded into Spring Boot 3.2.6 version βœοΈπŸ“— :oc…
hendisantika May 25, 2024
4397685
#11 | Hendi Santika | Upgraded into Spring Boot 3.2.7 version βœοΈπŸ“— :oc…
hendisantika May 25, 2024
ae41904
#11 | Hendi Santika | Upgraded into Spring Boot 3.2.8 version βœοΈπŸ“— :oc…
hendisantika May 25, 2024
b110af9
#11 | Hendi Santika | Upgraded into Spring Boot 3.2.9 version βœοΈπŸ“— :oc…
hendisantika May 25, 2024
f18058e
#11 | Hendi Santika | Upgraded into Spring Boot 3.3.0 version βœοΈπŸ“— :oc…
hendisantika May 25, 2024
9e1cadf
#11 | Hendi Santika | Bug Fix Fragment βœοΈπŸ“— :octocat: πŸ³β¬†
hendisantika May 26, 2024
7871a14
#11 | Hendi Santika | Bug Fix Security Configs βœοΈπŸ“— :octocat: πŸ³β¬†
hendisantika May 26, 2024
36b1429
#11 | Hendi Santika | Upgraded into Spring Boot 3.3.1 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
0b2aee4
#11 | Hendi Santika | Upgraded into Spring Boot 3.3.2 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
5f2e975
#11 | Hendi Santika | Upgraded into Spring Boot 3.3.3 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
a2de862
#11 | Hendi Santika | Upgraded into Spring Boot 3.3.4 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
ac5b58a
#11 | Hendi Santika | Upgraded into Spring Boot 3.3.5 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
4d62dff
#11 | Hendi Santika | Upgraded into Spring Boot 3.3.6 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
71c77eb
#11 | Hendi Santika | Upgraded into Spring Boot 3.3.7 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
b292f5f
#11 | Hendi Santika | Upgraded into Spring Boot 3.3.8 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
bec4b86
#11 | Hendi Santika | Upgraded into Spring Boot 3.3.9 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
9d94333
#11 | Hendi Santika | Upgraded into Spring Boot 3.4.0 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
27cfbac
#11 | Hendi Santika | Upgraded into Spring Boot 3.4.1 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
535ea93
#11 | Hendi Santika | Upgraded into Spring Boot 3.4.2 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
e136f66
#11 | Hendi Santika | Upgraded into Spring Boot 3.4.3 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
12d61cc
#11 | Hendi Santika | Upgraded into Spring Boot 3.4.4 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
d6ee3e9
#11 | Hendi Santika | Upgraded into Spring Boot 3.4.5 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
bfe833d
#11 | Hendi Santika | Upgraded into Spring Boot 3.4.6 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
a00bf05
#11 | Hendi Santika | Upgraded into Spring Boot 3.4.7 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
d6383a5
#11 | Hendi Santika | Upgraded into Spring Boot 3.4.8 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
9b3028c
#11 | Hendi Santika | Upgraded into Spring Boot 3.4.9 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
f8bb07e
#11 | Hendi Santika | Upgraded into Spring Boot 3.5.0 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
0ba5339
#11 | Hendi Santika | Upgraded into Spring Boot 3.5.1 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
5fbaa6c
#11 | Hendi Santika | Upgraded into Spring Boot 3.5.2 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
5f787fe
#11 | Hendi Santika | Upgraded into Spring Boot 3.5.3 version βœοΈπŸ“— :oc…
hendisantika Jul 5, 2025
da2c851
#11 | Hendi Santika | fix: H2 Config βœοΈπŸ“— :octocat: πŸ³β¬†
hendisantika Jul 5, 2025
74825ea
#11 | Hendi Santika | Upgraded into Spring Boot 3.5.4 version βœοΈπŸ“— :oc…
hendisantika Oct 7, 2025
43874c8
#11 | Hendi Santika | Upgraded into Spring Boot 3.5.5 version βœοΈπŸ“— :oc…
hendisantika Oct 7, 2025
5c52eb4
#11 | Hendi Santika | Upgraded into Spring Boot 3.5.6 version βœοΈπŸ“— :oc…
hendisantika Oct 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ target/
*.iws
*.iml
*.ipr
logs

### NetBeans ###
nbproject/private/
Expand Down
30 changes: 22 additions & 8 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
<version>3.5.6</version>
<relativePath/>
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>11</java.version>
<java.version>21</java.version>
</properties>

<dependencies>
Expand All @@ -30,6 +30,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- Spring Boot Security-->
<dependency>
<groupId>org.springframework.boot</groupId>
Expand Down Expand Up @@ -59,7 +63,7 @@
<!-- Thymeleaf Springsecruity Extras -->
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
<artifactId>thymeleaf-extras-springsecurity6</artifactId>
</dependency>
<!-- Spring Boot Devtools-->
<dependency>
Expand Down Expand Up @@ -113,19 +117,29 @@
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>javax.validation</groupId>-->
<!-- <artifactId>validation-api</artifactId>-->
<!-- <version>2.0.1.Final</version>-->
<!-- </dependency>-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
Expand Down
4 changes: 1 addition & 3 deletions src/main/java/com/syqu/shop/StartupData.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

import com.syqu.shop.domain.Category;
import com.syqu.shop.domain.Product;
import com.syqu.shop.domain.User;
import com.syqu.shop.repository.CategoryRepository;
import com.syqu.shop.service.ProductService;
import com.syqu.shop.domain.User;
import com.syqu.shop.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -63,9 +63,7 @@ private void adminAccount(){
private void category(){
Category category1 = new Category();
Category category2 = new Category();
category1.setId(1);
category1.setCategoryName("Adventure");
category2.setId(2);
category2.setCategoryName("Novel");

categoryRepository.save(category1);
Expand Down
63 changes: 37 additions & 26 deletions src/main/java/com/syqu/shop/config/WebSecurityConfig.java
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
package com.syqu.shop.config;

import com.syqu.shop.service.impl.UserDetailsServiceImpl;
import com.syqu.shop.repository.UserRepository;
import com.syqu.shop.service.impl.UserDetailsServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
public class WebSecurityConfig {
private final UserRepository userRepository;

@Autowired
Expand All @@ -37,30 +38,40 @@ public BCryptPasswordEncoder passwordEncoder() {
}

@Bean
@Override
protected AuthenticationManager authenticationManager() throws Exception {
return super.authenticationManager();
public AuthenticationManager authenticationManager(AuthenticationConfiguration authConfig) throws Exception {
return authConfig.getAuthenticationManager();
}

@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests()
.antMatchers("/","/home","/index","/about","/help","/register","/cart/**").permitAll()
.antMatchers("/user/**").hasRole("USER")
.antMatchers("/admin/**","/product/new").hasRole("ADMIN")
.and().formLogin().loginPage("/login").permitAll()
.and().logout().invalidateHttpSession(true).clearAuthentication(true).logoutRequestMatcher(new AntPathRequestMatcher("/logout")).permitAll()
.and().headers().frameOptions().sameOrigin();
}
@Bean
public SecurityFilterChain configure(HttpSecurity http) throws Exception {
http.csrf(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(authz -> authz
.requestMatchers("/", "/home", "/index", "/about", "/help", "/register", "/cart/**").permitAll()
.requestMatchers("/user/**").hasRole("USER")
.requestMatchers("/admin/**", "/product/new").hasRole("ADMIN")
)
.formLogin(formLogin -> formLogin
.loginPage("/login").permitAll()
)

@Override
public void configure(WebSecurity web) {
web.ignoring().antMatchers("/webjars/**", "/js/**","/error/**"
, "/css/**","/fonts/**","/libs/**","/img/**","/h2-console/**");
.logout(logout -> logout
.invalidateHttpSession(true)
.clearAuthentication(true)
.logoutRequestMatcher(new AntPathRequestMatcher("/logout")).permitAll()
// .headers().frameOptions().sameOrigin();
);

return http.build();
}

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService()).passwordEncoder(passwordEncoder());
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) -> web.ignoring().requestMatchers(
"/webjars/**", "/js/**", "/error/**", "/css/**", "/fonts/**", "/libs/**", "/img/**", "/h2-console/**");
}
}

// @Autowired
// public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
// auth.userDetailsService(userDetailsService()).passwordEncoder(passwordEncoder());
// }
}
16 changes: 12 additions & 4 deletions src/main/java/com/syqu/shop/domain/Category.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,26 @@
package com.syqu.shop.domain;

import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import javax.persistence.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;


@Entity
@Data
@Table(name = "category")
@Table(name = "t_category")
public class Category {
@Column(name = "id")
@Id
Expand Down
16 changes: 12 additions & 4 deletions src/main/java/com/syqu/shop/domain/Product.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
package com.syqu.shop.domain;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import org.antlr.v4.runtime.misc.NotNull;

import javax.persistence.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Objects;

@Data
@Entity
@Table(name = "product")
@Table(name = "t_product")
public class Product {

@Column(name = "id")
Expand Down
15 changes: 10 additions & 5 deletions src/main/java/com/syqu/shop/domain/User.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
package com.syqu.shop.domain;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import javax.persistence.*;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;

@Data
@Entity
@Table(name = "user")
@Table(name = "t_user")
public class User {

@Column(name = "id")
Expand Down
8 changes: 4 additions & 4 deletions src/main/resources/templates/about.html
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">

<head th:replace="fragments/header :: header-css">
<head th:replace="~{fragments/header :: header-css}">
</head>

<body>

<div th:replace="fragments/header :: header"></div>
<div th:replace="~{fragments/header :: header}"></div>

<div class="container">

Expand All @@ -17,8 +17,8 @@ <h4 th:text="#{about.text}"></h4>

</div>

<div th:replace="fragments/footer :: footer"></div>
<div th:replace="~{fragments/footer :: footer}"></div>

</body>

</html>
</html>
8 changes: 4 additions & 4 deletions src/main/resources/templates/cart.html
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">

<head th:replace="fragments/header :: header-css">
<head th:replace="~{fragments/header :: header-css}">
</head>

<body>

<div th:replace="fragments/header :: header"></div>
<div th:replace="~{fragments/header :: header}"></div>

<div class="container">
<div th:if="${!products.isEmpty()}" class="col-3">
Expand Down Expand Up @@ -40,8 +40,8 @@ <h3 th:text="#{cart.total} + ' ' + ${totalPrice}"></h3>">
</div>
</div>

<div th:replace="fragments/footer :: footer"></div>
<div th:replace="~{fragments/footer :: footer}"></div>

</body>

</html>
</html>
8 changes: 4 additions & 4 deletions src/main/resources/templates/error/403.html
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">

<head th:replace="fragments/header :: header-css">
<head th:replace="~{fragments/header :: header-css}">
</head>

<body>

<div th:replace="fragments/header :: header"></div>
<div th:replace="~{fragments/header :: header}"></div>

<div class="container">
<div class="starter-template">
Expand All @@ -17,7 +17,7 @@ <h3 th:text="#{error.no_access}"></h3>
</div>


<div th:replace="fragments/footer :: footer"></div>
<div th:replace="~{fragments/footer :: footer}"></div>
</body>

</html>
</html>
8 changes: 4 additions & 4 deletions src/main/resources/templates/error/404.html
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">

<head th:replace="fragments/header :: header-css">
<head th:replace="~{fragments/header :: header-css}">
</head>

<body>

<div th:replace="fragments/header :: header"></div>
<div th:replace="~{fragments/header :: header}"></div>

<div class="container">
<div class="starter-template">
Expand All @@ -17,7 +17,7 @@ <h3 th:text="#{error.no_page}"></h3>
</div>


<div th:replace="fragments/footer :: footer"></div>
<div th:replace="~{fragments/footer :: footer}"></div>
</body>

</html>
</html>
Loading