octane-website/src/routes/users.js

50 lines
1.1 KiB
JavaScript
Raw Normal View History

2026-07-08 11:05:21 +02:00
const express = require('express');
2026-07-08 14:24:23 +02:00
const usersRepo = require('../repositories/usersRepo');
const config = require('../config');
2026-07-08 11:05:21 +02:00
const asyncHandler = require('../lib/asyncHandler');
const router = express.Router();
function authentikAccountUrl() {
if (!config.authentikPublicUrl) return null;
return new URL('/if/user/', config.authentikPublicUrl).href;
}
2026-07-08 11:05:21 +02:00
router.get(
'/me',
asyncHandler(async (req, res) => {
2026-07-08 14:24:23 +02:00
const { id, name, username, email, avatar_url, is_admin } = req.user;
res.json({
id,
name,
username,
email,
avatarUrl: avatar_url,
isAdmin: is_admin,
authentikAccountUrl: authentikAccountUrl(),
});
2026-07-08 14:24:23 +02:00
})
);
router.get(
'/me/profile',
asyncHandler(async (req, res) => {
const { id, name, username, email, avatar_url, groups, is_admin, created_at } = req.user;
const stats = await usersRepo.getActivityStats(id);
res.json({
id,
name,
username,
email,
avatarUrl: avatar_url,
groups,
isAdmin: is_admin,
createdAt: created_at,
stats,
authentikAccountUrl: authentikAccountUrl(),
2026-07-08 14:24:23 +02:00
});
2026-07-08 11:05:21 +02:00
})
);
module.exports = router;