0310700
fdfd7dca98
feat(ui): 헤더 브랜드 로고를 </> (codeslash)로 변경
...
기존 code 아이콘(<>)은 슬래시가 없어 로그인창 </> 로고와 불일치.
박스 없이 헤더 색 상속하는 codeslash 아이콘 추가해 헤더에 적용.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-30 14:51:51 +09:00
0310700
096f7fbbcb
feat(auth): Keycloak RP-initiated 단일 로그아웃(SLO) 적용
...
feat/sso 작업을 라우트 개편된 현재 main 에 이식.
- handleCallback 이 id_token 반환, 콜백에서 분리해 session.idToken 에만 보관(뷰/DB 비노출)
- logoutUrl(): end_session_endpoint + id_token_hint 로 확인화면 없이 즉시 로그아웃
- /logout: 로컬 세션 destroy 후 Keycloak end-session 으로 리다이렉트해 SSO 세션까지 종료
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-30 14:12:42 +09:00
Hyemin Lee
ace46d2fb8
feat(server): 라우트 전면 개편 — 반응·가시성·댓글/대댓글·삭제
...
- GET / : 내 프로젝트/피드 분리, role 도구 필터, 댓글 일괄 조회(commentsByProject)
- 반응(heart/star) AJAX JSON, visibility/delete(본인), 댓글/대댓글(parent_id)
- 댓글 LGTM/🚀 egg 신호 + return_to 복귀, isAjax/safeBack 헬퍼
- res.locals 로 icon/identicon/langColor 노출
- db: listCommentsByProjects 추가, _header: body 시작 신호(toast/egg/open)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-29 17:26:37 +09:00
Hyemin Lee
5ab1e9f938
feat(ui): 디자인 시스템 전면 개편 — 헤더·CSS·아이콘 헬퍼·클라이언트 JS
...
- style.css: CSS 변수(라이트/다크) 단일 스타일시트로 재작성
- _header.ejs: 스티키 다크 헤더, 실제 role 배지, FOUC 방지 테마 초기화
- helpers.js: icon(Octicon)·identicon(SVG 아바타)·langColor·langFromTags
- app.js: 테마·메뉴·모달·검색/정렬/필터·반응 fetch·댓글 답글·이스터에그
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-29 17:12:31 +09:00
Hyemin Lee
8be3a532cb
feat(auth): Keycloak role 기반 관리자 판별과 도구 카탈로그 개편
...
- auth.js: realm/client role 추출 → roles·isAdmin 세션 저장
- config.js: ADMIN_ROLE + 도구 URL 8종 환경변수화
- sites.js: 개발4 + 인프라4(adminOnly) 재구성, toolsForUser(isAdmin)
- .project-env.example: ADMIN_ROLE·도구 URL 항목 추가
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-29 17:12:03 +09:00
Hyemin Lee
87289502c8
feat(db): 공개여부·언어·대댓글·좋아요(hearts) 스키마와 쿼리 개편
...
- projects: is_public(공개/비공개)·lang 컬럼 추가(멱등)
- comments: parent_id 추가 — 대댓글 1뎁스(앱에서 강제)
- hearts(❤️ 좋아요) 테이블 신설, stars(⭐ 즐겨찾기)는 유지
- db.js: 카운트+viewer 반응여부 공통 SELECT, 공개+본인비공개만 노출,
toggleHeart/toggleStar({on,count}), setVisibility/deleteProject/deleteComment
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-29 17:11:53 +09:00
35d5d70a1d
미인증 진입 시 중간 화면 없이 곧장 Keycloak 로그인 폼으로 리다이렉트
...
- requireAuth: /login 거치지 않고 loginRedirect로 직접 Keycloak으로
- /login 라우트도 oidcReady면 즉시 리다이렉트
- OIDC discovery 실패 시에만 안내 페이지 폴백, /api/*는 401 유지
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-23 09:29:58 +09:00
0310700
792b9b9c72
포털 사이트 링크에 SSO 자동로그인 적용 (Coder/Gitea OIDC 시작 URL + 뱃지)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-22 17:53:07 +09:00
0310700
9eb3fd1b4c
AI DEV portal 초기 커밋
...
Express+EJS+Postgres 사내 개발 포털.
- Keycloak OIDC(사번 로그인), GitHub 감성 UI
- 사이트 모음 + 프로젝트 공유/코멘트/스타
- DB: OpenEverest appdb portal schema (portal_app role)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-22 16:16:40 +09:00