All checks were successful
Build & Deploy on Dev / build (push) Successful in 2m30s
78 lines
2.5 KiB
TypeScript
78 lines
2.5 KiB
TypeScript
import { ref } from 'vue'
|
|
import { defineStore } from 'pinia'
|
|
import type { KeycloakPosition } from '@/interface/keycloak-position'
|
|
|
|
export const usePositionKeycloakStore = defineStore(
|
|
'positionKeycloak',
|
|
() => {
|
|
const menuData = ref<string[]>([
|
|
'ลงเวลาปฏิบัติงาน',
|
|
'ประวัติการลงเวลา',
|
|
'รายการลงเวลากรณีพิเศษ',
|
|
])
|
|
const dataPositionKeycloak = ref<KeycloakPosition | null>(null)
|
|
const profileImg = ref<string>('')
|
|
|
|
function setPositionKeycloak(data: KeycloakPosition) {
|
|
dataPositionKeycloak.value = data
|
|
}
|
|
|
|
/**
|
|
* ตั้งค่ารูปโปรไฟล์ผู้ใช้งาน
|
|
* @param url URL ของรูปโปรไฟล์
|
|
*/
|
|
function setProfileImg(url: string) {
|
|
profileImg.value = url
|
|
}
|
|
|
|
/**
|
|
* ล้างข้อมูล Keycloak position (ใช้เมื่อ logout)
|
|
*/
|
|
function clearPositionKeycloak() {
|
|
dataPositionKeycloak.value = null
|
|
profileImg.value = ''
|
|
// ลบ localStorage ด้วยเพื่อให้แน่ใจว่าข้อมูลหายจริง
|
|
localStorage.removeItem('positionKeycloak')
|
|
}
|
|
|
|
/**
|
|
* สร้างชื่อหน่วยงานจากข้อมูลลำดับชั้นองค์กร
|
|
* @param obj ข้อมูลองค์กรที่มีโครงสร้าง child4 -> child3 -> child2 -> child1 -> root
|
|
* @returns ชื่อหน่วยงานในรูปแบบ string เชื่อมด้วย /
|
|
*/
|
|
function findOrgName(obj: KeycloakPosition | null): string {
|
|
if (!obj?.organization) {
|
|
return ''
|
|
}
|
|
|
|
const org = obj.organization
|
|
const levels = ['child4', 'child3', 'child2', 'child1', 'root'] as const
|
|
const parts: string[] = []
|
|
|
|
for (const level of levels) {
|
|
const value = org[level]
|
|
if (value) {
|
|
parts.push(value)
|
|
}
|
|
}
|
|
|
|
return parts.length > 0 ? parts.join('/') : '-'
|
|
}
|
|
|
|
return {
|
|
setPositionKeycloak,
|
|
clearPositionKeycloak,
|
|
setProfileImg,
|
|
dataPositionKeycloak,
|
|
profileImg,
|
|
findOrgName,
|
|
menuData,
|
|
}
|
|
},
|
|
{
|
|
persist: {
|
|
key: 'positionKeycloak',
|
|
storage: localStorage, // ใช้ localStorage เพื่อให้ข้อมูลอยู่ถาวร
|
|
},
|
|
}
|
|
)
|