refactor: 네비게이션 헤더 최신 디자인으로 전면 개편 및 로그인 버그 수정
- fix: 로그인 API에서 user.role_name 필드 올바르게 사용 (auth.service.js) - refactor: navbar 컴포넌트를 최신 dashboard-header 스타일로 전환 - refactor: 구버전 work-report-header 제거 (6개 페이지) - refactor: load-navbar.js를 최신 헤더 구조에 맞게 업데이트 - style: 파란색 그라데이션 헤더, 실시간 시계, 향상된 프로필 메뉴 - docs: 2026-01-20 개발 로그 추가 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -23,13 +23,13 @@ exports.up = async function(knex) {
|
||||
|
||||
// 2. 사용자별 페이지 접근 권한 테이블 생성
|
||||
await knex.schema.createTable('user_page_access', function(table) {
|
||||
table.integer('user_id').unsigned().notNullable()
|
||||
table.integer('user_id').notNullable()
|
||||
.references('user_id').inTable('users').onDelete('CASCADE');
|
||||
table.integer('page_id').unsigned().notNullable()
|
||||
.references('id').inTable('pages').onDelete('CASCADE');
|
||||
table.boolean('can_access').defaultTo(true); // 접근 가능 여부
|
||||
table.timestamp('granted_at').defaultTo(knex.fn.now());
|
||||
table.integer('granted_by').unsigned() // 권한을 부여한 Admin의 user_id
|
||||
table.integer('granted_by') // 권한을 부여한 Admin의 user_id
|
||||
.references('user_id').inTable('users').onDelete('SET NULL');
|
||||
table.primary(['user_id', 'page_id']);
|
||||
});
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* 2. 각 작업자에 대해 users 테이블에 계정 생성
|
||||
* 3. username은 이름 기반으로 자동 생성 (예: 홍길동 → hong.gildong)
|
||||
* 4. 초기 비밀번호는 '1234'로 통일 (첫 로그인 시 변경 권장)
|
||||
* 5. 현재 연도 연차 잔액 초기화
|
||||
* 5. 현재 연도 연차 잔액 초기화 (workers.annual_leave 사용)
|
||||
*/
|
||||
|
||||
const bcrypt = require('bcrypt');
|
||||
@@ -25,7 +25,7 @@ exports.up = async function(knex) {
|
||||
'workers.worker_name',
|
||||
'workers.email',
|
||||
'workers.status',
|
||||
'workers.base_annual_leave'
|
||||
'workers.annual_leave'
|
||||
);
|
||||
|
||||
console.log(`📊 계정이 없는 작업자: ${workersWithoutAccount.length}명`);
|
||||
@@ -41,7 +41,7 @@ exports.up = async function(knex) {
|
||||
|
||||
// User 역할 ID 조회
|
||||
const userRole = await knex('roles')
|
||||
.where('role_name', 'User')
|
||||
.where('name', 'User')
|
||||
.first();
|
||||
|
||||
if (!userRole) {
|
||||
@@ -77,7 +77,7 @@ exports.up = async function(knex) {
|
||||
await knex('worker_vacation_balance').insert({
|
||||
worker_id: worker.worker_id,
|
||||
year: currentYear,
|
||||
total_annual_leave: worker.base_annual_leave || 15,
|
||||
total_annual_leave: worker.annual_leave || 15,
|
||||
used_annual_leave: 0,
|
||||
created_at: knex.fn.now(),
|
||||
updated_at: knex.fn.now()
|
||||
|
||||
@@ -12,8 +12,8 @@ exports.up = async function(knex) {
|
||||
|
||||
// 1. Guest 역할 추가
|
||||
const [guestRoleId] = await knex('roles').insert({
|
||||
role_name: 'Guest',
|
||||
role_description: '게스트 (계정 없이 특정 기능 접근 가능)',
|
||||
name: 'Guest',
|
||||
description: '게스트 (계정 없이 특정 기능 접근 가능)',
|
||||
created_at: knex.fn.now(),
|
||||
updated_at: knex.fn.now()
|
||||
});
|
||||
@@ -44,7 +44,7 @@ exports.down = async function(knex) {
|
||||
|
||||
// 역할 제거
|
||||
await knex('roles')
|
||||
.where('role_name', 'Guest')
|
||||
.where('name', 'Guest')
|
||||
.delete();
|
||||
|
||||
console.log('✅ 게스트 역할 제거 완료');
|
||||
|
||||
Reference in New Issue
Block a user