[메뉴 권한 1차 작업]
This commit is contained in:
@@ -7,26 +7,20 @@
|
||||
<button
|
||||
class="menu-btn"
|
||||
:class="{ active: modelValue === 'home' }"
|
||||
@click="$emit('update:modelValue', 'home')"
|
||||
@click="onMenuClick('home')"
|
||||
>
|
||||
HOME
|
||||
</button>
|
||||
<!-- 테스트트 메뉴 -->
|
||||
|
||||
<!-- 권한 기반 메뉴 -->
|
||||
<button
|
||||
v-for="menu in availableMenus"
|
||||
:key="menu.code"
|
||||
class="menu-btn"
|
||||
:class="{ active: modelValue === 'test' }"
|
||||
@click="$emit('update:modelValue', 'test')"
|
||||
:class="{ active: modelValue === menu.code }"
|
||||
@click="onMenuClick(menu.code)"
|
||||
>
|
||||
테스트 메뉴
|
||||
</button>
|
||||
<!-- 관리자 메뉴 (관리자만 표시) -->
|
||||
<button
|
||||
v-if="userStore.isAdmin"
|
||||
class="menu-btn"
|
||||
:class="{ active: modelValue === 'admin' }"
|
||||
@click="$emit('update:modelValue', 'admin')"
|
||||
>
|
||||
관리자 메뉴
|
||||
{{ menu.name }}
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
@@ -77,22 +71,35 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted, onBeforeUnmount } from "vue";
|
||||
import { ref, computed, onMounted, onBeforeUnmount } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
import { useUserStore } from "~/stores/user";
|
||||
import { usePermissionsStore } from "~/stores/permissions";
|
||||
|
||||
defineProps({
|
||||
modelValue: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
});
|
||||
|
||||
defineEmits(["update:modelValue"]);
|
||||
// defineModel 사용
|
||||
const modelValue = defineModel({ type: String, required: true });
|
||||
|
||||
const showDropdown = ref(false);
|
||||
const router = useRouter();
|
||||
const userStore = useUserStore();
|
||||
const permissionStore = usePermissionsStore();
|
||||
|
||||
// 권한 초기화
|
||||
onMounted(async () => {
|
||||
await permissionStore.fetchPermissions();
|
||||
});
|
||||
|
||||
// 권한이 있는 메뉴들만 필터링
|
||||
const availableMenus = computed(() => {
|
||||
return permissionStore.permissions.resources.menus.filter(menu => {
|
||||
return permissionStore.hasMenuPermission(menu.code);
|
||||
});
|
||||
});
|
||||
|
||||
// 메뉴 클릭 핸들러
|
||||
function onMenuClick(menu) {
|
||||
modelValue.value = menu;
|
||||
}
|
||||
|
||||
function toggleDropdown() {
|
||||
showDropdown.value = !showDropdown.value;
|
||||
|
||||
Reference in New Issue
Block a user