---
name: No Position Assignment Page
description: Feature implementation for users without organization position assignment
type: reference
---

## No Position Assignment Page Feature

When a user doesn't have a position assignment (สังกัด), they are redirected to a dedicated page explaining they are not part of the organization structure.

### Files Created/Modified

1. **Created:** `/Users/waruneeta/Desktop/ChamomindWorking/HRMSProject/hrms-checkin/src/views/NoPositionView.vue`
   - Displays message in Thai: "ไม่พบข้อมูลสังกัด"
   - Shows icon and explanation text
   - "ตกลง" (OK) button that shows confirmation dialog
   - After confirmation, performs logout and clears positionKeycloak store

2. **Modified:** `/Users/waruneeta/Desktop/ChamomindWorking/HRMSProject/hrms-checkin/src/router/index.ts`
   - Added new route `/no-position` with `Auth: false`
   - Enhanced router guard to check for position data
   - Redirects to `/no-position` if user has no organization assignment

3. **Modified:** `/Users/waruneeta/Desktop/ChamomindWorking/HRMSProject/hrms-checkin/src/views/MainView.vue`
   - Updated `fetchKeycloakPosition()` function
   - Checks if `organization` object exists and has any data
   - Redirects to `/no-position` if no organization data found

### Logic Flow

1. User logs in successfully
2. `MainView.vue` calls `fetchKeycloakPosition()` in `onMounted()`
3. API returns position data from `/org/profile/keycloak/position`
4. System checks if `organization` object has any non-null values (root, child1-4)
5. If no organization data exists:
   - User is redirected to `/no-position`
   - User sees message explaining they need to contact staff
   - User clicks "ตกลง" to logout
   - Staff adds them to organization structure
   - User can login again

### Position Data Structure

```typescript
interface KeycloakPosition {
  privacyCheckin: boolean
  avatarName?: string
  profileId: string
  organization?: Organization
}

interface Organization {
  root?: string
  child1?: string
  child2?: string
  child3?: string
  child4?: string
}
```

A user is considered to have "no position" when all organization fields (root, child1, child2, child3, child4) are null or undefined.

### Thai UI Messages

- Page title: "ไม่พบข้อมูลสังกัด"
- Description: "ท่านยังไม่มีสังกัดในโครงสร้างองค์กร กรุณาติดต่อเจ้าหน้าที่เพื่อดำเนินการเพิ่มข้อมูล"
- Confirmation dialog: "ยืนยันการออกจากระบบ" - "ท่านจะถูกนำออกจากระบบเพื่อให้เจ้าหน้าที่ดำเนินการเพิ่มข้อมูลสังกัดในโครงสร้างองค์กร"
- Button: "ตกลง"
