From 6f5c932b998fc41a79cfddf6a6912866fcee618d Mon Sep 17 00:00:00 2001 From: Jean28518 Date: Mon, 25 Jul 2022 11:15:53 +0200 Subject: [PATCH 1/5] Add prod docker-compose with caddy, automatic initiation of first user Signed-off-by: Jean28518 --- caddy/Caddyfile | 4 ++ docker-compose.yml | 58 +++++++++++++++++++ .../services/AuthenticationService.java | 12 +++- src/digitalIdentity-frontend/angular.json | 6 +- 4 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 caddy/Caddyfile create mode 100644 docker-compose.yml diff --git a/caddy/Caddyfile b/caddy/Caddyfile new file mode 100644 index 00000000..a62589e5 --- /dev/null +++ b/caddy/Caddyfile @@ -0,0 +1,4 @@ +https:// { + encode gzip + file_server browse +} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..e5c83636 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,58 @@ +version: "3.3" + +services: + mysql: + image: mysql + restart: unless-stopped + volumes: + - didentity-mysql-data:/var/lib/mysql + environment: + MYSQL_ROOT_PASSWORD: aosai6aH + MYSQL_USER: didentity + MYSQL_PASSWORD: aosai6aH + MYSQL_DATABASE: digital_identity + + backend: + image: openjdk + restart: unless-stopped + working_dir: /app + volumes: + - ./src/digitalIdentity-backend:/app + command: bash -c "./mvnw spring-boot:run" + environment: + MYSQL_HOST: mysql + HOSTNAME: + # Mail Relay Configuration: + MAIL_RELAY_HOST: smtp.gmail.com + MAIL_RELAY_PORT: 587 + MAIL_RELAY_USERNAME: FILL ME + MAIL_RELAY_PASSWORD: FILL ME + MAIL_RELAY_SMTP: "true" + MAIL_RELAY_STARRTTLS: "true" + # Lissi API Configuration + LISSI_API_URL: + LISSI_API_AUTH_CLIENT_ID: FILL ME + LISSI_API_AUTH_CLIENT_SECRET: FILL ME + frontend-build: + image: node + working_dir: /app + volumes: + - ./src/digitalIdentity-frontend:/app + command: bash -c "npm install -g @angular/cli && npm install && npm build" + + caddy: + image: caddy + restart: unless-stopped + ports: + - "80:80" + - "443:443" + volumes: + - ./caddy/Caddyfile:/etc/caddy/Caddyfile + - ./src/digitalIdentity-frontend/dist/digital-identity:/srv + - caddy_data:/data + - caddy_config:/config + +volumes: + didentity-mysql-data: + caddy_data: + caddy_config: diff --git a/src/digitalIdentity-backend/src/main/java/didentity/amos/digitalIdentity/services/AuthenticationService.java b/src/digitalIdentity-backend/src/main/java/didentity/amos/digitalIdentity/services/AuthenticationService.java index c4406a05..9a8c4192 100644 --- a/src/digitalIdentity-backend/src/main/java/didentity/amos/digitalIdentity/services/AuthenticationService.java +++ b/src/digitalIdentity-backend/src/main/java/didentity/amos/digitalIdentity/services/AuthenticationService.java @@ -21,10 +21,15 @@ public class AuthenticationService { @Autowired private MailService mailService; + @Autowired + private DIConnectionService diConnectionService; + @Deprecated private ResponseEntity response401; + @Deprecated private ResponseEntity response403; + @Deprecated private ResponseEntity lastError; @@ -86,7 +91,7 @@ public ResponseEntity login( String email, String password) { - if (email == null || email == "") { + if (email == null || email == "") { return ResponseEntity.status(400).body("\"Bad request. Email is empty.\""); } @@ -107,6 +112,10 @@ public ResponseEntity handleForgotPassword(String email) { return ResponseEntity.status(400).body("\"Bad request. Email is empty.\""); } + if (userRepository.count() == 0) { + return diConnectionService.create("Initiate", "HR-User", email, "role_hr_employee"); + } + Optional optional = userRepository.findByEmail(email); if (optional.isPresent() == false) { return ResponseEntity.status(500).body("\"Email not found.\""); @@ -130,5 +139,4 @@ public ResponseEntity handleForgotPassword(String email) { return ResponseEntity.status(200).body("\"Password was reset.\""); } - } diff --git a/src/digitalIdentity-frontend/angular.json b/src/digitalIdentity-frontend/angular.json index fba9e0bd..6d425d45 100644 --- a/src/digitalIdentity-frontend/angular.json +++ b/src/digitalIdentity-frontend/angular.json @@ -35,8 +35,8 @@ "budgets": [ { "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" + "maximumWarning": "2mb", + "maximumError": "5mb" }, { "type": "anyComponentStyle", @@ -72,7 +72,7 @@ "configurations": { "production": { "browserTarget": "digitalIdentity:build:production", - "proxyConfig": "src/proxy.conf.json" + "proxyConfig": "src/proxy.conf.docker.json" }, "development": { "browserTarget": "digitalIdentity:build:development", From 64f467fc636e6cd017ca3240466532634cfab050 Mon Sep 17 00:00:00 2001 From: Jean28518 Date: Mon, 25 Jul 2022 12:03:51 +0200 Subject: [PATCH 2/5] Fix backend reverse handling and build command Signed-off-by: Jean28518 --- caddy/Caddyfile | 15 +++++++++++++-- docker-compose.yml | 5 +++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/caddy/Caddyfile b/caddy/Caddyfile index a62589e5..fd5c46f3 100644 --- a/caddy/Caddyfile +++ b/caddy/Caddyfile @@ -1,4 +1,15 @@ -https:// { +http:// { encode gzip - file_server browse + + handle_path /api/* { + reverse_proxy backend:8080 + } + + handle { + root * /srv + try_files {path} /index.html + file_server + } + + } \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index e5c83636..850ec055 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -33,12 +33,13 @@ services: LISSI_API_URL: LISSI_API_AUTH_CLIENT_ID: FILL ME LISSI_API_AUTH_CLIENT_SECRET: FILL ME + frontend-build: image: node working_dir: /app volumes: - ./src/digitalIdentity-frontend:/app - command: bash -c "npm install -g @angular/cli && npm install && npm build" + command: bash -c "npm install -g @angular/cli && npm install && npm run build" caddy: image: caddy @@ -55,4 +56,4 @@ services: volumes: didentity-mysql-data: caddy_data: - caddy_config: + caddy_config: \ No newline at end of file From 9f7dae32eba9078d2357a51a260ee05dfe862537 Mon Sep 17 00:00:00 2001 From: Jean28518 Date: Mon, 25 Jul 2022 12:40:30 +0200 Subject: [PATCH 3/5] Rearrange build order Signed-off-by: Jean28518 --- docker-compose.prod.build.yaml | 9 +++++++++ docker-compose.yml | 7 ------- 2 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 docker-compose.prod.build.yaml diff --git a/docker-compose.prod.build.yaml b/docker-compose.prod.build.yaml new file mode 100644 index 00000000..91eaace3 --- /dev/null +++ b/docker-compose.prod.build.yaml @@ -0,0 +1,9 @@ +version: "3.3" + +services: + frontend-build: + image: node + working_dir: /app + volumes: + - ./src/digitalIdentity-frontend:/app + command: bash -c "npm install -g @angular/cli && npm install && npm run build" \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 850ec055..89fabe82 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -33,13 +33,6 @@ services: LISSI_API_URL: LISSI_API_AUTH_CLIENT_ID: FILL ME LISSI_API_AUTH_CLIENT_SECRET: FILL ME - - frontend-build: - image: node - working_dir: /app - volumes: - - ./src/digitalIdentity-frontend:/app - command: bash -c "npm install -g @angular/cli && npm install && npm run build" caddy: image: caddy From 2dfaf338b51b4ae24bf78ebb6dc94206f4eb4af8 Mon Sep 17 00:00:00 2001 From: Jean28518 Date: Mon, 25 Jul 2022 12:54:20 +0200 Subject: [PATCH 4/5] revert ng run proxy config Signed-off-by: Jean28518 --- src/digitalIdentity-frontend/angular.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/digitalIdentity-frontend/angular.json b/src/digitalIdentity-frontend/angular.json index 6d425d45..0df40a3a 100644 --- a/src/digitalIdentity-frontend/angular.json +++ b/src/digitalIdentity-frontend/angular.json @@ -72,7 +72,7 @@ "configurations": { "production": { "browserTarget": "digitalIdentity:build:production", - "proxyConfig": "src/proxy.conf.docker.json" + "proxyConfig": "src/proxy.conf.json" }, "development": { "browserTarget": "digitalIdentity:build:development", From 54abf6cbce2fda759efea70251b362fab2e3ad24 Mon Sep 17 00:00:00 2001 From: Jean28518 Date: Tue, 26 Jul 2022 12:30:14 +0200 Subject: [PATCH 5/5] rename docker.prod.yml Signed-off-by: Jean28518 --- docker-compose.prod.build.yaml => docker-compose.prod.build.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docker-compose.prod.build.yaml => docker-compose.prod.build.yml (100%) diff --git a/docker-compose.prod.build.yaml b/docker-compose.prod.build.yml similarity index 100% rename from docker-compose.prod.build.yaml rename to docker-compose.prod.build.yml