You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.2 KiB

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