const { Controller } = require('libflitter') class SessionController extends Controller { static get services() { return [...super.services, 'configs'] } async get_session(req, res, next) { return res.api(await this.session_data(req.user)) } async save_session(req, res, next) { if ( req?.body?.user?.preferences ) { const save_prefs = req.body.user.preferences; req.user.preferences.dark_mode = !!save_prefs.dark_mode; if ( save_prefs.default_page ) { req.user.preferences.default_page = save_prefs.default_page; } else { req.user.preferences.default_page = ''; } } await req.user.save() return res.api() } async session_data(user) { return { user: { id: user.id, username: user.uid, preferences: user.preferences || {}, }, app: { name: this.configs.get('app.name'), url: this.configs.get('app.url'), }, } } } module.exports = exports = SessionController