2025-05-02 21:43:51 +00:00
|
|
|
import { EmailAddress } from "@/core/common/domain";
|
2025-05-09 10:45:32 +00:00
|
|
|
import { Result } from "@repo/rdx-utils";
|
2025-02-15 21:30:12 +00:00
|
|
|
import {
|
|
|
|
|
AuthenticatedUser,
|
2025-02-16 19:30:20 +00:00
|
|
|
IJWTPayload,
|
2025-02-15 21:30:12 +00:00
|
|
|
LoginData,
|
|
|
|
|
LogoutData,
|
|
|
|
|
RegisterData,
|
|
|
|
|
TabContext,
|
|
|
|
|
Token,
|
|
|
|
|
} from "..";
|
|
|
|
|
|
|
|
|
|
export interface IAuthService {
|
|
|
|
|
generateAccessToken(payload: IJWTPayload): Result<Token, Error>;
|
|
|
|
|
generateRefreshToken(payload: IJWTPayload): Result<Token, Error>;
|
|
|
|
|
verifyRefreshToken(token: Token): IJWTPayload;
|
|
|
|
|
|
|
|
|
|
registerUser(
|
|
|
|
|
registerData: RegisterData,
|
|
|
|
|
transaction?: any
|
|
|
|
|
): Promise<Result<AuthenticatedUser, Error>>;
|
|
|
|
|
|
|
|
|
|
loginUser(
|
|
|
|
|
loginData: LoginData,
|
|
|
|
|
transaction?: any
|
|
|
|
|
): Promise<
|
|
|
|
|
Result<
|
|
|
|
|
{
|
|
|
|
|
user: AuthenticatedUser;
|
|
|
|
|
tabContext: TabContext;
|
|
|
|
|
tokens: {
|
|
|
|
|
accessToken: Token;
|
|
|
|
|
refreshToken: Token;
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
Error
|
|
|
|
|
>
|
|
|
|
|
>;
|
|
|
|
|
|
|
|
|
|
logoutUser(logoutData: LogoutData, transaction?: any): Promise<Result<void, Error>>;
|
|
|
|
|
getUserByEmail(email: EmailAddress, transaction?: any): Promise<Result<AuthenticatedUser, Error>>;
|
|
|
|
|
}
|