|
1 | 1 | import path from "node:path"; |
2 | 2 |
|
3 | 3 | import * as fs from "$/utils/fs.js"; |
| 4 | +import env from "$/config/env.js"; |
4 | 5 |
|
5 | 6 | // TODO: Utilize config/head.js for these |
6 | 7 |
|
@@ -67,6 +68,8 @@ const pluginAccessible = (module, pluginAccess) => { |
67 | 68 | }; |
68 | 69 |
|
69 | 70 | export default function exposeGlobals(req, res, next) { |
| 71 | + const config = env(); |
| 72 | + |
70 | 73 | if (req.path.startsWith("/api/") || req.path.startsWith("/auth/")) { |
71 | 74 | return next(); |
72 | 75 | } |
@@ -111,6 +114,12 @@ export default function exposeGlobals(req, res, next) { |
111 | 114 |
|
112 | 115 | res.locals.user = { |
113 | 116 | name: req.user?.name || "guest", |
| 117 | + firstName: req.user?.firstName ?? null, |
| 118 | + lastName: req.user?.lastName ?? null, |
| 119 | + email: req.user?.email ?? null, |
| 120 | + pictureUrl: req.user?.pictureUrl ?? null, |
| 121 | + locale: req.user?.locale ?? null, |
| 122 | + timezone: req.user?.timezone ?? null, |
114 | 123 | primaryRole: req.user?.role || null, |
115 | 124 | roles: Array.isArray(req.user?.roles) ? req.user.roles : [], |
116 | 125 | }; |
@@ -152,5 +161,12 @@ export default function exposeGlobals(req, res, next) { |
152 | 161 | res.locals.showSidebar = activeModule ? activeModule?.ui?.layout?.sidebar !== false : true; |
153 | 162 | } |
154 | 163 |
|
| 164 | + res.locals.accountSettings = { |
| 165 | + passwordMinLength: config.AUTH_PASSWORD_MIN_LENGTH, |
| 166 | + supportedLocales: Array.isArray(config.LOCALES_SUPPORTED) ? config.LOCALES_SUPPORTED : [], |
| 167 | + timezoneDefault: config.TIMEZONE_DEFAULT, |
| 168 | + profilePictureMaxBytes: Number(config.PROFILE_PICTURE_MAX_BYTES ?? 0), |
| 169 | + }; |
| 170 | + |
155 | 171 | next(); |
156 | 172 | } |
0 commit comments