added basic spring boot security
This commit is contained in:
@ -8,7 +8,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = 'de.jottyfan.bico'
|
||||
version = '0.0.4'
|
||||
version = '0.0.5'
|
||||
|
||||
description = """BibleClassOrganizer"""
|
||||
|
||||
@ -46,8 +46,10 @@ dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter-jooq'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-security'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-validation'
|
||||
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:latest.release'
|
||||
implementation 'org.springframework.security:spring-security-oauth2-client'
|
||||
|
||||
implementation 'org.webjars:bootstrap:5.3.1'
|
||||
implementation 'org.webjars.npm:bootstrap-icons:1.10.5'
|
||||
|
@ -4,6 +4,7 @@ import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
|
||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -11,6 +12,7 @@ import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
|
||||
*
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@EnableWebSecurity
|
||||
public class Main extends SpringBootServletInitializer {
|
||||
@Override
|
||||
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
|
||||
|
@ -17,7 +17,7 @@ import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
|
||||
*
|
||||
*/
|
||||
@Configuration
|
||||
public class DatabaseConfiguration {
|
||||
public class DatabaseConfig {
|
||||
@Autowired
|
||||
private DataSource dataSource;
|
||||
|
34
src/main/java/de/jottyfan/bico/config/SecurityConfig.java
Normal file
34
src/main/java/de/jottyfan/bico/config/SecurityConfig.java
Normal file
@ -0,0 +1,34 @@
|
||||
package de.jottyfan.bico.config;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.security.authentication.AuthenticationEventPublisher;
|
||||
import org.springframework.security.authentication.DefaultAuthenticationEventPublisher;
|
||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||
import org.springframework.security.core.userdetails.User;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
@Configuration
|
||||
@EnableWebSecurity
|
||||
public class SecurityConfig {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(UserDetailsService.class)
|
||||
InMemoryUserDetailsManager imudm() {
|
||||
return new InMemoryUserDetailsManager(User.withUsername("user").password("{noop}password").roles("USER").build());
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(AuthenticationEventPublisher.class)
|
||||
DefaultAuthenticationEventPublisher daep(ApplicationEventPublisher delegate) {
|
||||
return new DefaultAuthenticationEventPublisher(delegate);
|
||||
}
|
||||
}
|
@ -9,17 +9,5 @@ spring.datasource.password = ${db.password}
|
||||
|
||||
server.servlet.context-path = ${my.context-path:/BiCO}
|
||||
|
||||
# security
|
||||
spring.security.oauth2.client.registration.keycloak.client-id = ${keycloak.client-id}
|
||||
spring.security.oauth2.client.registration.keycloak.scope = openid
|
||||
spring.security.oauth2.client.registration.keycloak.authorization-grant-type = authorization_code
|
||||
spring.security.oauth2.client.registration.keycloak.redirect-uri = ${keycloak.redirect-uri}
|
||||
spring.security.oauth2.client.provider.keycloak.issuer-uri = ${keycloak.issuer-uri}
|
||||
spring.security.oauth2.client.provider.keycloak.authorization-uri = ${keycloak.openid-url}/auth
|
||||
spring.security.oauth2.client.provider.keycloak.token-uri = ${keycloak.openid-url}/token
|
||||
spring.security.oauth2.client.provider.keycloak.user-info-uri = ${keycloak.openid-url}/userinfo
|
||||
spring.security.oauth2.client.provider.keycloak.jwk-set-uri = ${keycloak.openid-url}/certs
|
||||
spring.security.oauth2.client.provider.keycloak.user-name-attribute = preferred_username
|
||||
|
||||
# for development only
|
||||
server.port = 8081
|
||||
|
@ -1,7 +1,7 @@
|
||||
toggleDarkMode = function() {
|
||||
var oldValue = $("html").attr("data-bs-theme");
|
||||
var newValue = oldValue == "dark" ? "light" : "dark";
|
||||
var updateUrl = /*[[@{/updateTheme}]]*/ 'updateTheme';
|
||||
var updateUrl = /*[[@{/updateTheme}]]*/ '/BiCO/updateTheme';
|
||||
updateUrl = updateUrl + "/" + newValue;
|
||||
$("html").attr("data-bs-theme", newValue);
|
||||
$.ajax({
|
||||
|
@ -28,11 +28,14 @@
|
||||
<ul layout:fragment="header"></ul>
|
||||
<ul class="nav navbar-nav ms-auto">
|
||||
<li class="nav-item">
|
||||
<a href="https://gitlab.com/jottyfan/bico/-/issues" class="btn btn-outline-secondary" target="_blank" th:text="${'v' + @manifestBean.getVersion()}"></a>
|
||||
<a href="https://git.jottyfan.de/church/BiCO" class="btn btn-outline-secondary" target="_blank" th:text="${'v' + @manifestBean.getVersion()}"></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#" class="btn btn-outline-secondary" onclick="toggleDarkMode()"><i class="bi bi-moon"></i></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a th:href="@{/logout}" class="btn btn-outline-secondary">abmelden</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
Reference in New Issue
Block a user