UNPKG

@point3/logto-module

Version:

포인트3 내부 logto Authentication 모듈입니다

152 lines (139 loc) 4.11 kB
import { axiosAdapter, p3Values } from 'point3-common-tool'; /** * LogtoUserAlreadyExistsError * * 사용자 생성 시 이미 동일한 사용자가 존재할 경우 발생하는 에러입니다. * 사용자 중복 체크 및 예외 처리에 사용됩니다. */ export class LogtoUserAlreadyExistsError extends Error { constructor(message: string) { super(message); this.name = 'UserAlreadyExistsError'; } } /** * LogtoPasswordAlgorithm * * Logto에서 지원하는 비밀번호 해시 알고리즘 Enum입니다. * - Argon2i, Argon2id, Argon2d: Argon2 계열(권장) * - SHA1, Bcrypt: 기타 호환 알고리즘 * 기본값은 Argon2i 입니다. */ export enum LogtoPasswordAlgorithm { Argon2i = 'Argon2i', Argon2id = 'Argon2id', Argon2d = 'Argon2d', SHA1 = 'SHA1', Bcrypt = 'Bcrypt', } /** * LogtoUser * * Logto 사용자 생성/수정 시 사용하는 타입입니다. * - username: Guid 문자열 * - primaryPhone: 대표 휴대폰번호 * - primaryEmail: 대표 이메일 * - password: 비밀번호(필수) * - passwordAlgorithm: 비밀번호 해시 알고리즘(기본값 Argon2i) * - name: 사용자 이름 * - avatar: 프로필 이미지(선택) * - customData: 추가 사용자 데이터(선택) */ export type LogtoUser = { username: string; // Guid's string value(dash to underscore) primaryPhone?: string; primaryEmail: string; password: string; passwordAlgorithm?: LogtoPasswordAlgorithm; // default: Argon2i name: string; avatar?: string; customData?: Record<string, any>; }; /** * LogtoUserResponse * * 사용자 생성/조회 시 반환되는 타입입니다. * - id: 사용자 고유 ID * - LogtoUser의 모든 필드 포함 */ export type LogtoUserResponse = { id: string } & LogtoUser; /** * LogtoPersonalAccessTokenResponse * * 사용자의 Personal Access Token 목록 조회 시 반환되는 응답 객체입니다. */ export type LogtoPersonalAccessTokenResponse = { tenantId: string; userId: string; name: string; value: string; createdAt: number; expiresAt: number | null; }; /** * LogtoRole * LogtoRole * * Logto 역할(Role) 생성/수정 시 사용하는 타입입니다. * - name: 역할 이름 * - description: 역할 설명 * - type: 역할 유형(User, MachineToMachine 등) * - isDefault: 기본 역할 여부(선택) */ export type LogtoRole = { name: string; description: string; type: string; // User, MachineToMachine isDefault?: boolean; }; /** * LogtoRoleResponse * * 역할 생성/조회 시 반환되는 타입입니다. * - id: 역할 고유 ID * - LogtoRole의 모든 필드 포함 */ export type LogtoRoleResponse = { id: string } & LogtoRole; /** * VerificationMethodType * * 인증코드(Verification Code) 발송 시 사용할 수 있는 인증 수단 타입입니다. * - phone: 휴대폰 인증(p3Values.PhoneNumber) * - email: 이메일 인증(p3Values.Email) * * 예시: * VerificationMethodType.phone * VerificationMethodType.email */ export class VerificationMethodType { static phone = p3Values.PhoneNumber; static email = p3Values.Email; } /** * SMSVerificationResponse * * SMS 인증코드 발송 시 반환되는 응답 객체입니다. * - verificationId: 인증 세션 고유 ID * - expiresAt: 만료 시각(ISO8601 문자열) */ export class SMSVerificationResponse { verificationId: string; expiresAt: string; constructor(verificationId: string, expiresAt: string) { this.verificationId = verificationId; this.expiresAt = expiresAt; } } /** * LogtoOAuthRESTTemplate * * Logto OAuth 및 API 요청을 위한 REST 템플릿 클래스입니다. * axiosAdapter.RESTTemplate을 상속하여, 인증/권한 관련 요청에 사용됩니다. */ export class LogtoOAuthRESTTemplate extends axiosAdapter.RESTTemplate {}; /** * LogtoLoggerServiceToken * * DI(의존성 주입)에서 사용되는 로거 서비스 토큰입니다. */ export const LogtoLoggerServiceToken = Symbol.for("LogtoLoggerService");