Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
32 changes: 32 additions & 0 deletions .github/workflows/ci-build-test.yml
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down