@point3/logto-module
Version:
포인트3 내부 logto Authentication 모듈입니다
152 lines (139 loc) • 4.11 kB
text/typescript
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");