69 lines
2.9 KiB
Markdown
69 lines
2.9 KiB
Markdown
|
|
---
|
||
|
|
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: "ตกลง"
|