feat(auth): JWT 기반 Google 로그인 인증 API 구현
- Entity: User, Role, RoleUrlPattern, UserStatus enum
- Repository: UserRepository, RoleRepository (fetch join 쿼리)
- Auth: GoogleTokenVerifier, JwtTokenProvider, JwtAuthenticationFilter
- API: POST /api/auth/google, GET /api/auth/me, POST /api/auth/logout
- DTO: AuthResponse, UserResponse, RoleResponse, GoogleLoginRequest
- SecurityConfig: JWT 필터 등록, CORS 설정, 공개 엔드포인트 정의
- 초기 데이터: roles + role_url_patterns 시드 (data.sql)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 17:28:51 +09:00
|
|
|
-- 초기 롤 시드 데이터
|
2026-02-16 23:19:50 +09:00
|
|
|
INSERT INTO roles (name, description, default_grant, created_at) VALUES
|
|
|
|
|
('ADMIN', '전체 접근 권한 (관리자 페이지 포함)', false, NOW()),
|
|
|
|
|
('DEVELOPER', '전체 개발 가이드 접근', false, NOW()),
|
|
|
|
|
('FRONT_DEV', '프론트엔드 개발 가이드만', false, NOW()),
|
|
|
|
|
('WING_PERMIT', 'Wing 데모 사이트 접근 권한', true, NOW());
|
feat(auth): JWT 기반 Google 로그인 인증 API 구현
- Entity: User, Role, RoleUrlPattern, UserStatus enum
- Repository: UserRepository, RoleRepository (fetch join 쿼리)
- Auth: GoogleTokenVerifier, JwtTokenProvider, JwtAuthenticationFilter
- API: POST /api/auth/google, GET /api/auth/me, POST /api/auth/logout
- DTO: AuthResponse, UserResponse, RoleResponse, GoogleLoginRequest
- SecurityConfig: JWT 필터 등록, CORS 설정, 공개 엔드포인트 정의
- 초기 데이터: roles + role_url_patterns 시드 (data.sql)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 17:28:51 +09:00
|
|
|
|
|
|
|
|
-- 롤별 URL 패턴
|
|
|
|
|
INSERT INTO role_url_patterns (role_id, url_pattern, created_at) VALUES
|
|
|
|
|
((SELECT id FROM roles WHERE name = 'ADMIN'), '/**', NOW()),
|
|
|
|
|
((SELECT id FROM roles WHERE name = 'DEVELOPER'), '/dev/**', NOW()),
|
2026-02-16 23:19:50 +09:00
|
|
|
((SELECT id FROM roles WHERE name = 'FRONT_DEV'), '/dev/front/**', NOW()),
|
|
|
|
|
((SELECT id FROM roles WHERE name = 'WING_PERMIT'), '/wing/**', NOW());
|
|
|
|
|
|
|
|
|
|
-- 시스템 설정
|
|
|
|
|
INSERT INTO app_settings (setting_key, setting_value, description, updated_at) VALUES
|
|
|
|
|
('registration.auto-approve', 'true', '신규 가입자 자동 승인 여부', NOW());
|