diff --git a/api/routes/members.js b/api/routes/members.js index 99faa20..f9077a9 100644 --- a/api/routes/members.js +++ b/api/routes/members.js @@ -32,9 +32,27 @@ router.get('/', async (req, res) => { } }); -router.get('/me', (req, res) => { +router.get('/me', async (req, res) => { console.log(req.user); - res.json(req.user); + if (req.user === undefined) + return res.sendStatus(401) + + try { + const LOAData = await pool.query( + `SELECT * + FROM leave_of_absences + WHERE member_id = ? + AND deleted = 0 + AND UTC_TIMESTAMP() BETWEEN start_date AND end_date;`, req.user.id) + const userWithLOA = { + ...req.user, + loa: LOAData + }; + res.json(userWithLOA); + } catch (error) { + console.error('Error fetching LOA data:', error); + return res.status(500).json({ error: 'Failed to fetch user data' }); + } }) router.get('/:id', async (req, res) => { diff --git a/ui/src/App.vue b/ui/src/App.vue index dd2dcf0..224e34d 100644 --- a/ui/src/App.vue +++ b/ui/src/App.vue @@ -11,6 +11,8 @@ import { } from './components/ui/dropdown-menu'; import { onMounted } from 'vue'; import { useUserStore } from './stores/user'; +import Alert from './components/ui/alert/Alert.vue'; +import AlertDescription from './components/ui/alert/AlertDescription.vue'; const userStore = useUserStore(); @@ -30,6 +32,15 @@ async function logout() { userStore.user = null; } + +function formatDate(dateStr) { + if (!dateStr) return ""; + return new Date(dateStr).toLocaleDateString("en-US", { + year: "numeric", + month: "short", + day: "numeric", + }); +}