워크스페이스(탭) 도입 — 로그인 후 기본 화면을 탭 작업공간으로.
- /workspace: 헤더+사이드바+탭바+iframe 패널. 메뉴 클릭=탭 열기, 전환해도 폼·스크롤·조회결과 등 작업 상태 유지(세션 동안) - 로그인 후 / = 워크스페이스(첫 탭=대시보드). iframe 내부는 임베드 렌더 - 임베드 레이아웃(bag/layout/embed): 헤더·사이드바 없이 본문만 - 임베드 판정: ?embed=1 또는 Sec-Fetch-Dest=iframe (iframe 내 링크·폼· 리다이렉트까지 중첩 크롬 없이 처리) - iframe 안 세션만료 시 상위 창을 로그인으로 전환(auth/_shell) - 포털 헤더에 워크스페이스 진입 링크, E2E(workspace.spec) 추가 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -10,19 +10,37 @@ class Home extends BaseController
|
||||
public function index()
|
||||
{
|
||||
if (session()->get('logged_in')) {
|
||||
// 메인(/) — gov-portal 디자인 셸 + 종량제 실데이터 대시보드.
|
||||
helper('admin');
|
||||
|
||||
return view('bag/layout/portal', [
|
||||
'title' => '업무 현황',
|
||||
'bare' => true,
|
||||
'content' => view('bag/dashboard_portal', $this->portalDashboardData()),
|
||||
]);
|
||||
// 워크스페이스 탭(iframe) 안: 대시보드 본문을 임베드로.
|
||||
if ($this->isEmbeddedRequest()) {
|
||||
return view('bag/layout/embed', [
|
||||
'title' => '업무 현황',
|
||||
'bare' => true,
|
||||
'content' => view('bag/dashboard_portal', $this->portalDashboardData()),
|
||||
]);
|
||||
}
|
||||
|
||||
// 로그인 후 기본 화면 = 워크스페이스(탭). 메뉴를 탭으로 열어 작업 상태 유지.
|
||||
return view('bag/layout/workspace');
|
||||
}
|
||||
|
||||
return view('welcome_message');
|
||||
}
|
||||
|
||||
/**
|
||||
* 워크스페이스 — 메뉴를 탭(iframe)으로 열어두고 작업 상태를 유지하는 화면.
|
||||
*/
|
||||
public function workspace()
|
||||
{
|
||||
if (! session()->get('logged_in')) {
|
||||
return redirect()->to(base_url('login'));
|
||||
}
|
||||
helper('admin');
|
||||
|
||||
return view('bag/layout/workspace');
|
||||
}
|
||||
|
||||
/**
|
||||
* 메인 대시보드용 — 종량제 시스템에 실제 존재하는 데이터만 집계.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user