chore: authorization module name changed and backend type and request functions added
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { CssBaseline } from '@mui/material';
|
||||
import './App.css';
|
||||
import { LanguageManager } from './components/LanguageManager';
|
||||
import { AuthenticationPage } from './features/authentication/routes/AuthenticationPage';
|
||||
import { AuthenticationPage } from './features/authorization/routes/AuthenticationPage';
|
||||
|
||||
function App() {
|
||||
return (
|
||||
|
||||
96
src/features/authorization/api/authorizationAPI.ts
Normal file
96
src/features/authorization/api/authorizationAPI.ts
Normal file
@@ -0,0 +1,96 @@
|
||||
import type { ApiResponse } from '@/types/apiResponse';
|
||||
import type { FetchPromise } from '@/types/fetchPromise';
|
||||
import type {
|
||||
ConfirmEmailOtpRequest,
|
||||
ConfirmForgetPassCodeRequest,
|
||||
ConfirmOtpResponse,
|
||||
ConfirmSmsOtpRequest,
|
||||
GetUserStatusByPhoneNumberOrEmailRequest,
|
||||
GetUserStatusByPhoneNumberOrEmailResponse,
|
||||
LoginOrSignUpWithGoogleRequest,
|
||||
LoginOrSignUpWithGoogleResponse,
|
||||
LoginRequest,
|
||||
LoginResponse,
|
||||
ResetPasswordRequest,
|
||||
ResetPasswordResponse,
|
||||
SendEmailOtpRequest,
|
||||
SendForgetPassCodeRequest,
|
||||
SendSmsOtpRequest,
|
||||
} from '../types/userTypes';
|
||||
|
||||
const API_URL = 'https://account.business-harmony.com/api/';
|
||||
|
||||
export const fetchRequest = <T = ApiResponse>(
|
||||
url: string,
|
||||
body: Object | null,
|
||||
): FetchPromise<T> => {
|
||||
return fetch(`${API_URL}/${url}`, {
|
||||
body: JSON.stringify(body),
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
// GetUserStatusByPhoneNumberOrEmail
|
||||
|
||||
export const getUserStatusByPhoneNumberOrEmail = async (
|
||||
body: GetUserStatusByPhoneNumberOrEmailRequest,
|
||||
) => {
|
||||
return fetchRequest<GetUserStatusByPhoneNumberOrEmailResponse>(
|
||||
'User/GetUserStatusByPhoneNumberOrEmail',
|
||||
body,
|
||||
);
|
||||
};
|
||||
|
||||
export const loginOrSignUpWithOtp = async (body: LoginRequest) => {
|
||||
return fetchRequest<LoginResponse>('User/LoginOrSignUpWithOtp', body);
|
||||
};
|
||||
|
||||
export const loginWithPassword = async (body: LoginRequest) => {
|
||||
return fetchRequest<LoginResponse>('User/LoginWithPassword', body);
|
||||
};
|
||||
|
||||
export const sendSmsOtp = async (body: SendSmsOtpRequest) => {
|
||||
return fetchRequest<ApiResponse>('User/SendSmsOtp', body);
|
||||
};
|
||||
|
||||
export const sendEmailOtp = async (body: SendEmailOtpRequest) => {
|
||||
return fetchRequest<ApiResponse>('User/SendEmailOtp', body);
|
||||
};
|
||||
|
||||
export const confirmSmsOtp = async (body: ConfirmSmsOtpRequest) => {
|
||||
return fetchRequest<ConfirmOtpResponse>('User/ConfirmSmsOtp', body);
|
||||
};
|
||||
|
||||
export const confirmEmailOtp = async (body: ConfirmEmailOtpRequest) => {
|
||||
return fetchRequest<ConfirmOtpResponse>('User/ConfirmEmailOtp', body);
|
||||
};
|
||||
|
||||
export const resetPassword = async (body: ResetPasswordRequest) => {
|
||||
return fetchRequest<ResetPasswordResponse>('User/ResetPassword', body);
|
||||
};
|
||||
|
||||
export const sendForgetPassCode = async (body: SendForgetPassCodeRequest) => {
|
||||
return fetchRequest<ApiResponse>('User/SendForgetPassCode', body);
|
||||
};
|
||||
|
||||
export const ConfirmForgetPassCode = async (
|
||||
body: ConfirmForgetPassCodeRequest,
|
||||
) => {
|
||||
return fetchRequest<ConfirmOtpResponse>('User/ConfirmForgetPassCode', body);
|
||||
};
|
||||
|
||||
export const loginOrSignUpWithGoogle = async (
|
||||
body: LoginOrSignUpWithGoogleRequest,
|
||||
) => {
|
||||
return fetchRequest<LoginOrSignUpWithGoogleResponse>(
|
||||
'User/LoginOrSignUpWithGoogle',
|
||||
body,
|
||||
);
|
||||
};
|
||||
|
||||
export const logOut = async () => {
|
||||
return fetchRequest<ApiResponse>('User/LogOut', {});
|
||||
};
|
||||
@@ -1,6 +1,6 @@
|
||||
import React, { useState, type JSX } from 'react';
|
||||
import { LoginRegisterForm } from './LoginRegiserForm';
|
||||
import type { AuthMode, AuthType } from '../../types/auth-types';
|
||||
import type { AuthMode, AuthType } from '../../types/authTypes';
|
||||
import { OtpVerifyForm } from './OtpVerifyForm';
|
||||
import { isNumeric } from '@/utils/regexes/isNumeric';
|
||||
import { CompleteSignUp } from './CompleteSignUp';
|
||||
@@ -10,7 +10,7 @@ import { useRef, useState, type Dispatch } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Google } from 'iconsax-reactjs';
|
||||
import { isNumeric } from '@/utils/regexes/isNumeric';
|
||||
import type { AuthMode, AuthType } from '../../types/auth-types';
|
||||
import type { AuthMode, AuthType } from '../../types/authTypes';
|
||||
import { isEmail } from '@/utils/regexes/isEmail';
|
||||
import parsePhoneNumberFromString from 'libphonenumber-js';
|
||||
import { AuthenticationCard } from '../AuthenticationCard';
|
||||
@@ -2,7 +2,7 @@ import { useTranslation } from 'react-i18next';
|
||||
import { Alert, Box, Button, Snackbar, Stack, Typography } from '@mui/material';
|
||||
import { Edit2 } from 'iconsax-reactjs';
|
||||
import DigitInput from '@/components/components/DigitsInput';
|
||||
import type { AuthMode, AuthType } from '../../types/auth-types';
|
||||
import type { AuthMode, AuthType } from '../../types/authTypes';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { Toast } from '@/components/Toast';
|
||||
import { AuthenticationCard } from '../AuthenticationCard';
|
||||
@@ -1,5 +1,5 @@
|
||||
import React, { useState } from 'react';
|
||||
import type { AuthType } from '../../types/auth-types';
|
||||
import type { AuthType } from '../../types/authTypes';
|
||||
import { ForgettedPasswordInfo } from './ForgettedPasswordInfo';
|
||||
import { ForgetPasswordOtp } from './ForgetPasswordOtp';
|
||||
import { ChangePassword } from './ChangePassword';
|
||||
@@ -2,7 +2,7 @@ import { useTranslation } from 'react-i18next';
|
||||
import { Alert, Box, Button, Snackbar, Stack, Typography } from '@mui/material';
|
||||
import { Edit2 } from 'iconsax-reactjs';
|
||||
import DigitInput from '@/components/components/DigitsInput';
|
||||
import type { AuthMode, AuthType } from '../../types/auth-types';
|
||||
import type { AuthMode, AuthType } from '../../types/authTypes';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { Toast } from '@/components/Toast';
|
||||
import { AuthenticationCard } from '../AuthenticationCard';
|
||||
@@ -10,7 +10,7 @@ import { useRef, useState, type Dispatch } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Google } from 'iconsax-reactjs';
|
||||
import { isNumeric } from '@/utils/regexes/isNumeric';
|
||||
import type { AuthMode, AuthType } from '../../types/auth-types';
|
||||
import type { AuthMode, AuthType } from '../../types/authTypes';
|
||||
import { isEmail } from '@/utils/regexes/isEmail';
|
||||
import parsePhoneNumberFromString from 'libphonenumber-js';
|
||||
import { AuthenticationCard } from '../AuthenticationCard';
|
||||
@@ -17,7 +17,7 @@ export function AuthenticationPage() {
|
||||
}}
|
||||
>
|
||||
<Logo />
|
||||
<ForgetPasswordContainer />
|
||||
<AuthenticationSteps />
|
||||
</FlexBox>
|
||||
);
|
||||
}
|
||||
106
src/features/authorization/types/userTypes.ts
Normal file
106
src/features/authorization/types/userTypes.ts
Normal file
@@ -0,0 +1,106 @@
|
||||
// GetUserStatusByPhoneNumberOrEmail
|
||||
|
||||
import type { ApiResponse } from '@/types/apiResponse';
|
||||
import type { GUID } from '@/types/commonTypes';
|
||||
|
||||
export interface GetUserStatusByPhoneNumberOrEmailRequest {
|
||||
phoneNumber?: string;
|
||||
email?: string;
|
||||
}
|
||||
|
||||
export interface GetUserStatusByPhoneNumberOrEmailResponse extends ApiResponse {
|
||||
userStatus: UserStatus;
|
||||
}
|
||||
|
||||
export enum UserStatus {
|
||||
None = 0,
|
||||
Value1 = 1,
|
||||
Value2 = 2,
|
||||
Value3 = 3,
|
||||
}
|
||||
|
||||
// LoginOrSignUpWithOtp
|
||||
|
||||
export interface LoginRequest {
|
||||
otpCode: string;
|
||||
phoneNumber?: string;
|
||||
email?: string;
|
||||
returnUrl: string;
|
||||
}
|
||||
|
||||
export interface LoginResponse extends ApiResponse {
|
||||
returnUrl: string;
|
||||
userId: GUID;
|
||||
registeredWithOutPhoneNumber: boolean;
|
||||
completedUserInformation: boolean;
|
||||
}
|
||||
|
||||
// SendSmsOtp
|
||||
|
||||
export interface SendSmsOtpRequest {
|
||||
phoneNumber: string;
|
||||
}
|
||||
|
||||
// SendEmailOtp
|
||||
|
||||
export interface SendEmailOtpRequest {
|
||||
email: string;
|
||||
}
|
||||
|
||||
// ConfirmOtp
|
||||
|
||||
export interface ConfirmEmailOtpRequest {
|
||||
email: string;
|
||||
otpCode: string;
|
||||
}
|
||||
|
||||
export interface ConfirmSmsOtpRequest {
|
||||
phoneNumber: string;
|
||||
otpCode: string;
|
||||
}
|
||||
|
||||
export interface ConfirmOtpResponse extends ApiResponse {
|
||||
confirm: boolean;
|
||||
}
|
||||
|
||||
// ResetPassword
|
||||
|
||||
export interface ResetPasswordRequest {
|
||||
email?: string;
|
||||
phoneNumber?: string;
|
||||
newPassword: string;
|
||||
confirmNewPassword: string;
|
||||
}
|
||||
|
||||
export interface ResetPasswordResponse extends ApiResponse {
|
||||
passwordChanged: boolean;
|
||||
}
|
||||
|
||||
// SendForgetPassCode
|
||||
|
||||
export interface SendForgetPassCodeRequest {
|
||||
email?: string;
|
||||
phoneNumber?: string;
|
||||
}
|
||||
|
||||
// ConfirmForgetPassCode
|
||||
|
||||
export interface ConfirmForgetPassCodeRequest {
|
||||
email: string;
|
||||
phoneNumber: string;
|
||||
code: string;
|
||||
}
|
||||
|
||||
// LoginOrSignUpWithGoogle
|
||||
|
||||
export interface LoginOrSignUpWithGoogleRequest {
|
||||
idToken: string;
|
||||
returnUrl: string;
|
||||
}
|
||||
|
||||
export interface LoginOrSignUpWithGoogleResponse extends ApiResponse {
|
||||
userId: GUID;
|
||||
registeredWithOutPhoneNumber: boolean;
|
||||
completedUserInformation: boolean;
|
||||
returnUrl: string;
|
||||
}
|
||||
13
src/types/apiResponse.ts
Normal file
13
src/types/apiResponse.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
export interface ApiResponse {
|
||||
success: boolean;
|
||||
errorCode: number;
|
||||
message: string;
|
||||
validations: ApiResponseValidation[];
|
||||
}
|
||||
|
||||
export interface ApiResponseValidation {
|
||||
message: string;
|
||||
code: number;
|
||||
property: string;
|
||||
severity: number;
|
||||
}
|
||||
1
src/types/commonTypes.ts
Normal file
1
src/types/commonTypes.ts
Normal file
@@ -0,0 +1 @@
|
||||
export type GUID = `${string}-${string}-${string}-${string}-${string}`;
|
||||
5
src/types/fetchPromise.ts
Normal file
5
src/types/fetchPromise.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export type FetchPromise<T = ''> = Promise<FetchResponse<T>>;
|
||||
|
||||
export interface FetchResponse<T> extends Response {
|
||||
json(): Promise<T>;
|
||||
}
|
||||
Reference in New Issue
Block a user