From 2255f856f928e855ac94f8aca4e1fb81047f58f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20S=C3=B3jko?= Date: Wed, 2 Nov 2022 13:23:15 +0100 Subject: [PATCH] feat(auth): add processing user requests --- .pnp.cjs | 83 ++++++++------ ...-api-npm-1.19.0-ce8296df3c-b28884be40.zip} | Bin 82865 -> 91864 bytes ...tion-npm-1.19.0-29799e7bcc-af7665e979.zip} | Bin 57448 -> 57602 bytes ...ures-npm-1.54.0-15f8cf20f0-7647e7506e.zip} | Bin 26193 -> 26194 bytes ...dels-npm-1.33.0-df7d20ae6d-7d45409e4a.zip} | Bin 232849 -> 234151 bytes ...nses-npm-1.12.0-1de721974f-15b2e92d57.zip} | Bin 46464 -> 46465 bytes ...utils-npm-1.11.0-afbc24024c-9e7d9c1257.zip | Bin 0 -> 16936 bytes ...ayjs-npm-1.11.6-44daf311a9-f59ea45f24.zip} | Bin 342116 -> 344084 bytes .../src/Controller/v1/UsersController.ts | 5 + packages/auth/bin/server.ts | 1 + packages/auth/package.json | 4 +- packages/auth/src/Bootstrap/Container.ts | 4 + packages/auth/src/Bootstrap/Types.ts | 2 + .../src/Controller/AuthController.spec.ts | 11 ++ .../auth/src/Controller/AuthController.ts | 6 + .../Controller/UserRequestsController.spec.ts | 43 +++++++ .../src/Controller/UserRequestsController.ts | 34 ++++++ .../Domain/Event/DomainEventFactory.spec.ts | 23 ++++ .../src/Domain/Event/DomainEventFactory.ts | 19 +++ .../Event/DomainEventFactoryInterface.ts | 5 + .../ProcessUserRequest.spec.ts | 94 +++++++++++++++ .../ProcessUserRequest/ProcessUserRequest.ts | 46 ++++++++ .../ProcessUserRequestDTO.ts | 7 ++ .../ProcessUserRequestResponse.ts | 3 + .../InversifyExpressUserRequestsController.ts | 24 ++++ packages/files/package.json | 2 +- packages/scheduler/package.json | 2 +- packages/time/package.json | 2 +- packages/time/src/Domain/Time/Timer.spec.ts | 4 +- packages/websockets/package.json | 2 +- packages/workspace/package.json | 2 +- yarn.lock | 108 ++++++++++-------- 32 files changed, 443 insertions(+), 93 deletions(-) rename .yarn/cache/{@standardnotes-api-npm-1.17.2-c07102ac18-4f74f52306.zip => @standardnotes-api-npm-1.19.0-ce8296df3c-b28884be40.zip} (59%) rename .yarn/cache/{@standardnotes-encryption-npm-1.18.5-80059dd62d-b023188012.zip => @standardnotes-encryption-npm-1.19.0-29799e7bcc-af7665e979.zip} (92%) rename .yarn/cache/{@standardnotes-features-npm-1.53.2-cd8faaf4ee-820219e3a5.zip => @standardnotes-features-npm-1.54.0-15f8cf20f0-7647e7506e.zip} (87%) rename .yarn/cache/{@standardnotes-models-npm-1.30.0-c2134137c4-40c234f92b.zip => @standardnotes-models-npm-1.33.0-df7d20ae6d-7d45409e4a.zip} (84%) rename .yarn/cache/{@standardnotes-responses-npm-1.11.2-61f5ee52c3-2a1ffd142c.zip => @standardnotes-responses-npm-1.12.0-1de721974f-15b2e92d57.zip} (89%) create mode 100644 .yarn/cache/@standardnotes-utils-npm-1.11.0-afbc24024c-9e7d9c1257.zip rename .yarn/cache/{dayjs-npm-1.11.5-a825142dc5-ea78d43de0.zip => dayjs-npm-1.11.6-44daf311a9-f59ea45f24.zip} (81%) create mode 100644 packages/auth/src/Controller/UserRequestsController.spec.ts create mode 100644 packages/auth/src/Controller/UserRequestsController.ts create mode 100644 packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequest.spec.ts create mode 100644 packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequest.ts create mode 100644 packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequestDTO.ts create mode 100644 packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequestResponse.ts create mode 100644 packages/auth/src/Infra/InversifyExpressUtils/InversifyExpressUserRequestsController.ts diff --git a/.pnp.cjs b/.pnp.cjs index 18787f1f1..3fbce1573 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -2555,16 +2555,16 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@standardnotes/api", [\ - ["npm:1.17.2", {\ - "packageLocation": "./.yarn/cache/@standardnotes-api-npm-1.17.2-c07102ac18-4f74f52306.zip/node_modules/@standardnotes/api/",\ + ["npm:1.19.0", {\ + "packageLocation": "./.yarn/cache/@standardnotes-api-npm-1.19.0-ce8296df3c-b28884be40.zip/node_modules/@standardnotes/api/",\ "packageDependencies": [\ - ["@standardnotes/api", "npm:1.17.2"],\ + ["@standardnotes/api", "npm:1.19.0"],\ ["@standardnotes/common", "workspace:packages/common"],\ - ["@standardnotes/encryption", "npm:1.18.5"],\ - ["@standardnotes/models", "npm:1.30.0"],\ - ["@standardnotes/responses", "npm:1.11.2"],\ + ["@standardnotes/encryption", "npm:1.19.0"],\ + ["@standardnotes/models", "npm:1.33.0"],\ + ["@standardnotes/responses", "npm:1.12.0"],\ ["@standardnotes/security", "workspace:packages/security"],\ - ["@standardnotes/utils", "npm:1.10.0"],\ + ["@standardnotes/utils", "npm:1.11.0"],\ ["reflect-metadata", "npm:0.1.13"]\ ],\ "linkType": "HARD"\ @@ -2635,7 +2635,7 @@ const RAW_RUNTIME_STATE = ["@newrelic/winston-enricher", "virtual:04783e12400851b8a3d76e71495851cc94959db6e62f04cb0a31190080629440b182d8c8eb4d7f2b04e281912f2783a5fd4d2c3c6ab68d38b7097246c93f4c19#npm:4.0.0"],\ ["@sentry/node", "npm:7.5.0"],\ ["@standardnotes/analytics", "workspace:packages/analytics"],\ - ["@standardnotes/api", "npm:1.17.2"],\ + ["@standardnotes/api", "npm:1.19.0"],\ ["@standardnotes/common", "workspace:packages/common"],\ ["@standardnotes/domain-events", "workspace:packages/domain-events"],\ ["@standardnotes/domain-events-infra", "workspace:packages/domain-events-infra"],\ @@ -2662,7 +2662,7 @@ const RAW_RUNTIME_STATE = ["axios", "npm:0.27.2"],\ ["bcryptjs", "npm:2.4.3"],\ ["cors", "npm:2.8.5"],\ - ["dayjs", "npm:1.11.5"],\ + ["dayjs", "npm:1.11.6"],\ ["dotenv", "npm:16.0.1"],\ ["eslint", "npm:8.25.0"],\ ["eslint-plugin-prettier", "virtual:04783e12400851b8a3d76e71495851cc94959db6e62f04cb0a31190080629440b182d8c8eb4d7f2b04e281912f2783a5fd4d2c3c6ab68d38b7097246c93f4c19#npm:4.2.1"],\ @@ -2764,15 +2764,15 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@standardnotes/encryption", [\ - ["npm:1.18.5", {\ - "packageLocation": "./.yarn/cache/@standardnotes-encryption-npm-1.18.5-80059dd62d-b023188012.zip/node_modules/@standardnotes/encryption/",\ + ["npm:1.19.0", {\ + "packageLocation": "./.yarn/cache/@standardnotes-encryption-npm-1.19.0-29799e7bcc-af7665e979.zip/node_modules/@standardnotes/encryption/",\ "packageDependencies": [\ - ["@standardnotes/encryption", "npm:1.18.5"],\ + ["@standardnotes/encryption", "npm:1.19.0"],\ ["@standardnotes/common", "workspace:packages/common"],\ - ["@standardnotes/models", "npm:1.30.0"],\ - ["@standardnotes/responses", "npm:1.11.2"],\ + ["@standardnotes/models", "npm:1.33.0"],\ + ["@standardnotes/responses", "npm:1.12.0"],\ ["@standardnotes/sncrypto-common", "npm:1.13.0"],\ - ["@standardnotes/utils", "npm:1.10.0"],\ + ["@standardnotes/utils", "npm:1.11.0"],\ ["reflect-metadata", "npm:0.1.13"]\ ],\ "linkType": "HARD"\ @@ -2821,10 +2821,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["npm:1.53.2", {\ - "packageLocation": "./.yarn/cache/@standardnotes-features-npm-1.53.2-cd8faaf4ee-820219e3a5.zip/node_modules/@standardnotes/features/",\ + ["npm:1.54.0", {\ + "packageLocation": "./.yarn/cache/@standardnotes-features-npm-1.54.0-15f8cf20f0-7647e7506e.zip/node_modules/@standardnotes/features/",\ "packageDependencies": [\ - ["@standardnotes/features", "npm:1.53.2"],\ + ["@standardnotes/features", "npm:1.54.0"],\ ["@standardnotes/auth", "npm:3.19.4"],\ ["@standardnotes/common", "workspace:packages/common"],\ ["@standardnotes/security", "workspace:packages/security"],\ @@ -2860,7 +2860,7 @@ const RAW_RUNTIME_STATE = ["aws-sdk", "npm:2.1234.0"],\ ["connect-busboy", "npm:1.0.0"],\ ["cors", "npm:2.8.5"],\ - ["dayjs", "npm:1.11.5"],\ + ["dayjs", "npm:1.11.6"],\ ["dotenv", "npm:16.0.1"],\ ["eslint", "npm:8.25.0"],\ ["eslint-plugin-prettier", "virtual:04783e12400851b8a3d76e71495851cc94959db6e62f04cb0a31190080629440b182d8c8eb4d7f2b04e281912f2783a5fd4d2c3c6ab68d38b7097246c93f4c19#npm:4.2.1"],\ @@ -2900,14 +2900,14 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["npm:1.30.0", {\ - "packageLocation": "./.yarn/cache/@standardnotes-models-npm-1.30.0-c2134137c4-40c234f92b.zip/node_modules/@standardnotes/models/",\ + ["npm:1.33.0", {\ + "packageLocation": "./.yarn/cache/@standardnotes-models-npm-1.33.0-df7d20ae6d-7d45409e4a.zip/node_modules/@standardnotes/models/",\ "packageDependencies": [\ - ["@standardnotes/models", "npm:1.30.0"],\ + ["@standardnotes/models", "npm:1.33.0"],\ ["@standardnotes/common", "workspace:packages/common"],\ - ["@standardnotes/features", "npm:1.53.2"],\ - ["@standardnotes/responses", "npm:1.11.2"],\ - ["@standardnotes/utils", "npm:1.10.0"],\ + ["@standardnotes/features", "npm:1.54.0"],\ + ["@standardnotes/responses", "npm:1.12.0"],\ + ["@standardnotes/utils", "npm:1.11.0"],\ ["lodash", "npm:4.17.21"],\ ["reflect-metadata", "npm:0.1.13"]\ ],\ @@ -2955,12 +2955,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["npm:1.11.2", {\ - "packageLocation": "./.yarn/cache/@standardnotes-responses-npm-1.11.2-61f5ee52c3-2a1ffd142c.zip/node_modules/@standardnotes/responses/",\ + ["npm:1.12.0", {\ + "packageLocation": "./.yarn/cache/@standardnotes-responses-npm-1.12.0-1de721974f-15b2e92d57.zip/node_modules/@standardnotes/responses/",\ "packageDependencies": [\ - ["@standardnotes/responses", "npm:1.11.2"],\ + ["@standardnotes/responses", "npm:1.12.0"],\ ["@standardnotes/common", "workspace:packages/common"],\ - ["@standardnotes/features", "npm:1.53.2"],\ + ["@standardnotes/features", "npm:1.54.0"],\ ["@standardnotes/security", "workspace:packages/security"],\ ["reflect-metadata", "npm:0.1.13"]\ ],\ @@ -2985,7 +2985,7 @@ const RAW_RUNTIME_STATE = ["@types/node", "npm:18.0.3"],\ ["@typescript-eslint/eslint-plugin", "virtual:04783e12400851b8a3d76e71495851cc94959db6e62f04cb0a31190080629440b182d8c8eb4d7f2b04e281912f2783a5fd4d2c3c6ab68d38b7097246c93f4c19#npm:5.40.1"],\ ["aws-sdk", "npm:2.1234.0"],\ - ["dayjs", "npm:1.11.5"],\ + ["dayjs", "npm:1.11.6"],\ ["dotenv", "npm:16.0.1"],\ ["eslint", "npm:8.25.0"],\ ["eslint-plugin-prettier", "virtual:04783e12400851b8a3d76e71495851cc94959db6e62f04cb0a31190080629440b182d8c8eb4d7f2b04e281912f2783a5fd4d2c3c6ab68d38b7097246c93f4c19#npm:4.2.1"],\ @@ -3158,7 +3158,7 @@ const RAW_RUNTIME_STATE = ["@types/jest", "npm:29.1.1"],\ ["@types/microtime", "npm:2.1.0"],\ ["@typescript-eslint/eslint-plugin", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:5.30.5"],\ - ["dayjs", "npm:1.11.5"],\ + ["dayjs", "npm:1.11.6"],\ ["eslint-plugin-prettier", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.2.1"],\ ["jest", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:29.1.2"],\ ["microtime", "npm:3.1.1"],\ @@ -3180,6 +3180,17 @@ const RAW_RUNTIME_STATE = ["reflect-metadata", "npm:0.1.13"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:1.11.0", {\ + "packageLocation": "./.yarn/cache/@standardnotes-utils-npm-1.11.0-afbc24024c-9e7d9c1257.zip/node_modules/@standardnotes/utils/",\ + "packageDependencies": [\ + ["@standardnotes/utils", "npm:1.11.0"],\ + ["@standardnotes/common", "workspace:packages/common"],\ + ["dompurify", "npm:2.4.0"],\ + ["lodash", "npm:4.17.21"],\ + ["reflect-metadata", "npm:0.1.13"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@standardnotes/websockets-server", [\ @@ -3189,7 +3200,7 @@ const RAW_RUNTIME_STATE = ["@standardnotes/websockets-server", "workspace:packages/websockets"],\ ["@newrelic/winston-enricher", "virtual:04783e12400851b8a3d76e71495851cc94959db6e62f04cb0a31190080629440b182d8c8eb4d7f2b04e281912f2783a5fd4d2c3c6ab68d38b7097246c93f4c19#npm:4.0.0"],\ ["@sentry/node", "npm:7.5.0"],\ - ["@standardnotes/api", "npm:1.17.2"],\ + ["@standardnotes/api", "npm:1.19.0"],\ ["@standardnotes/common", "workspace:packages/common"],\ ["@standardnotes/domain-events", "workspace:packages/domain-events"],\ ["@standardnotes/domain-events-infra", "workspace:packages/domain-events-infra"],\ @@ -3229,7 +3240,7 @@ const RAW_RUNTIME_STATE = ["@standardnotes/workspace-server", "workspace:packages/workspace"],\ ["@newrelic/winston-enricher", "virtual:04783e12400851b8a3d76e71495851cc94959db6e62f04cb0a31190080629440b182d8c8eb4d7f2b04e281912f2783a5fd4d2c3c6ab68d38b7097246c93f4c19#npm:4.0.0"],\ ["@sentry/node", "npm:7.5.0"],\ - ["@standardnotes/api", "npm:1.17.2"],\ + ["@standardnotes/api", "npm:1.19.0"],\ ["@standardnotes/common", "workspace:packages/common"],\ ["@standardnotes/domain-events", "workspace:packages/domain-events"],\ ["@standardnotes/domain-events-infra", "workspace:packages/domain-events-infra"],\ @@ -5891,10 +5902,10 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["dayjs", [\ - ["npm:1.11.5", {\ - "packageLocation": "./.yarn/cache/dayjs-npm-1.11.5-a825142dc5-ea78d43de0.zip/node_modules/dayjs/",\ + ["npm:1.11.6", {\ + "packageLocation": "./.yarn/cache/dayjs-npm-1.11.6-44daf311a9-f59ea45f24.zip/node_modules/dayjs/",\ "packageDependencies": [\ - ["dayjs", "npm:1.11.5"]\ + ["dayjs", "npm:1.11.6"]\ ],\ "linkType": "HARD"\ }]\ diff --git a/.yarn/cache/@standardnotes-api-npm-1.17.2-c07102ac18-4f74f52306.zip b/.yarn/cache/@standardnotes-api-npm-1.19.0-ce8296df3c-b28884be40.zip similarity index 59% rename from .yarn/cache/@standardnotes-api-npm-1.17.2-c07102ac18-4f74f52306.zip rename to .yarn/cache/@standardnotes-api-npm-1.19.0-ce8296df3c-b28884be40.zip index c0235c524c641154ba212f5a09bd85f7286f861b..a5a6dc3910bcdcc121a240ea58ee820605eac0e3 100644 GIT binary patch delta 15115 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 lyC~e1jF8WMKVJoS*4ws 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

9AKVda1o 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 diff --git a/.yarn/cache/@standardnotes-features-npm-1.53.2-cd8faaf4ee-820219e3a5.zip b/.yarn/cache/@standardnotes-features-npm-1.54.0-15f8cf20f0-7647e7506e.zip similarity index 87% rename from .yarn/cache/@standardnotes-features-npm-1.53.2-cd8faaf4ee-820219e3a5.zip rename to .yarn/cache/@standardnotes-features-npm-1.54.0-15f8cf20f0-7647e7506e.zip index 460049c4cebd0d39153383644986ed52a3a59479..1e114301bb280ff79b1e124d2cc9860afc20a1a1 100644 GIT binary patch delta 882 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 GrTQOZ^-aV8 delta 13170 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

E7 z5nG2@)Pgp1T7E4%8ucX%s|vT%!Z2EC7^_0)^`JIe={pC>GzO1JM8FMAR{$*zp%IN>HE{bbSNa zRMmAk88gG@O6y$fpG30$<0JU2NE>Hxz>5HOG&KgxXmlLo#s0eunkA67KA z=e$Vs8_>1A0NdyblvdD9p{c**Kq5aOp=`SU4x(}QUsPh~iy|(CMlOLXw0j_3ZD_I+ zEU0iToZM@^gZZC&=<_Y~hLR!i1C%W5C4iE3I0Y5_0D`zac%~;Jn)!iQl0%WjPb?XG z@EEHI;)>YYKaae7rf>uDF{DMt zw_^_`fk+F0sGcRsX{1y?3(BK~=}5p8S{CoShEFM3a49|?>~9!I<9;n7$u z8TISph6vUT2XeNBP`j{#RwWFjY2XGlja}@h)(+!Gj|fzQg-I-k9N55^URI1yMT( z2-W4CmBWeaVv`hx94CG<_up9~M3`cY@`PYNG3NrVPeKfn$I1ket1xUn_X#vy1X;M? zM#$V3<3kTc$P|W*2yUDglM*A0H$>Nx$$}_V4F2_S1IvIIlSKg8i<1S=CLVyFN;BYg z9^3&llKYG1kQ{k2R9Av^AyXnd&1F60Zak#f%}Iz-sXUqQuT8W_o+*G2W%J?M*yY89 zGpvzR0#r*u3a&~{Lgo}a0=uuoaK{7%*TXzi86oIXf+|+43Y%FHKPYC`WGd!Be5N=b z5>JBd>ck5uIOW!479;^3Wb$gHDS#(q{5lMm_J(6ZC`JqyL_&hNIJQHN0Y?hrMp(W+ z^MM`BPlg=*DF_+RYs_S2MNvXv_7(HLkd#=A7flNRVU9Jjpy0DfPtS3gIEcVzVVIXS zIxLKDCI2Qq^pTS-1orVIOaf7qASk}JOvc4%Km^G5 zo5`3c5PCW?(n&KF=R(aXa3Oc#fDJN343@?`=YPl8(Wn?$pXI`Y#ZZDc2(fWR{N}hB zEzpe>HKqdlPjOs8YVIW>iRApx4zSK`HX!g?5hY0AYFLXq6S2b%tzte1BA4yp$8D0J zC1CYm@Ha`YMfLwSi4PMtm(6!9wgl1m66u0MT_AA->6j=#C_&Xc;sr4;xp80>HM(Od(Pwd2rMN zHmIyy={XJuD_%s&hoeIBVnBx&C`!%8dC(Yv?BB+i2K`92NfGj99-Nn%c7!W|hrTP~ zi?EhdrglL@DFinpDgpn_GzLGE4|B{ao%tY$B9(C+avqXX#Kr119;twTm+WBDs7cMWYe^)cMfT^fBJJZ2Vs*%)*;8lzZ@oIzJEC-lq$w9IhGP4F*C$)k8ODS^%jg`R;BfSLN=Tb(@$_bS$ z0ee!9G9H9G8^)1!r0Kl4X{w#j+6gBP{~yhq`R=6^iL;rLKpaj zP7uP3>9&og%25Xs4CAk=;_5$hsQFR?~MK7RY@9xp|toPq8C2 zecT3BpbOUK#FaAlXGtU^D3_>wrDaOOh*?a$y>i?RUi3{?31Ee!E2&0H)U_ith##rDxvLb;{5Vt+>li$sG5%In!OQQfYoFc`1rvSyv_D=zW&x$nj z0iuTK(_b+lUI&o;eSkhSXts!=90yp_(Sv^g8MI6t=A*P6G+iEIcmOV~yeMxuF#3FC zL;-p!T!_UH9Q|yVNyCABdSHpA5^(ybIhbag!j66r=-m+p3cVIFwABd&ULHkS&bR~7 zW)VPn&M-$|XVCm`jDWMSx8sb(Mx4W;!y<^5Yy;!uU4TS>f>>h-oV;BnZ#EB~> zy??@ky!Ao%-j$&H7b}BwtV|tAdVr5E!aW28GMYNjFfqpjI0ajug%Ou9_V*niRFGjSamj*y37trtEQ#d2V6#n4B}))Z z6IS$}7p_ijrK7aI%^aw9wtJ$31qq{QUr_nb8&2$R7!O3p585QGXq69`kRrmMp!Z2y zeZWj)JFaRxINY= z&3uqRUjyJ$xO@IA5{R$F0%e#FBD7y!u&je%<_fa2GT{VD%YMQ~WP=bo9t7%y7Z41F zNVWuun9Mi0maN(iV+w0v?A=0QjM>dV`D;Mkw?#}4jVfRgC@>aGS6NFWivlr3zb^b~ zVd!GL3UuAjtuV#*D-z!=h%SW)LhHb?C}pNJXqd302vxW=8R`)d)&KDpRh1!o%$U4myk&S%hMzX;m&rFNZV2E5fpjiTa4P$JVHa%W6jd2d>X9y5AT?j4R0Ol&_ z%#E!2ERN1>00FYPf6svnX>0^=CENznaZBW?kBOp78=l0-3byGCSk7NyD)tGF8 zfo}T1++EKa%QvKxBH0k!4f8T$K2T6&2<$fj#k_k>5ixV9?5ygdQy#biC7^`=23^k~jdZeg6SD5wt+$QItPq1S$Y?FUEn; zK|iKKW;4VXuJ9dkxb~cFN8+KJGz2n8Yu8{hXwn=cSR{aiu^_q{;*Gv3*1F~|H}NMz zk%(Hy@W-EC2s=WFVBDpROucix5JOBglmW|zV`7Z0u|5fO41_Y=tZ4#mhzK3nnHO&X zA!gwWn34<)oI_in2qZ)>5o=5$it$jG3>!*HG~*#E7P>7eTfln56kLL=fI5;PN$G9B zKOGQ3MqWz9|Fh5|HZ$h=4=Edph=;;Jzf0(E1xt0~nN%vMb}QuBoo z&SgiPX<&QB_P=20rRZV%)0qe#dbu4+#R){-4(V0c%ZpxR!A5-26T-1R9o!d^NjPMU z)ZA|cNF>L9jJugd%tMR#<*yyKa3>?EvR$x0d<=rC8@-Bt$N*6ayBK5iiuL`W8Y#SpCl6v)k_$$rmNF$vBiAFuF)a_I)*ocbAbKd$ z=u{pMPm~c(nOzOgMA0D!qPkp2hNu7v>Y>8w$jb)SeId_y8loP?iSlKu~M Cng6W- diff --git a/.yarn/cache/@standardnotes-responses-npm-1.11.2-61f5ee52c3-2a1ffd142c.zip b/.yarn/cache/@standardnotes-responses-npm-1.12.0-1de721974f-15b2e92d57.zip similarity index 89% rename from .yarn/cache/@standardnotes-responses-npm-1.11.2-61f5ee52c3-2a1ffd142c.zip rename to .yarn/cache/@standardnotes-responses-npm-1.12.0-1de721974f-15b2e92d57.zip index 38eb617c7f1aef5f94df3d9886eca1e5cc8fba89..1cd542c13d5e19953d3bc9654b21274fc8275585 100644 GIT binary patch delta 1506 zcmYjQe>~K880Qn`M_0adqDzgvQk%`Wa*F%W@?*I|m>T79m~eE-u+8M$bW^qxPm<$s z$N5ooj;mLRv{lyGX4zz+TC3G6MZc!?i+%g-+I;_d-tXuA`8@B>^E}_YQ6wEjt(!be zXUGmZnL&&vPm&4VUyU#c+4xi2{GtSP#5S8H0g*>jmArlG^FCJUnT4!%wA7)bo}pRa zPdi~Ux7=t^bohZwKI#6=T^GK2CNHixZffE=Ij>NR=1B$jIJG6B z#lK9tKWll!*SmHG8g=M~dvrx_417?(O!mZOyh?9!)kCsS%U^u#%L3i=j)NjA&P__6 zhtgTs>YeNJ_o-1}PmoVUM|mvS3r z@6qnLIi zIVxG>uTZCiE(yDx^KQXFm(;}Re);dLUhx3GU+W)NLz!hBduIlv>wQAi@7L`xzVJ>p zKk#~&XHE~vZN2oVdhFVbpeMd#*HfKK1(m&ji5wawx0LlSeOU=7?%7@2=G2}MvC&g& z)scjjaj1$1m-P>iUc7s0{w{4v@7V)WE-yy9d(Uhs`m?k$(XL*SV=5B+cDJo%+??{T zkuUdLIlK5y95rHJQpEam!=l0d;0k8r=;=F-@cg1K1=xAq{d zK%Fcun<-L1eA9JM|3~ISyLJ_OQeapOby+5=WrI@#2ks*)xLiSl>;rUkmjkhuEO0b8 zg;iWz*eoaDCYPWZ8NNE{5ErxpF9^=I17SG>z2HIUaxVy3Nrz*H33yaaN6hyOlr^0C z+yVlWG{}2|K*n;EO6EvBUAmdGJZ23)(LrGXj_*!`)HXR_h{bNNZxC-e?1)!quh~s5%B) za@6@h zQL+INu&J5`d<`94PsZ<7XxK<8BC~9m5Y5Kkm$uT;nG{UTOSOTbHUgSRsw@>#Q>{D{ zzXe-%+&2egS~pZ7Hb4jbNO~I`Wp5=ZHl($YOOl4W`nb&t-Pnd}dZp9xIF6@J|AU&- t@sU0c`w|@k6@N@NZY7Ax&?N((%FVEayE+&2@-?JF)R6_0%bBkx`VVJbeI5V+ delta 1473 zcmYjPdo+}J7;b({2{j+Nev^~5OW4pL8O2nH5oWqjv`boBV$9~uv~)3~>mlLYNk%hr zNv3fbm&r-?)NZ<2E3Hm-HcKazjA|;XUC!FCU$bZX{(7J1dw%cp-mQhC zMe+{kjHcJ`pI;u3cQ?$->e76j^Q7%_NIlkN0pke!uw{C^41RytvMZ&%lP@;t{J?r=r1RP z18c?u`z4_%mn+g*E(!NPzkfbhvoyq+W!t6vxzl$1$7#DjlXava=73LGlW2KHghZUDucQCOUw;4J2^(ZV;&>k2Z=hzzX#Lb_DlsQkgu-4 zWL_LuvUl)?tGL)r*k+ej_S985^oCa--OCALNW5PxsHkfbUm+sHN^aWC&p-3LV$Q8G zkHEpBIm7J_ryeqoH?rW@rPDzl-d^df5=1_eb_FO-_y5Jc*LOHGQM&c1)1e=NSNGCy zPA*(8H#azCNm_X~U6hH_x~hs?0#-HHO>^X_KP^@-&b{8=GTeU8)!S!p+HOHC`9c5mqjEkX;I}hGf6Tm-9qHn{f9C1Zd zseKfRTSuW4pw6*@o^^)6D|bPHa7-~R3E-s}Vxzut677n>wO)<*bezuRS4 zc>XY|jG^lEg)9e4EHSPjkt|kUCmnRLwvb-qf}~rq>d%^Rl=n51D>;y&^rYQ}v&wX& zhy(sIUkGqC15LdJq+cMBJYG+k7CFtv{pW7`+Mk|u%Obr~pT2mYbnVS_giUQZ&wotTO*oD1rDPc;1> zw8l9@8%Xpd3AdnVV576Uu=w3B23)EqfTbqUwPZ}$rp&`BFHqE}6iiL4{ZWDdvTNCJ zV(A<>(&&z4sd{Jy{iPPbY@*gJq-Ms39^nEgXrk`qdpts2lRp~T4YafkIBQ$l=i64L z;V0eRHq>=mfMp9wD*%rc0df|>s^TCB@S#J2$Piw%xS*+zR0KZ5WDPO1PyBI>{{mUn Bc&7jW diff --git a/.yarn/cache/@standardnotes-utils-npm-1.11.0-afbc24024c-9e7d9c1257.zip b/.yarn/cache/@standardnotes-utils-npm-1.11.0-afbc24024c-9e7d9c1257.zip new file mode 100644 index 0000000000000000000000000000000000000000..fee72a8c06112c1e81e4d312e1e2b5f9b79357b0 GIT binary patch literal 16936 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 literal 0 HcmV?d00001 diff --git a/.yarn/cache/dayjs-npm-1.11.5-a825142dc5-ea78d43de0.zip b/.yarn/cache/dayjs-npm-1.11.6-44daf311a9-f59ea45f24.zip similarity index 81% rename from .yarn/cache/dayjs-npm-1.11.5-a825142dc5-ea78d43de0.zip rename to .yarn/cache/dayjs-npm-1.11.6-44daf311a9-f59ea45f24.zip index 90040df96f7bc9f4626ae7accc9a95659865f905..dc333fe777c3cee21f0c6337cc2fa11df8bd2180 100644 GIT binary patch delta 36122 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 bC=QJ9eR&ii`3&w1u1_ouPSaa(s>As|Zyj-F diff --git a/packages/api-gateway/src/Controller/v1/UsersController.ts b/packages/api-gateway/src/Controller/v1/UsersController.ts index 679feface..f404b4735 100644 --- a/packages/api-gateway/src/Controller/v1/UsersController.ts +++ b/packages/api-gateway/src/Controller/v1/UsersController.ts @@ -147,4 +147,9 @@ export class UsersController extends BaseHttpController { async deleteUser(request: Request, response: Response): Promise { await this.httpService.callPaymentsServer(request, response, 'api/account', request.body) } + + @httpPost('/:userUuid/requests', TYPES.AuthMiddleware) + async submitRequest(request: Request, response: Response): Promise { + await this.httpService.callAuthServer(request, response, `users/${request.params.userUuid}/requests`, request.body) + } } diff --git a/packages/auth/bin/server.ts b/packages/auth/bin/server.ts index 06fef5dd5..b0d29e34c 100644 --- a/packages/auth/bin/server.ts +++ b/packages/auth/bin/server.ts @@ -20,6 +20,7 @@ import '../src/Controller/SubscriptionSettingsController' import '../src/Infra/InversifyExpressUtils/InversifyExpressAuthController' import '../src/Infra/InversifyExpressUtils/InversifyExpressSubscriptionInvitesController' +import '../src/Infra/InversifyExpressUtils/InversifyExpressUserRequestsController' import '../src/Infra/InversifyExpressUtils/InversifyExpressWebSocketsController' import * as cors from 'cors' diff --git a/packages/auth/package.json b/packages/auth/package.json index c80e70b0a..29157606c 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -33,7 +33,7 @@ "@newrelic/winston-enricher": "^4.0.0", "@sentry/node": "^7.3.0", "@standardnotes/analytics": "workspace:*", - "@standardnotes/api": "^1.17.2", + "@standardnotes/api": "^1.19.0", "@standardnotes/common": "workspace:*", "@standardnotes/domain-events": "workspace:*", "@standardnotes/domain-events-infra": "workspace:*", @@ -49,7 +49,7 @@ "axios": "^0.27.2", "bcryptjs": "2.4.3", "cors": "2.8.5", - "dayjs": "^1.11.3", + "dayjs": "^1.11.6", "dotenv": "^16.0.1", "express": "^4.18.1", "inversify": "^6.0.1", diff --git a/packages/auth/src/Bootstrap/Container.ts b/packages/auth/src/Bootstrap/Container.ts index 3c7261543..50ddc4d9a 100644 --- a/packages/auth/src/Bootstrap/Container.ts +++ b/packages/auth/src/Bootstrap/Container.ts @@ -203,6 +203,8 @@ import { PaymentSuccessEventHandler } from '../Domain/Handler/PaymentSuccessEven import { RefundProcessedEventHandler } from '../Domain/Handler/RefundProcessedEventHandler' import { SubscriptionInvitesController } from '../Controller/SubscriptionInvitesController' import { CreateCrossServiceToken } from '../Domain/UseCase/CreateCrossServiceToken/CreateCrossServiceToken' +import { ProcessUserRequest } from '../Domain/UseCase/ProcessUserRequest/ProcessUserRequest' +import { UserRequestsController } from '../Controller/UserRequestsController' // eslint-disable-next-line @typescript-eslint/no-var-requires const newrelicFormatter = require('@newrelic/winston-enricher') @@ -266,6 +268,7 @@ export class ContainerConfigLoader { // Controller container.bind(TYPES.AuthController).to(AuthController) container.bind(TYPES.SubscriptionInvitesController).to(SubscriptionInvitesController) + container.bind(TYPES.UserRequestsController).to(UserRequestsController) // Repositories container.bind(TYPES.SessionRepository).to(MySQLSessionRepository) @@ -438,6 +441,7 @@ export class ContainerConfigLoader { container.bind(TYPES.GetUserAnalyticsId).to(GetUserAnalyticsId) container.bind(TYPES.VerifyPredicate).to(VerifyPredicate) container.bind(TYPES.CreateCrossServiceToken).to(CreateCrossServiceToken) + container.bind(TYPES.ProcessUserRequest).to(ProcessUserRequest) // Handlers container.bind(TYPES.UserRegisteredEventHandler).to(UserRegisteredEventHandler) diff --git a/packages/auth/src/Bootstrap/Types.ts b/packages/auth/src/Bootstrap/Types.ts index 00c295aef..5d9159369 100644 --- a/packages/auth/src/Bootstrap/Types.ts +++ b/packages/auth/src/Bootstrap/Types.ts @@ -6,6 +6,7 @@ const TYPES = { // Controller AuthController: Symbol.for('AuthController'), SubscriptionInvitesController: Symbol.for('SubscriptionInvitesController'), + UserRequestsController: Symbol.for('UserRequestsController'), // Repositories UserRepository: Symbol.for('UserRepository'), SessionRepository: Symbol.for('SessionRepository'), @@ -121,6 +122,7 @@ const TYPES = { GetUserAnalyticsId: Symbol.for('GetUserAnalyticsId'), VerifyPredicate: Symbol.for('VerifyPredicate'), CreateCrossServiceToken: Symbol.for('CreateCrossServiceToken'), + ProcessUserRequest: Symbol.for('ProcessUserRequest'), // Handlers UserRegisteredEventHandler: Symbol.for('UserRegisteredEventHandler'), AccountDeletionRequestedEventHandler: Symbol.for('AccountDeletionRequestedEventHandler'), diff --git a/packages/auth/src/Controller/AuthController.spec.ts b/packages/auth/src/Controller/AuthController.spec.ts index 1229ced08..ab0c272c5 100644 --- a/packages/auth/src/Controller/AuthController.spec.ts +++ b/packages/auth/src/Controller/AuthController.spec.ts @@ -109,4 +109,15 @@ describe('AuthController', () => { expect(response.status).toEqual(400) }) + + it('should throw error on the delete user method as it is still a part of the payments server', async () => { + let caughtError = null + try { + await createController().deleteAccount({ userUuid: '1-2-3' }) + } catch (error) { + caughtError = error + } + + expect(caughtError).not.toBeNull() + }) }) diff --git a/packages/auth/src/Controller/AuthController.ts b/packages/auth/src/Controller/AuthController.ts index 11cd79a82..e8e3e0c43 100644 --- a/packages/auth/src/Controller/AuthController.ts +++ b/packages/auth/src/Controller/AuthController.ts @@ -2,6 +2,7 @@ import { inject, injectable } from 'inversify' import { DomainEventPublisherInterface } from '@standardnotes/domain-events' import { HttpStatusCode, + UserDeletionResponse, UserRegistrationRequestParams, UserRegistrationResponse, UserServerInterface, @@ -12,6 +13,7 @@ import { ClearLoginAttempts } from '../Domain/UseCase/ClearLoginAttempts' import { Register } from '../Domain/UseCase/Register' import { DomainEventFactoryInterface } from '../Domain/Event/DomainEventFactoryInterface' import { ProtocolVersion } from '@standardnotes/common' +import { UserDeletionRequestParams } from '@standardnotes/api/dist/Domain/Request/User/UserDeletionRequestParams' @injectable() export class AuthController implements UserServerInterface { @@ -22,6 +24,10 @@ export class AuthController implements UserServerInterface { @inject(TYPES.DomainEventFactory) private domainEventFactory: DomainEventFactoryInterface, ) {} + async deleteAccount(_params: UserDeletionRequestParams): Promise { + throw new Error('This method is implemented on the payments server.') + } + async register(params: UserRegistrationRequestParams): Promise { if (!params.email || !params.password) { return { diff --git a/packages/auth/src/Controller/UserRequestsController.spec.ts b/packages/auth/src/Controller/UserRequestsController.spec.ts new file mode 100644 index 000000000..562db4761 --- /dev/null +++ b/packages/auth/src/Controller/UserRequestsController.spec.ts @@ -0,0 +1,43 @@ +import 'reflect-metadata' + +import { UserRequestType } from '@standardnotes/common' + +import { ProcessUserRequest } from '../Domain/UseCase/ProcessUserRequest/ProcessUserRequest' + +import { UserRequestsController } from './UserRequestsController' + +describe('UserRequestsController', () => { + let processUserRequest: ProcessUserRequest + + const createController = () => new UserRequestsController(processUserRequest) + + beforeEach(() => { + processUserRequest = {} as jest.Mocked + processUserRequest.execute = jest.fn().mockReturnValue({ success: true }) + }) + + it('should process user request', async () => { + expect( + await createController().submitUserRequest({ + userUuid: '1-2-3', + requestType: UserRequestType.ExitDiscount, + }), + ).toEqual({ + status: 200, + data: { success: true }, + }) + }) + + it('should not process user request', async () => { + processUserRequest.execute = jest.fn().mockReturnValue({ success: false }) + expect( + await createController().submitUserRequest({ + userUuid: '1-2-3', + requestType: UserRequestType.ExitDiscount, + }), + ).toEqual({ + status: 400, + data: { success: false }, + }) + }) +}) diff --git a/packages/auth/src/Controller/UserRequestsController.ts b/packages/auth/src/Controller/UserRequestsController.ts new file mode 100644 index 000000000..f17747b5e --- /dev/null +++ b/packages/auth/src/Controller/UserRequestsController.ts @@ -0,0 +1,34 @@ +import { + HttpStatusCode, + UserRequestRequestParams, + UserRequestResponse, + UserRequestServerInterface, +} from '@standardnotes/api' +import { inject, injectable } from 'inversify' +import TYPES from '../Bootstrap/Types' +import { ProcessUserRequest } from '../Domain/UseCase/ProcessUserRequest/ProcessUserRequest' + +@injectable() +export class UserRequestsController implements UserRequestServerInterface { + constructor(@inject(TYPES.ProcessUserRequest) private processUserRequest: ProcessUserRequest) {} + + async submitUserRequest(params: UserRequestRequestParams): Promise { + const result = await this.processUserRequest.execute({ + requestType: params.requestType, + userEmail: params.userEmail as string, + userUuid: params.userUuid, + }) + + if (!result.success) { + return { + status: HttpStatusCode.BadRequest, + data: result, + } + } + + return { + status: HttpStatusCode.Success, + data: result, + } + } +} diff --git a/packages/auth/src/Domain/Event/DomainEventFactory.spec.ts b/packages/auth/src/Domain/Event/DomainEventFactory.spec.ts index 9c895be86..884e3785f 100644 --- a/packages/auth/src/Domain/Event/DomainEventFactory.spec.ts +++ b/packages/auth/src/Domain/Event/DomainEventFactory.spec.ts @@ -18,6 +18,29 @@ describe('DomainEventFactory', () => { timer.getUTCDate = jest.fn().mockReturnValue(new Date(1)) }) + it('should create a EXIT_DISCOUNT_APPLY_REQUESTED event', () => { + expect( + createFactory().createExitDiscountApplyRequestedEvent({ + userEmail: 'test@test.te', + discountCode: 'exit-20', + }), + ).toEqual({ + createdAt: expect.any(Date), + meta: { + correlation: { + userIdentifier: 'test@test.te', + userIdentifierType: 'email', + }, + origin: 'auth', + }, + payload: { + userEmail: 'test@test.te', + discountCode: 'exit-20', + }, + type: 'EXIT_DISCOUNT_APPLY_REQUESTED', + }) + }) + it('should create a WEB_SOCKET_MESSAGE_REQUESTED event', () => { expect( createFactory().createWebSocketMessageRequestedEvent({ diff --git a/packages/auth/src/Domain/Event/DomainEventFactory.ts b/packages/auth/src/Domain/Event/DomainEventFactory.ts index b18e68ebf..329eb26fd 100644 --- a/packages/auth/src/Domain/Event/DomainEventFactory.ts +++ b/packages/auth/src/Domain/Event/DomainEventFactory.ts @@ -16,6 +16,7 @@ import { DomainEventService, EmailMessageRequestedEvent, WebSocketMessageRequestedEvent, + ExitDiscountApplyRequestedEvent, } from '@standardnotes/domain-events' import { Predicate, PredicateVerificationResult } from '@standardnotes/predicates' import { TimerInterface } from '@standardnotes/time' @@ -28,6 +29,24 @@ import { DomainEventFactoryInterface } from './DomainEventFactoryInterface' export class DomainEventFactory implements DomainEventFactoryInterface { constructor(@inject(TYPES.Timer) private timer: TimerInterface) {} + createExitDiscountApplyRequestedEvent(dto: { + userEmail: string + discountCode: string + }): ExitDiscountApplyRequestedEvent { + return { + type: 'EXIT_DISCOUNT_APPLY_REQUESTED', + createdAt: this.timer.getUTCDate(), + meta: { + correlation: { + userIdentifier: dto.userEmail, + userIdentifierType: 'email', + }, + origin: DomainEventService.Auth, + }, + payload: dto, + } + } + createWebSocketMessageRequestedEvent(dto: { userUuid: Uuid; message: JSONString }): WebSocketMessageRequestedEvent { return { type: 'WEB_SOCKET_MESSAGE_REQUESTED', diff --git a/packages/auth/src/Domain/Event/DomainEventFactoryInterface.ts b/packages/auth/src/Domain/Event/DomainEventFactoryInterface.ts index b103ecc0d..0d81478d2 100644 --- a/packages/auth/src/Domain/Event/DomainEventFactoryInterface.ts +++ b/packages/auth/src/Domain/Event/DomainEventFactoryInterface.ts @@ -16,6 +16,7 @@ import { PredicateVerifiedEvent, EmailMessageRequestedEvent, WebSocketMessageRequestedEvent, + ExitDiscountApplyRequestedEvent, } from '@standardnotes/domain-events' import { InviteeIdentifierType } from '../SharedSubscription/InviteeIdentifierType' @@ -83,4 +84,8 @@ export interface DomainEventFactoryInterface { predicate: Predicate predicateVerificationResult: PredicateVerificationResult }): PredicateVerifiedEvent + createExitDiscountApplyRequestedEvent(dto: { + userEmail: string + discountCode: string + }): ExitDiscountApplyRequestedEvent } diff --git a/packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequest.spec.ts b/packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequest.spec.ts new file mode 100644 index 000000000..e5c6d3e12 --- /dev/null +++ b/packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequest.spec.ts @@ -0,0 +1,94 @@ +import 'reflect-metadata' + +import { DomainEventPublisherInterface, ExitDiscountApplyRequestedEvent } from '@standardnotes/domain-events' +import { UserRequestType } from '@standardnotes/common' + +import { DomainEventFactoryInterface } from '../../Event/DomainEventFactoryInterface' +import { UserSubscription } from '../../Subscription/UserSubscription' +import { UserSubscriptionRepositoryInterface } from '../../Subscription/UserSubscriptionRepositoryInterface' + +import { ProcessUserRequest } from './ProcessUserRequest' + +describe('ProcessUserRequest', () => { + let userSubscriptionRepository: UserSubscriptionRepositoryInterface + let domainEventFactory: DomainEventFactoryInterface + let domainEventPublisher: DomainEventPublisherInterface + + const createUseCase = () => + new ProcessUserRequest(userSubscriptionRepository, domainEventFactory, domainEventPublisher) + + beforeEach(() => { + userSubscriptionRepository = {} as jest.Mocked + userSubscriptionRepository.findOneByUserUuid = jest.fn().mockReturnValue({ + cancelled: true, + } as jest.Mocked) + + domainEventFactory = {} as jest.Mocked + domainEventFactory.createExitDiscountApplyRequestedEvent = jest + .fn() + .mockReturnValue({} as jest.Mocked) + + domainEventPublisher = {} as jest.Mocked + domainEventPublisher.publish = jest.fn() + }) + + it('should not process unsupported requests', async () => { + expect( + await createUseCase().execute({ + userEmail: 'test@test.te', + userUuid: '1-2-3', + requestType: 'foobar' as UserRequestType, + }), + ).toEqual({ + success: false, + }) + + expect(domainEventPublisher.publish).not.toHaveBeenCalled() + }) + + it('should not process uncancelled subscriptions', async () => { + userSubscriptionRepository.findOneByUserUuid = jest.fn().mockReturnValue({} as jest.Mocked) + + expect( + await createUseCase().execute({ + userEmail: 'test@test.te', + userUuid: '1-2-3', + requestType: UserRequestType.ExitDiscount, + }), + ).toEqual({ + success: false, + }) + + expect(domainEventPublisher.publish).not.toHaveBeenCalled() + }) + + it('should not process non existing subscriptions', async () => { + userSubscriptionRepository.findOneByUserUuid = jest.fn().mockReturnValue(null) + + expect( + await createUseCase().execute({ + userEmail: 'test@test.te', + userUuid: '1-2-3', + requestType: UserRequestType.ExitDiscount, + }), + ).toEqual({ + success: false, + }) + + expect(domainEventPublisher.publish).not.toHaveBeenCalled() + }) + + it('should publish an exit discount apply requested event', async () => { + expect( + await createUseCase().execute({ + userEmail: 'test@test.te', + userUuid: '1-2-3', + requestType: UserRequestType.ExitDiscount, + }), + ).toEqual({ + success: true, + }) + + expect(domainEventPublisher.publish).toHaveBeenCalled() + }) +}) diff --git a/packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequest.ts b/packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequest.ts new file mode 100644 index 000000000..1d2acd627 --- /dev/null +++ b/packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequest.ts @@ -0,0 +1,46 @@ +import { DomainEventPublisherInterface } from '@standardnotes/domain-events' +import { inject, injectable } from 'inversify' +import { UserRequestType } from '@standardnotes/common' + +import TYPES from '../../../Bootstrap/Types' +import { DomainEventFactoryInterface } from '../../Event/DomainEventFactoryInterface' +import { UserSubscriptionRepositoryInterface } from '../../Subscription/UserSubscriptionRepositoryInterface' + +import { UseCaseInterface } from '../UseCaseInterface' +import { ProcessUserRequestDTO } from './ProcessUserRequestDTO' +import { ProcessUserRequestResponse } from './ProcessUserRequestResponse' + +@injectable() +export class ProcessUserRequest implements UseCaseInterface { + constructor( + @inject(TYPES.UserSubscriptionRepository) private userSubscriptionRepository: UserSubscriptionRepositoryInterface, + @inject(TYPES.DomainEventFactory) private domainEventFactory: DomainEventFactoryInterface, + @inject(TYPES.DomainEventPublisher) private domainEventPublisher: DomainEventPublisherInterface, + ) {} + + async execute(dto: ProcessUserRequestDTO): Promise { + if (dto.requestType !== UserRequestType.ExitDiscount) { + return { + success: false, + } + } + + const subscription = await this.userSubscriptionRepository.findOneByUserUuid(dto.userUuid) + if (subscription === null || !subscription.cancelled) { + return { + success: false, + } + } + + await this.domainEventPublisher.publish( + this.domainEventFactory.createExitDiscountApplyRequestedEvent({ + userEmail: dto.userEmail, + discountCode: 'exit-20', + }), + ) + + return { + success: true, + } + } +} diff --git a/packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequestDTO.ts b/packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequestDTO.ts new file mode 100644 index 000000000..2abd911f1 --- /dev/null +++ b/packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequestDTO.ts @@ -0,0 +1,7 @@ +import { UserRequestType, Uuid } from '@standardnotes/common' + +export type ProcessUserRequestDTO = { + userUuid: Uuid + userEmail: string + requestType: UserRequestType +} diff --git a/packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequestResponse.ts b/packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequestResponse.ts new file mode 100644 index 000000000..48c16da5e --- /dev/null +++ b/packages/auth/src/Domain/UseCase/ProcessUserRequest/ProcessUserRequestResponse.ts @@ -0,0 +1,3 @@ +export type ProcessUserRequestResponse = { + success: boolean +} diff --git a/packages/auth/src/Infra/InversifyExpressUtils/InversifyExpressUserRequestsController.ts b/packages/auth/src/Infra/InversifyExpressUtils/InversifyExpressUserRequestsController.ts new file mode 100644 index 000000000..90c143f27 --- /dev/null +++ b/packages/auth/src/Infra/InversifyExpressUtils/InversifyExpressUserRequestsController.ts @@ -0,0 +1,24 @@ +import { Request, Response } from 'express' +import { inject } from 'inversify' +import { controller, BaseHttpController, results, httpPost } from 'inversify-express-utils' + +import TYPES from '../../Bootstrap/Types' +import { UserRequestsController } from '../../Controller/UserRequestsController' + +@controller('/users/:userUuid/requests') +export class InversifyExpressAuthController extends BaseHttpController { + constructor(@inject(TYPES.UserRequestsController) private userRequestsController: UserRequestsController) { + super() + } + + @httpPost('/', TYPES.ApiGatewayAuthMiddleware) + async submitRequest(request: Request, response: Response): Promise { + const result = await this.userRequestsController.submitUserRequest({ + requestType: request.body.requestType, + userUuid: response.locals.user.uuid, + userEmail: response.locals.user.email, + }) + + return this.json(result.data, result.status) + } +} diff --git a/packages/files/package.json b/packages/files/package.json index 44e690bdb..7b92fbf85 100644 --- a/packages/files/package.json +++ b/packages/files/package.json @@ -36,7 +36,7 @@ "aws-sdk": "^2.1158.0", "connect-busboy": "^1.0.0", "cors": "^2.8.5", - "dayjs": "^1.11.3", + "dayjs": "^1.11.6", "dotenv": "^16.0.1", "express": "^4.18.1", "express-winston": "^4.0.5", diff --git a/packages/scheduler/package.json b/packages/scheduler/package.json index b392e2a40..c48b63fa1 100644 --- a/packages/scheduler/package.json +++ b/packages/scheduler/package.json @@ -32,7 +32,7 @@ "@standardnotes/predicates": "workspace:*", "@standardnotes/time": "workspace:*", "aws-sdk": "^2.1158.0", - "dayjs": "^1.11.3", + "dayjs": "^1.11.6", "dotenv": "^16.0.1", "inversify": "^6.0.1", "ioredis": "^5.2.0", diff --git a/packages/time/package.json b/packages/time/package.json index 9b9c8bd51..952fbb133 100644 --- a/packages/time/package.json +++ b/packages/time/package.json @@ -23,7 +23,7 @@ "test": "jest spec --coverage" }, "dependencies": { - "dayjs": "^1.10.8", + "dayjs": "^1.11.6", "microtime": "^3.1.0", "reflect-metadata": "^0.1.13" }, diff --git a/packages/time/src/Domain/Time/Timer.spec.ts b/packages/time/src/Domain/Time/Timer.spec.ts index 8bba495d3..d11f0382d 100644 --- a/packages/time/src/Domain/Time/Timer.spec.ts +++ b/packages/time/src/Domain/Time/Timer.spec.ts @@ -35,9 +35,9 @@ describe('Timer', () => { }) it('should calculate days difference between now and a given date', () => { - const dateNDaysAgo = createTimer().getUTCDateNDaysAgo(4) + const dateNDaysAgo = createTimer().getUTCDateNDaysAgo(3) - expect(createTimer().dateWasNDaysAgo(dateNDaysAgo)).toEqual(4) + expect(createTimer().dateWasNDaysAgo(dateNDaysAgo)).toEqual(3) }) it('should return a utc date n hours ago', () => { diff --git a/packages/websockets/package.json b/packages/websockets/package.json index 85e4b9762..27600831a 100644 --- a/packages/websockets/package.json +++ b/packages/websockets/package.json @@ -24,7 +24,7 @@ "dependencies": { "@newrelic/winston-enricher": "^4.0.0", "@sentry/node": "^7.3.0", - "@standardnotes/api": "^1.17.2", + "@standardnotes/api": "^1.19.0", "@standardnotes/common": "workspace:^", "@standardnotes/domain-events": "workspace:^", "@standardnotes/domain-events-infra": "workspace:^", diff --git a/packages/workspace/package.json b/packages/workspace/package.json index a445b1ae3..6e888020d 100644 --- a/packages/workspace/package.json +++ b/packages/workspace/package.json @@ -24,7 +24,7 @@ "dependencies": { "@newrelic/winston-enricher": "^4.0.0", "@sentry/node": "^7.3.0", - "@standardnotes/api": "^1.17.2", + "@standardnotes/api": "^1.19.0", "@standardnotes/common": "workspace:*", "@standardnotes/domain-events": "workspace:^", "@standardnotes/domain-events-infra": "workspace:^", diff --git a/yarn.lock b/yarn.lock index 85fbe4bd7..491955b18 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1861,18 +1861,18 @@ __metadata: languageName: unknown linkType: soft -"@standardnotes/api@npm:^1.17.2": - version: 1.17.2 - resolution: "@standardnotes/api@npm:1.17.2" +"@standardnotes/api@npm:^1.19.0": + version: 1.19.0 + resolution: "@standardnotes/api@npm:1.19.0" dependencies: - "@standardnotes/common": "npm:^1.39.0" - "@standardnotes/encryption": "npm:1.18.5" - "@standardnotes/models": "npm:1.30.0" - "@standardnotes/responses": "npm:1.11.2" + "@standardnotes/common": "npm:^1.43.0" + "@standardnotes/encryption": "npm:1.19.0" + "@standardnotes/models": "npm:1.33.0" + "@standardnotes/responses": "npm:1.12.0" "@standardnotes/security": "npm:^1.1.0" - "@standardnotes/utils": "npm:1.10.0" + "@standardnotes/utils": "npm:1.11.0" reflect-metadata: "npm:^0.1.13" - checksum: 4f74f52306c27f8bc8b26eb78abb952393b608f16cf18683ec3f7363b64c511786401e59fd57bfc7613c55876aabcb47f256dfcdb0d09b8416ca1901d8562338 + checksum: b28884be401012f9bac25639f240f80179f59c01d03258979fc89793e26d1b4303752ef15c150bd5b76227676b10ce1ff6fea498f92fd03be6918d08eec8097b languageName: node linkType: hard @@ -1883,7 +1883,7 @@ __metadata: "@newrelic/winston-enricher": "npm:^4.0.0" "@sentry/node": "npm:^7.3.0" "@standardnotes/analytics": "workspace:*" - "@standardnotes/api": "npm:^1.17.2" + "@standardnotes/api": "npm:^1.19.0" "@standardnotes/common": "workspace:*" "@standardnotes/domain-events": "workspace:*" "@standardnotes/domain-events-infra": "workspace:*" @@ -1910,7 +1910,7 @@ __metadata: axios: "npm:^0.27.2" bcryptjs: "npm:2.4.3" cors: "npm:2.8.5" - dayjs: "npm:^1.11.3" + dayjs: "npm:^1.11.6" dotenv: "npm:^16.0.1" eslint: "npm:^8.14.0" eslint-plugin-prettier: "npm:^4.0.0" @@ -1945,7 +1945,7 @@ __metadata: languageName: node linkType: hard -"@standardnotes/common@npm:^1.19.1, @standardnotes/common@npm:^1.23.1, @standardnotes/common@npm:^1.39.0, @standardnotes/common@workspace:*, @standardnotes/common@workspace:^, @standardnotes/common@workspace:packages/common": +"@standardnotes/common@npm:^1.19.1, @standardnotes/common@npm:^1.23.1, @standardnotes/common@npm:^1.39.0, @standardnotes/common@npm:^1.43.0, @standardnotes/common@workspace:*, @standardnotes/common@workspace:^, @standardnotes/common@workspace:packages/common": version: 0.0.0-use.local resolution: "@standardnotes/common@workspace:packages/common" dependencies: @@ -2013,17 +2013,17 @@ __metadata: languageName: unknown linkType: soft -"@standardnotes/encryption@npm:1.18.5": - version: 1.18.5 - resolution: "@standardnotes/encryption@npm:1.18.5" +"@standardnotes/encryption@npm:1.19.0": + version: 1.19.0 + resolution: "@standardnotes/encryption@npm:1.19.0" dependencies: - "@standardnotes/common": "npm:^1.39.0" - "@standardnotes/models": "npm:1.30.0" - "@standardnotes/responses": "npm:1.11.2" + "@standardnotes/common": "npm:^1.43.0" + "@standardnotes/models": "npm:1.33.0" + "@standardnotes/responses": "npm:1.12.0" "@standardnotes/sncrypto-common": "npm:1.13.0" - "@standardnotes/utils": "npm:1.10.0" + "@standardnotes/utils": "npm:1.11.0" reflect-metadata: "npm:^0.1.13" - checksum: b02318801254b428d6a9a26f8ab9bf9b47ddf4e538616f928e6b8db6dfa60270e99b9cd350346d7956c923071ac693d6952c5ec195e46f3df1256a9996520a2f + checksum: af7665e97983650978462f65c1ba768f2c03b742497e3256957beb2e0dcf1d8c47f34f8778eb2dd52c0c7345f0b86f701ca64e0b8fd4ea6597b83c5b73ca7f5b languageName: node linkType: hard @@ -2068,15 +2068,15 @@ __metadata: languageName: node linkType: hard -"@standardnotes/features@npm:1.53.2": - version: 1.53.2 - resolution: "@standardnotes/features@npm:1.53.2" +"@standardnotes/features@npm:1.54.0": + version: 1.54.0 + resolution: "@standardnotes/features@npm:1.54.0" dependencies: "@standardnotes/auth": "npm:^3.19.4" - "@standardnotes/common": "npm:^1.39.0" + "@standardnotes/common": "npm:^1.43.0" "@standardnotes/security": "npm:^1.2.0" reflect-metadata: "npm:^0.1.13" - checksum: 820219e3a58fb2b03f3341e9cac2c4a5704b77f1ec8f1ad986aa7ffa92e2ce4bc87c24a1aee98ac80c957a293edf84bef91cff9fce973ab2f108f5ef726db2cc + checksum: 7647e7506e2d863c8a8909644aca157baa9b3b23f0fe260d1786ba8366267571e414ddf5000e1fe109b918d979e97428b1d57afbd457db49efd4219b4c8ff759 languageName: node linkType: hard @@ -2106,7 +2106,7 @@ __metadata: aws-sdk: "npm:^2.1158.0" connect-busboy: "npm:^1.0.0" cors: "npm:^2.8.5" - dayjs: "npm:^1.11.3" + dayjs: "npm:^1.11.6" dotenv: "npm:^16.0.1" eslint: "npm:^8.14.0" eslint-plugin-prettier: "npm:^4.0.0" @@ -2131,17 +2131,17 @@ __metadata: languageName: unknown linkType: soft -"@standardnotes/models@npm:1.30.0": - version: 1.30.0 - resolution: "@standardnotes/models@npm:1.30.0" +"@standardnotes/models@npm:1.33.0": + version: 1.33.0 + resolution: "@standardnotes/models@npm:1.33.0" dependencies: - "@standardnotes/common": "npm:^1.39.0" - "@standardnotes/features": "npm:1.53.2" - "@standardnotes/responses": "npm:1.11.2" - "@standardnotes/utils": "npm:1.10.0" + "@standardnotes/common": "npm:^1.43.0" + "@standardnotes/features": "npm:1.54.0" + "@standardnotes/responses": "npm:1.12.0" + "@standardnotes/utils": "npm:1.11.0" lodash: "npm:^4.17.21" reflect-metadata: "npm:^0.1.13" - checksum: 40c234f92ba0b4c33ba7e8cc604058f3b87086d83dd5642ed5d17faff47dacbf6079bf3912c5eac6f51d0dae13da1ad960746c3cc36a0d37128f3bf6b2ce873d + checksum: 7d45409e4aeef5d4299e1fd12a18e13554023e63652460754313099d11f54130afa4bf8f0de0280ed7a83ff6bb4bc59eb96b28a4f1f617755e969f4672b07b1a languageName: node linkType: hard @@ -2197,15 +2197,15 @@ __metadata: languageName: node linkType: hard -"@standardnotes/responses@npm:1.11.2": - version: 1.11.2 - resolution: "@standardnotes/responses@npm:1.11.2" +"@standardnotes/responses@npm:1.12.0": + version: 1.12.0 + resolution: "@standardnotes/responses@npm:1.12.0" dependencies: - "@standardnotes/common": "npm:^1.39.0" - "@standardnotes/features": "npm:1.53.2" + "@standardnotes/common": "npm:^1.43.0" + "@standardnotes/features": "npm:1.54.0" "@standardnotes/security": "npm:^1.1.0" reflect-metadata: "npm:^0.1.13" - checksum: 2a1ffd142c23866228afe06d1dc6e453515d8bf8ad3da0ca2e24d638835a2f639913d75aa830c24343bed743baeb76c382c2cf70232e75538b5c3803fe8ddf0d + checksum: 15b2e92d57870d881b2923843db6c9506be6f1e49e4522cbc261a8c8933bff2a41b0e82855fd5e8c42f933da9f05408f38e2f1d53b320a61312ee76bac37398c languageName: node linkType: hard @@ -2226,7 +2226,7 @@ __metadata: "@types/node": "npm:^18.0.0" "@typescript-eslint/eslint-plugin": "npm:^5.29.0" aws-sdk: "npm:^2.1158.0" - dayjs: "npm:^1.11.3" + dayjs: "npm:^1.11.6" dotenv: "npm:^16.0.1" eslint: "npm:^8.14.0" eslint-plugin-prettier: "npm:^4.0.0" @@ -2386,7 +2386,7 @@ __metadata: "@types/jest": "npm:^29.1.1" "@types/microtime": "npm:^2.1.0" "@typescript-eslint/eslint-plugin": "npm:^5.30.0" - dayjs: "npm:^1.10.8" + dayjs: "npm:^1.11.6" eslint-plugin-prettier: "npm:^4.2.1" jest: "npm:^29.1.2" microtime: "npm:^3.1.0" @@ -2408,13 +2408,25 @@ __metadata: languageName: node linkType: hard +"@standardnotes/utils@npm:1.11.0": + version: 1.11.0 + resolution: "@standardnotes/utils@npm:1.11.0" + dependencies: + "@standardnotes/common": "npm:^1.43.0" + dompurify: "npm:^2.3.8" + lodash: "npm:^4.17.21" + reflect-metadata: "npm:^0.1.13" + checksum: 9e7d9c12573d9819f8dfa3128d5437e7c6c7cad72e6c65e90456a1dfcfe711fb9fdc91493fb974fa6941a37cbd62a800283d4b04d8a6464250a1681da7ace983 + languageName: node + linkType: hard + "@standardnotes/websockets-server@workspace:packages/websockets": version: 0.0.0-use.local resolution: "@standardnotes/websockets-server@workspace:packages/websockets" dependencies: "@newrelic/winston-enricher": "npm:^4.0.0" "@sentry/node": "npm:^7.3.0" - "@standardnotes/api": "npm:^1.17.2" + "@standardnotes/api": "npm:^1.19.0" "@standardnotes/common": "workspace:^" "@standardnotes/domain-events": "workspace:^" "@standardnotes/domain-events-infra": "workspace:^" @@ -2452,7 +2464,7 @@ __metadata: dependencies: "@newrelic/winston-enricher": "npm:^4.0.0" "@sentry/node": "npm:^7.3.0" - "@standardnotes/api": "npm:^1.17.2" + "@standardnotes/api": "npm:^1.19.0" "@standardnotes/common": "workspace:*" "@standardnotes/domain-events": "workspace:^" "@standardnotes/domain-events-infra": "workspace:^" @@ -4551,10 +4563,10 @@ __metadata: languageName: node linkType: hard -"dayjs@npm:^1.10.8, dayjs@npm:^1.11.3": - version: 1.11.5 - resolution: "dayjs@npm:1.11.5" - checksum: ea78d43de0ff67d65f54cd8c927908ee72421f4d73ce5aa19060e20f26b1940db2980b273427eb1813434fdb2df6731e2ac609d97e89e665d29e7b638f762894 +"dayjs@npm:^1.11.6": + version: 1.11.6 + resolution: "dayjs@npm:1.11.6" + checksum: f59ea45f2438056f10955a979124738906d897fb642b6157ead34b675240a79a1424655f691a35af810248575506459bf65eadd7d51625cdc537bf805a92dea6 languageName: node linkType: hard