diff --git a/.github/workflows/ci-build-test.yml b/.github/workflows/ci-build-test.yml new file mode 100644 index 0000000..ba3859b --- /dev/null +++ b/.github/workflows/ci-build-test.yml @@ -0,0 +1,32 @@ +name: CI Build & Test + +on: + push: + branches: [ "main" ] + pull_request: + +jobs: + build-test: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + - name: Cache Maven + uses: actions/cache@v3 + with: + path: ~/.m2 + key: maven-${{ hashFiles('**/pom.xml') }} + + - name: Build & Test + run: mvn clean test -B + + - name: Package (skip tests) + run: mvn package -DskipTests -B diff --git a/src/main/java/com/kubuski/urlshortener/config/SecurityConfig.java b/src/main/java/com/kubuski/urlshortener/config/SecurityConfig.java index d53b5f6..a8f551d 100644 --- a/src/main/java/com/kubuski/urlshortener/config/SecurityConfig.java +++ b/src/main/java/com/kubuski/urlshortener/config/SecurityConfig.java @@ -45,7 +45,8 @@ public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws httpSecurity .csrf(AbstractHttpConfigurer::disable) .authorizeHttpRequests(auth -> auth - .requestMatchers(SHORTEN_PERMIT_PATHS).hasAnyRole(String.valueOf(Roles.USER), String.valueOf(Roles.ADMIN)) + .requestMatchers(SHORTEN_PERMIT_PATHS) + .hasAnyRole(String.valueOf(Roles.USER), String.valueOf(Roles.ADMIN)) .requestMatchers(SWAGGER_UI_PATHS).permitAll() .requestMatchers(USER_PERMIT_PATHS).hasRole(String.valueOf(Roles.ADMIN)) .requestMatchers(URL_PERMIT_PATHS).hasRole(String.valueOf(Roles.USER)) diff --git a/src/main/java/com/kubuski/urlshortener/service/AuthenticationService.java b/src/main/java/com/kubuski/urlshortener/service/AuthenticationService.java index ed42e5c..228af43 100644 --- a/src/main/java/com/kubuski/urlshortener/service/AuthenticationService.java +++ b/src/main/java/com/kubuski/urlshortener/service/AuthenticationService.java @@ -1,18 +1,18 @@ package com.kubuski.urlshortener.service; +import com.kubuski.urlshortener.dto.AuthenticationRequest; +import com.kubuski.urlshortener.dto.AuthenticationResponse; +import com.kubuski.urlshortener.dto.RegisterRequest; +import com.kubuski.urlshortener.entity.User; import com.kubuski.urlshortener.exception.UserAlreadyExistsException; +import com.kubuski.urlshortener.repository.UserRepository; +import lombok.RequiredArgsConstructor; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.kubuski.urlshortener.dto.AuthenticationRequest; -import com.kubuski.urlshortener.dto.AuthenticationResponse; -import com.kubuski.urlshortener.dto.RegisterRequest; -import com.kubuski.urlshortener.entity.User; -import com.kubuski.urlshortener.repository.UserRepository; -import lombok.RequiredArgsConstructor; @Service @RequiredArgsConstructor @@ -60,8 +60,15 @@ private User findUserByLogin(String login) { } private void checkIfUserExists(String email, String username) { - if (userRepository.findByEmailOrUsername(email).isPresent() || userRepository.findByEmailOrUsername(username).isPresent()) { - throw new UserAlreadyExistsException("User with email " + email + " or username " + username + " already exists"); + if (userExists(email, username)) { + throw new UserAlreadyExistsException( + "User with email " + email + " or username " + username + " already exists" + ); } } + + private boolean userExists(String email, String username) { + return userRepository.findByEmailOrUsername(email).isPresent() + || userRepository.findByEmailOrUsername(username).isPresent(); + } } diff --git a/src/main/java/com/kubuski/urlshortener/service/JwtService.java b/src/main/java/com/kubuski/urlshortener/service/JwtService.java index 840ebcd..c2b417c 100644 --- a/src/main/java/com/kubuski/urlshortener/service/JwtService.java +++ b/src/main/java/com/kubuski/urlshortener/service/JwtService.java @@ -41,7 +41,9 @@ public boolean isTokenValid(String token, User userDetails) { String subjectUsername = extractSubject(token); String email = extractEmail(token); - return email.equals(userDetails.getEmail()) && subjectUsername.equals(userDetails.getUsername()) && !isTokenExpired(token); + return email.equals(userDetails.getEmail()) + && subjectUsername.equals(userDetails.getUsername()) + && !isTokenExpired(token); } public String generateToken(User userDetails) {