MikeMitterer / kotlin-catshostel-sb

Spring Boot example

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CatsHostel - Spring Boot Version

KTor-Version MyBatis
Spring Boot - Security
Token-based API authentication with Spring and JWT
Spring Boot + KeyCloak
KeyCloak - Spring Security Adapter

Features

  • iBatis (works with SQLite or Postgres-DB)
  • JWT support (mimics KeyCloak-Token)
  • conditional Tests (e.g. ProtectedControllerTest)
  • configurable WebSecurity (use.keycloak=true|false)
    use.keycloak=false uses WebSecurityConfig
    use.keycloak=true uses KeycloakConfig

UI

Api

WebSocket (Chat)

Can be configured in application.properties

# catshostel.websocket=chatserver
catshostel.websocket=simple

You can send a "Ping" via Get-Request:

Coroutines

Check out my BasicController

Database

# cd to DB-Directory
cd resources/db

# Import schema (Postgres works just fine here)
sqlite catshostel.db < sqlite-1-schema.sql

Set your working dir to $MODULE_DIR$

WorkingDir

DB / Tests / API

KeyCloak Settings

Spring Boot + KeyCloak

My additional settings:

Valid Redirect URIs: http://localhost:8081/*

Realm
Realm redirect URIs
Clients
Roles
Users
User - Cat1
User - Cat1 - Roles
User - Nicki
User - Nicki - Roles

Swagger (scheint nie wirklich zu funktionieren - wurde am 2021 03 12 gedisabled)

Diese Variante hat am 12.3.2021 noch funktioniert:

Generell benötigt Swagger die Klasse SwaggerConfig. In GsonConfig muss noch der SpringfoxJsonToGsonAdapter eingebunden werden

    package at.mikemitterer.catshostel.config
    
    import org.springframework.context.annotation.Bean
    import org.springframework.context.annotation.Configuration
    import springfox.documentation.builders.PathSelectors
    
    import springfox.documentation.builders.RequestHandlerSelectors
    
    import springfox.documentation.spi.DocumentationType
    
    import springfox.documentation.spring.web.plugins.Docket
    import springfox.documentation.swagger2.annotations.EnableSwagger2
    
    
    /**
     * Swagger 2 is enabled through the @EnableSwagger2 annotation.
     *
     * @since   13.05.20, 15:36
     */
    @Configuration
    @EnableSwagger2
    class SwaggerConfig {
        @Bean
        fun api(): Docket {
            return Docket(DocumentationType.SWAGGER_2)
                    .select()
                    .apis(RequestHandlerSelectors.any())
                    .paths(PathSelectors.any())
                    .build()
        }
    }

Der SpringfoxJsonToGsonAdapter sieht so aus:

    /**
     * Serialization-Helper for Swagger
     *
     * Mehr:
     *      http://www.programmersought.com/article/7688804471/
     *
     * @since   11.05.20, 18:30
     */
    class SpringfoxJsonToGsonAdapter : JsonSerializer<Json> {
        override fun serialize(json: Json, type: Type, context: JsonSerializationContext): JsonElement
                = JsonParser.parseString(json.value())
    }

OpenAPI

About

Spring Boot example


Languages

Language:Kotlin 89.0%Language:JavaScript 4.0%Language:CSS 3.5%Language:FreeMarker 3.5%