cca-auth-module 0.1.85 → 0.1.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -697,6 +697,32 @@ var _TwoFactorDisableUseCase = class _TwoFactorDisableUseCase {
697
697
  __name(_TwoFactorDisableUseCase, "TwoFactorDisableUseCase");
698
698
  var TwoFactorDisableUseCase = _TwoFactorDisableUseCase;
699
699
 
700
+ // src/presentation/constants/constants.ts
701
+ var HTTP_STATUS = {
702
+ OK: 200,
703
+ CREATED: 201
704
+ };
705
+ var AUTH_STATUS = {
706
+ BASIC_AUTH: "basic_auth",
707
+ NEEDS_SETUP: "needs_setup",
708
+ PENDING_VERIFICATION: "pending_verification",
709
+ FULL_AUTH: "full_auth",
710
+ LOGGED_OUT: "logged_out",
711
+ REGISTERED: "registered",
712
+ TOKEN_REFRESHED: "token_refreshed"
713
+ };
714
+ var MESSAGES = {
715
+ LOGIN_SUCCESS: "Login successful",
716
+ ADMIN_LOGIN_SUCCESS: "Admin login successful",
717
+ LOGOUT_SUCCESS: "Logged out successfully",
718
+ REGISTER_SUCCESS: "User registered successfully",
719
+ TOKEN_REFRESH_SUCCESS: "Token refreshed successfully",
720
+ TWO_FA_SETUP_SUCCESS: "Two-factor authentication setup initiated",
721
+ TWO_FA_ENABLE_SUCCESS: "Two-factor authentication enabled",
722
+ TWO_FA_VERIFY_SUCCESS: "Two-factor authentication verified successfully",
723
+ TWO_FA_DISABLE_SUCCESS: "Two-factor authentication disabled"
724
+ };
725
+
700
726
  // src/presentation/controller/AuthController.ts
701
727
  var _AuthController = class _AuthController {
702
728
  constructor(loginUseCase, adminLoginUseCase, logoutUseCase, registerUseCase, refreshTokenUseCase, twoFactorSetupUseCase, twoFactorEnableUseCase, twoFactorVerifyUseCase, twoFactorDisableUseCase) {
@@ -704,19 +730,23 @@ var _AuthController = class _AuthController {
704
730
  try {
705
731
  const loginDTO = req.body;
706
732
  const result = await this.loginUseCase.execute(loginDTO);
707
- const response = this.createSuccessResponse(
708
- "Login successful",
709
- {
710
- accessToken: result.accessToken,
711
- userId: result.id,
712
- expiresAt: result.expiresAt,
713
- enabled: result.enabled
714
- },
715
- {
716
- status: "success"
717
- }
718
- );
719
- res.status(200).json(response);
733
+ const twoFactorEnabled = result.enabled ?? false;
734
+ const loginData = {
735
+ accessToken: result.accessToken,
736
+ userId: result.id,
737
+ expiresAt: result.expiresAt,
738
+ enabled: twoFactorEnabled,
739
+ auth: this.createAuthData(
740
+ true,
741
+ // hasAccessToken
742
+ twoFactorEnabled,
743
+ // enable (2FA enabled status)
744
+ twoFactorEnabled ? AUTH_STATUS.PENDING_VERIFICATION : AUTH_STATUS.BASIC_AUTH,
745
+ false
746
+ // verified - always false for basic login
747
+ )
748
+ };
749
+ this.sendResponse(res, HTTP_STATUS.OK, MESSAGES.LOGIN_SUCCESS, loginData);
720
750
  } catch (error) {
721
751
  next(error);
722
752
  }
@@ -728,11 +758,20 @@ var _AuthController = class _AuthController {
728
758
  throw new ForbiddenError("Admin password is required");
729
759
  }
730
760
  const result = await this.adminLoginUseCase.execute(loginDTO, adminPassword);
731
- const response = this.createSuccessResponse(
732
- "Admin login successful",
733
- result
734
- );
735
- res.status(201).json(response);
761
+ const adminLoginData = {
762
+ message: result,
763
+ // Assuming result is a string message
764
+ auth: this.createAuthData(
765
+ true,
766
+ // hasAccessToken
767
+ false,
768
+ // enable - assuming 2FA not enabled for admin login
769
+ AUTH_STATUS.BASIC_AUTH,
770
+ false
771
+ // verified
772
+ )
773
+ };
774
+ this.sendResponse(res, HTTP_STATUS.CREATED, MESSAGES.ADMIN_LOGIN_SUCCESS, adminLoginData);
736
775
  } catch (error) {
737
776
  next(error);
738
777
  }
@@ -740,8 +779,18 @@ var _AuthController = class _AuthController {
740
779
  this.logout = /* @__PURE__ */ __name(async (req, res, next) => {
741
780
  try {
742
781
  await this.logoutUseCase.execute(req.body.id);
743
- const response = this.createSuccessResponse("Logged out successfully");
744
- res.status(200).json(response);
782
+ const logoutData = {
783
+ auth: this.createAuthData(
784
+ false,
785
+ // hasAccessToken - no token after logout
786
+ false,
787
+ // enable - 2FA status irrelevant after logout
788
+ AUTH_STATUS.LOGGED_OUT,
789
+ false
790
+ // verified - false after logout
791
+ )
792
+ };
793
+ this.sendResponse(res, HTTP_STATUS.OK, MESSAGES.LOGOUT_SUCCESS, logoutData);
745
794
  } catch (error) {
746
795
  next(error);
747
796
  }
@@ -750,12 +799,24 @@ var _AuthController = class _AuthController {
750
799
  try {
751
800
  const { email, name, password, role, adminPassword } = req.body;
752
801
  await this.registerUseCase.execute(email, name, password, role, adminPassword);
753
- const response = this.createSuccessResponse(
754
- "User registered successfully",
755
- null,
756
- { status: "success" }
802
+ const registerData = {
803
+ auth: this.createAuthData(
804
+ false,
805
+ // hasAccessToken - no token after registration
806
+ false,
807
+ // enable - 2FA not enabled for new users
808
+ AUTH_STATUS.REGISTERED,
809
+ false
810
+ // verified - false after registration
811
+ )
812
+ };
813
+ this.sendResponse(
814
+ res,
815
+ HTTP_STATUS.OK,
816
+ MESSAGES.REGISTER_SUCCESS,
817
+ registerData,
818
+ { status: true }
757
819
  );
758
- res.status(200).json(response);
759
820
  } catch (error) {
760
821
  next(error);
761
822
  }
@@ -764,11 +825,20 @@ var _AuthController = class _AuthController {
764
825
  try {
765
826
  const { refreshToken } = req.body;
766
827
  const result = await this.refreshTokenUseCase.execute(refreshToken);
767
- const response = this.createSuccessResponse(
768
- "Token refreshed successfully",
769
- result
770
- );
771
- res.json(response);
828
+ if (!result) {
829
+ throw new Error("Failed to refresh token");
830
+ }
831
+ const refreshData = {
832
+ accessToken: result.accessToken,
833
+ refreshToken: result.refreshToken,
834
+ auth: this.createAuthData(
835
+ true,
836
+ false,
837
+ AUTH_STATUS.BASIC_AUTH,
838
+ false
839
+ )
840
+ };
841
+ this.sendResponse(res, HTTP_STATUS.OK, MESSAGES.TOKEN_REFRESH_SUCCESS, refreshData);
772
842
  } catch (error) {
773
843
  next(error);
774
844
  }
@@ -779,18 +849,15 @@ var _AuthController = class _AuthController {
779
849
  throw new ForbiddenError("User authentication required");
780
850
  }
781
851
  const result = await this.twoFactorSetupUseCase.execute(req.auth.id);
782
- const response = this.createSuccessResponse(
783
- "Two-factor authentication setup initiated",
784
- {
785
- qrCode: result.qrCodeUrl,
786
- auth: this.createAuthData(true, false, "needs_setup")
787
- },
788
- {
789
- nextStep: "Scan the QR code and enter your first code to verify",
790
- redirectTo: "/2fa-setup"
791
- }
792
- );
793
- res.status(200).json(response);
852
+ const setupData = {
853
+ qrCode: result.qrCodeUrl,
854
+ auth: this.createAuthData(true, false, AUTH_STATUS.NEEDS_SETUP)
855
+ };
856
+ const meta = {
857
+ nextStep: "Scan the QR code and enter your first code to verify",
858
+ redirectTo: "/2fa-enable"
859
+ };
860
+ this.sendResponse(res, HTTP_STATUS.OK, MESSAGES.TWO_FA_SETUP_SUCCESS, setupData, meta);
794
861
  } catch (error) {
795
862
  next(error);
796
863
  }
@@ -799,19 +866,16 @@ var _AuthController = class _AuthController {
799
866
  try {
800
867
  const dto = { ...req.body, userId: req.auth?.id };
801
868
  await this.twoFactorEnableUseCase.execute(dto);
802
- const response = this.createSuccessResponse(
803
- "Two-factor authentication enabled",
804
- {
805
- isEnabled: true,
806
- enabledAt: (/* @__PURE__ */ new Date()).toISOString(),
807
- auth: this.createAuthData(true, true, "pending_verification")
808
- },
809
- {
810
- nextStep: "Proceed to verify with a valid 2FA token",
811
- redirectTo: "/verify-2fa"
812
- }
813
- );
814
- res.status(200).json(response);
869
+ const enableData = {
870
+ isEnabled: true,
871
+ enabledAt: (/* @__PURE__ */ new Date()).toISOString(),
872
+ auth: this.createAuthData(true, true, AUTH_STATUS.PENDING_VERIFICATION)
873
+ };
874
+ const meta = {
875
+ nextStep: "Proceed to verify with a valid 2FA token",
876
+ redirectTo: "/verify-2fa"
877
+ };
878
+ this.sendResponse(res, HTTP_STATUS.OK, MESSAGES.TWO_FA_ENABLE_SUCCESS, enableData, meta);
815
879
  } catch (error) {
816
880
  next(error);
817
881
  }
@@ -820,25 +884,22 @@ var _AuthController = class _AuthController {
820
884
  try {
821
885
  const dto = req.body;
822
886
  const result = await this.twoFactorVerifyUseCase.execute(dto);
823
- const response = this.createSuccessResponse(
824
- "Two-factor authentication verified successfully",
825
- {
826
- token: result?.token,
827
- refreshToken: result?.refreshToken,
828
- user: {
829
- id: result?.data?.id,
830
- email: result?.data?.email,
831
- name: result?.data?.name,
832
- role: result?.data?.role
833
- },
834
- auth: this.createAuthData(true, true, "full_auth", true)
887
+ const verifyData = {
888
+ token: result?.token,
889
+ refreshToken: result?.refreshToken,
890
+ user: {
891
+ id: result?.data?.id,
892
+ email: result?.data?.email,
893
+ name: result?.data?.name,
894
+ role: result?.data?.role
835
895
  },
836
- {
837
- recommendation: "You're fully authenticated",
838
- redirectTo: "/"
839
- }
840
- );
841
- res.status(200).json(response);
896
+ auth: this.createAuthData(true, true, AUTH_STATUS.FULL_AUTH, true)
897
+ };
898
+ const meta = {
899
+ recommendation: "You're fully authenticated",
900
+ redirectTo: "/"
901
+ };
902
+ this.sendResponse(res, HTTP_STATUS.OK, MESSAGES.TWO_FA_VERIFY_SUCCESS, verifyData, meta);
842
903
  } catch (error) {
843
904
  next(error);
844
905
  }
@@ -848,18 +909,15 @@ var _AuthController = class _AuthController {
848
909
  const userId = req.auth.id;
849
910
  const dto = req.body;
850
911
  await this.twoFactorDisableUseCase.execute(userId, dto);
851
- const response = this.createSuccessResponse(
852
- "Two-factor authentication disabled",
853
- {
854
- disabledAt: (/* @__PURE__ */ new Date()).toISOString(),
855
- auth: this.createAuthData(true, false, "basic_auth", false)
856
- },
857
- {
858
- securityNote: "Account now relies only on password. Re-enable 2FA for better security.",
859
- redirectTo: "/login"
860
- }
861
- );
862
- res.status(200).json(response);
912
+ const disableData = {
913
+ disabledAt: (/* @__PURE__ */ new Date()).toISOString(),
914
+ auth: this.createAuthData(true, false, AUTH_STATUS.BASIC_AUTH, false)
915
+ };
916
+ const meta = {
917
+ securityNote: "Account now relies only on password. Re-enable 2FA for better security.",
918
+ redirectTo: "/login"
919
+ };
920
+ this.sendResponse(res, HTTP_STATUS.OK, MESSAGES.TWO_FA_DISABLE_SUCCESS, disableData, meta);
863
921
  } catch (error) {
864
922
  next(error);
865
923
  }
@@ -874,7 +932,7 @@ var _AuthController = class _AuthController {
874
932
  this.twoFactorVerifyUseCase = twoFactorVerifyUseCase;
875
933
  this.twoFactorDisableUseCase = twoFactorDisableUseCase;
876
934
  }
877
- createSuccessResponse(message, data, meta) {
935
+ createResponse(message, data, meta) {
878
936
  return {
879
937
  success: true,
880
938
  message,
@@ -893,6 +951,10 @@ var _AuthController = class _AuthController {
893
951
  ...verified !== void 0 && { verified }
894
952
  };
895
953
  }
954
+ sendResponse(res, statusCode, message, data, meta) {
955
+ const response = this.createResponse(message, data, meta);
956
+ res.status(statusCode).json(response);
957
+ }
896
958
  };
897
959
  __name(_AuthController, "AuthController");
898
960
  var AuthController = _AuthController;