diff --git a/src/main/java/de/w665/biblenotes/config/SecurityConfig.java b/src/main/java/de/w665/biblenotes/config/SecurityConfig.java index 04f9544..566efca 100644 --- a/src/main/java/de/w665/biblenotes/config/SecurityConfig.java +++ b/src/main/java/de/w665/biblenotes/config/SecurityConfig.java @@ -1,5 +1,6 @@ package de.w665.biblenotes.config; +import de.w665.biblenotes.rest.security.JwtAuthenticationFilter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.Customizer; diff --git a/src/main/java/de/w665/biblenotes/db/RethinkDBService.java b/src/main/java/de/w665/biblenotes/db/RethinkDBService.java index 67686fc..812ce1b 100644 --- a/src/main/java/de/w665/biblenotes/db/RethinkDBService.java +++ b/src/main/java/de/w665/biblenotes/db/RethinkDBService.java @@ -54,45 +54,6 @@ public class RethinkDBService { log.debug("Database " + config.getDatabase() + " already exists. Error: " + e.getClass().getSimpleName()); } - // rethinkdb check if table file_uploads exists - try { - r.db(config.getDatabase()).tableCreate("file_uploads").run(connection).stream(); - log.debug("Table 'file_uploads' created successfully."); - } catch (ReqlOpFailedError e) { - log.debug("Table 'file_uploads' already exists."); - if(autoResetOnStartup) { - log.debug("Clearing content..."); - r.db(config.getDatabase()).table("file_uploads").delete().run(connection); - log.debug("Table 'file_uploads' cleared successfully."); - } - } - - // rethinkdb check if table id_store exists - try { - r.db(config.getDatabase()).tableCreate("id_store").run(connection).stream(); - log.debug("Table 'id_store' created successfully."); - } catch (ReqlOpFailedError e) { - log.debug("Table 'id_store' already exists."); - if(autoResetOnStartup) { - log.debug("Clearing content..."); - r.db(config.getDatabase()).table("id_store").delete().run(connection); - log.debug("Table 'id_store' cleared successfully."); - } - } - - // rethinkdb check if table expired_file_uploads exists - try { - r.db(config.getDatabase()).tableCreate("expired_file_uploads").run(connection).stream(); - log.debug("Table 'expired_file_uploads' created successfully."); - } catch (ReqlOpFailedError e) { - log.debug("Table 'expired_file_uploads' already exists."); - if(autoResetOnStartup) { - log.debug("Clearing content..."); - r.db(config.getDatabase()).table("expired_file_uploads").delete().run(connection); - log.debug("Table 'expired_file_uploads' cleared successfully."); - } - } - // rethinkdb check if table users exists try { r.db(config.getDatabase()).tableCreate("users").run(connection).stream(); diff --git a/src/main/java/de/w665/biblenotes/rest/security/JwtAuthenticationFilter.java b/src/main/java/de/w665/biblenotes/rest/security/JwtAuthenticationFilter.java index a46d6b5..d36c2a4 100644 --- a/src/main/java/de/w665/biblenotes/rest/security/JwtAuthenticationFilter.java +++ b/src/main/java/de/w665/biblenotes/rest/security/JwtAuthenticationFilter.java @@ -1,11 +1,13 @@ package de.w665.biblenotes.rest.security; +import de.w665.biblenotes.service.AuthenticationService; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; diff --git a/src/main/java/de/w665/biblenotes/service/AuthenticationService.java b/src/main/java/de/w665/biblenotes/service/AuthenticationService.java index f90e127..f853597 100644 --- a/src/main/java/de/w665/biblenotes/service/AuthenticationService.java +++ b/src/main/java/de/w665/biblenotes/service/AuthenticationService.java @@ -1,5 +1,13 @@ package de.w665.biblenotes.service; +import de.w665.biblenotes.db.repo.UserLoginRepository; +import de.w665.biblenotes.db.repo.UserRepository; +import de.w665.biblenotes.model.User; +import de.w665.biblenotes.model.UserLogin; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwt; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.security.Keys; import jakarta.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -17,9 +25,9 @@ public class AuthenticationService { private final UserRepository userRepository; private final UserLoginRepository userLoginRepository; - @Value("${secureapi.jwt.secret}") + @Value("${jwt.secret}") private String secretString; - @Value("${secureapi.jwt.expiration}") + @Value("${jwt.expiration}") private long expirationTime; // in milliseconds private SecretKey secretKey; @@ -58,7 +66,7 @@ public class AuthenticationService { Date expiryDate = new Date(nowMillis + expirationTime); return Jwts.builder() - .subject("SharePulse Authentication Token") + .subject("Biblenotes Authentication Token") .issuedAt(now) .claim("role", username.getRole()) .claim("username", username.getUsername()) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e541221..0296e5b 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,19 @@ +biblenotes.auto-reset-on-startup=false +biblenotes.management.user.username=admin +biblenotes.management.user.password=admin + +# Database +rethinkdb.host=localhost +rethinkdb.port=28015 +rethinkdb.database=biblenotes + +# Logging +logging.level.de.w665.biblenotes=INFO + +# Static path +spring.web.resources.static-locations=classpath:/static/browser/ + +server.port=80 spring.application.name=biblenotes +jwt.secret=sampleKeyToChangeInProduction +jwt.expiration=3600000 \ No newline at end of file