├── .github └── workflows │ └── prod_workflow.yml ├── .gitignore ├── README.md ├── backend-server ├── pom.xml └── src │ ├── main │ ├── kotlin │ │ └── com │ │ │ └── popokis │ │ │ └── backend_server │ │ │ ├── Application.kt │ │ │ ├── application │ │ │ ├── HttpExceptionFactory.kt │ │ │ ├── WebConfig.kt │ │ │ ├── customer │ │ │ │ ├── AdminCustomerController.kt │ │ │ │ └── CustomerController.kt │ │ │ ├── login │ │ │ │ ├── FirstUserInitializer.kt │ │ │ │ └── LoginRequest.kt │ │ │ └── security │ │ │ │ ├── JWTService.kt │ │ │ │ ├── authentication │ │ │ │ ├── CustomerReactiveUserDetailsService.kt │ │ │ │ ├── JWTConverter.kt │ │ │ │ ├── JWTServerAuthenticationFailureHandler.kt │ │ │ │ └── JWTServerAuthenticationSuccessHandler.kt │ │ │ │ └── authorization │ │ │ │ └── JWTReactiveAuthorizationFilter.kt │ │ │ ├── domain │ │ │ ├── Customer.kt │ │ │ └── CustomerRepository.kt │ │ │ └── infrastructure │ │ │ ├── CustomerMongoRepository.kt │ │ │ ├── CustomerSpringMongoRepository.kt │ │ │ └── MongoConfig.kt │ └── resources │ │ ├── application.yml │ │ └── logback-spring.xml │ └── test │ └── kotlin │ └── com │ └── popokis │ └── backend_server │ ├── AppIntegrationTest.kt │ ├── application │ ├── customer │ │ ├── AdminCustomerIntegrationTest.kt │ │ └── CustomerIntegrationTest.kt │ └── login │ │ └── LoginIntegrationTest.kt │ └── helper │ └── CustomerHelper.kt ├── ci └── kill_java_process.sh ├── data └── mongo │ ├── 001_users.js │ └── 002_create_customer_collection.js ├── diagrams ├── authentication_flow.png ├── authentication_web_filter.png ├── authentication_web_filter.puml └── authentication_web_filter_flow.puml ├── docker-compose.yml ├── frontend-client ├── babel.config.js ├── npm ├── package-lock.json ├── package.json ├── pom.xml ├── public │ ├── favicon.ico │ └── index.html ├── src │ ├── App.vue │ ├── assets │ │ └── logo.png │ ├── components │ │ ├── CustomerList.vue │ │ └── HelloWorld.vue │ ├── http.js │ ├── main.js │ ├── router │ │ └── index.js │ ├── store │ │ └── index.js │ └── views │ │ ├── About.vue │ │ ├── Customers.vue │ │ ├── Home.vue │ │ └── Login.vue ├── tests │ └── unit │ │ └── example.spec.js └── vue.config.js └── pom.xml /.github/workflows/prod_workflow.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/.github/workflows/prod_workflow.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/README.md -------------------------------------------------------------------------------- /backend-server/pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/pom.xml -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/Application.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/Application.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/application/HttpExceptionFactory.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/application/HttpExceptionFactory.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/application/WebConfig.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/application/WebConfig.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/application/customer/AdminCustomerController.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/application/customer/AdminCustomerController.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/application/customer/CustomerController.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/application/customer/CustomerController.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/application/login/FirstUserInitializer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/application/login/FirstUserInitializer.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/application/login/LoginRequest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/application/login/LoginRequest.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/application/security/JWTService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/application/security/JWTService.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/application/security/authentication/CustomerReactiveUserDetailsService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/application/security/authentication/CustomerReactiveUserDetailsService.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/application/security/authentication/JWTConverter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/application/security/authentication/JWTConverter.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/application/security/authentication/JWTServerAuthenticationFailureHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/application/security/authentication/JWTServerAuthenticationFailureHandler.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/application/security/authentication/JWTServerAuthenticationSuccessHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/application/security/authentication/JWTServerAuthenticationSuccessHandler.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/application/security/authorization/JWTReactiveAuthorizationFilter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/application/security/authorization/JWTReactiveAuthorizationFilter.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/domain/Customer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/domain/Customer.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/domain/CustomerRepository.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/domain/CustomerRepository.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/infrastructure/CustomerMongoRepository.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/infrastructure/CustomerMongoRepository.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/infrastructure/CustomerSpringMongoRepository.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/infrastructure/CustomerSpringMongoRepository.kt -------------------------------------------------------------------------------- /backend-server/src/main/kotlin/com/popokis/backend_server/infrastructure/MongoConfig.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/kotlin/com/popokis/backend_server/infrastructure/MongoConfig.kt -------------------------------------------------------------------------------- /backend-server/src/main/resources/application.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/resources/application.yml -------------------------------------------------------------------------------- /backend-server/src/main/resources/logback-spring.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/main/resources/logback-spring.xml -------------------------------------------------------------------------------- /backend-server/src/test/kotlin/com/popokis/backend_server/AppIntegrationTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/test/kotlin/com/popokis/backend_server/AppIntegrationTest.kt -------------------------------------------------------------------------------- /backend-server/src/test/kotlin/com/popokis/backend_server/application/customer/AdminCustomerIntegrationTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/test/kotlin/com/popokis/backend_server/application/customer/AdminCustomerIntegrationTest.kt -------------------------------------------------------------------------------- /backend-server/src/test/kotlin/com/popokis/backend_server/application/customer/CustomerIntegrationTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/test/kotlin/com/popokis/backend_server/application/customer/CustomerIntegrationTest.kt -------------------------------------------------------------------------------- /backend-server/src/test/kotlin/com/popokis/backend_server/application/login/LoginIntegrationTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/test/kotlin/com/popokis/backend_server/application/login/LoginIntegrationTest.kt -------------------------------------------------------------------------------- /backend-server/src/test/kotlin/com/popokis/backend_server/helper/CustomerHelper.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/backend-server/src/test/kotlin/com/popokis/backend_server/helper/CustomerHelper.kt -------------------------------------------------------------------------------- /ci/kill_java_process.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/ci/kill_java_process.sh -------------------------------------------------------------------------------- /data/mongo/001_users.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/data/mongo/001_users.js -------------------------------------------------------------------------------- /data/mongo/002_create_customer_collection.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/data/mongo/002_create_customer_collection.js -------------------------------------------------------------------------------- /diagrams/authentication_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/diagrams/authentication_flow.png -------------------------------------------------------------------------------- /diagrams/authentication_web_filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/diagrams/authentication_web_filter.png -------------------------------------------------------------------------------- /diagrams/authentication_web_filter.puml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/diagrams/authentication_web_filter.puml -------------------------------------------------------------------------------- /diagrams/authentication_web_filter_flow.puml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/diagrams/authentication_web_filter_flow.puml -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/docker-compose.yml -------------------------------------------------------------------------------- /frontend-client/babel.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/babel.config.js -------------------------------------------------------------------------------- /frontend-client/npm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/npm -------------------------------------------------------------------------------- /frontend-client/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/package-lock.json -------------------------------------------------------------------------------- /frontend-client/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/package.json -------------------------------------------------------------------------------- /frontend-client/pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/pom.xml -------------------------------------------------------------------------------- /frontend-client/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/public/favicon.ico -------------------------------------------------------------------------------- /frontend-client/public/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/public/index.html -------------------------------------------------------------------------------- /frontend-client/src/App.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/src/App.vue -------------------------------------------------------------------------------- /frontend-client/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/src/assets/logo.png -------------------------------------------------------------------------------- /frontend-client/src/components/CustomerList.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/src/components/CustomerList.vue -------------------------------------------------------------------------------- /frontend-client/src/components/HelloWorld.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/src/components/HelloWorld.vue -------------------------------------------------------------------------------- /frontend-client/src/http.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/src/http.js -------------------------------------------------------------------------------- /frontend-client/src/main.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/src/main.js -------------------------------------------------------------------------------- /frontend-client/src/router/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/src/router/index.js -------------------------------------------------------------------------------- /frontend-client/src/store/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/src/store/index.js -------------------------------------------------------------------------------- /frontend-client/src/views/About.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/src/views/About.vue -------------------------------------------------------------------------------- /frontend-client/src/views/Customers.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/src/views/Customers.vue -------------------------------------------------------------------------------- /frontend-client/src/views/Home.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/src/views/Home.vue -------------------------------------------------------------------------------- /frontend-client/src/views/Login.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/src/views/Login.vue -------------------------------------------------------------------------------- /frontend-client/tests/unit/example.spec.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/tests/unit/example.spec.js -------------------------------------------------------------------------------- /frontend-client/vue.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/frontend-client/vue.config.js -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soasada/kotlin-coroutines-webflux-security/HEAD/pom.xml --------------------------------------------------------------------------------