배경 (Background)


설계 및 기술 자료 (Architecture and Technical Documentation)

<aside> 💡

🤔 이 섹션은 왜 필요한가요?

데이터베이스 스키마 (ERD)

CREATE TABLE `account` (
	`id`	INT	NOT NULL,
	`login_email`	VARCHAR(320)	NOT NULL,
	`logged_at`	TIMESTAMP	NULL,
	`created_at`	TIMESTAMP	NOT NULL,
	`deleted_at`	TIMESTAMP	NULL
);

CREATE TABLE `oauth` (
	`id`	INT	NOT NULL,
	`account_id`	INT	NOT NULL	COMMENT 'index',
	`provider`	VARCHAR(20)	NOT NULL,
	`provider_id`	VARCHAR(255)	NOT NULL
);

CREATE TABLE `refresh_token` (
	`Id`	INT	NOT NULL,
	`user_id`	INT	NOT NULL,
	`token_value`	VARCHAR(64)	NOT NULL	COMMENT 'SHA-256으로 해싱',
	`created_at`	TIMESTAMP	NOT NULL,
	`updated_at`	TIMESTAMP	NULL,
	`expiry_date`	TIMESTAMP	NULL	COMMENT '만료기간:생성일자로 부터 2주'
);

다만 refers_token은 이후 redis로 옮겨질 예정

redisTemplate.opsForValue().set("rt:" + newHashedToken, userId, 14, TimeUnit.DAYS)

API 명세 (API Specifications)


소셜 로그인 API