hrms-checkin/src/stores/positionKeycloak.ts

67 lines
2.1 KiB
TypeScript
Raw Normal View History

2026-01-28 14:30:23 +07:00
import { ref } from 'vue'
import { defineStore } from 'pinia'
2026-04-27 19:21:23 +07:00
import type { KeycloakPosition } from '@/interface/keycloak-position'
2026-01-28 14:30:23 +07:00
2026-04-27 19:21:23 +07:00
export const usePositionKeycloakStore = defineStore(
'positionKeycloak',
() => {
const menuData = ref<string[]>([
'ลงเวลาปฏิบัติงาน',
'ประวัติการลงเวลา',
'รายการลงเวลากรณีพิเศษ',
])
const dataPositionKeycloak = ref<KeycloakPosition | null>(null)
2026-01-28 14:30:23 +07:00
2026-04-27 19:21:23 +07:00
function setPositionKeycloak(data: KeycloakPosition) {
dataPositionKeycloak.value = data
}
/**
* Keycloak position ( logout)
*/
function clearPositionKeycloak() {
dataPositionKeycloak.value = null
// ลบ localStorage ด้วยเพื่อให้แน่ใจว่าข้อมูลหายจริง
localStorage.removeItem('positionKeycloak')
}
2026-01-28 14:30:23 +07:00
2026-04-27 19:21:23 +07:00
/**
*
* @param obj child4 -> child3 -> child2 -> child1 -> root
* @returns string /
*/
function findOrgName(obj: KeycloakPosition | null): string {
if (!obj?.organization) {
return ''
}
2026-01-28 14:30:23 +07:00
2026-04-27 19:21:23 +07:00
const org = obj.organization
const levels = ['child4', 'child3', 'child2', 'child1', 'root'] as const
const parts: string[] = []
2026-01-28 14:30:23 +07:00
2026-04-27 19:21:23 +07:00
for (const level of levels) {
const value = org[level]
if (value) {
parts.push(value)
}
}
2026-01-28 14:30:23 +07:00
2026-04-27 19:21:23 +07:00
return parts.length > 0 ? parts.join('/') : '-'
2026-01-28 14:30:23 +07:00
}
2026-04-27 19:21:23 +07:00
return {
setPositionKeycloak,
clearPositionKeycloak,
dataPositionKeycloak,
findOrgName,
menuData,
}
},
{
persist: {
key: 'positionKeycloak',
storage: localStorage, // ใช้ localStorage เพื่อให้ข้อมูลอยู่ถาวร
},
}
)