Add support for login intercept messages and announcements

This commit is contained in:
garrettmills
2020-08-12 22:07:53 -05:00
parent 9a35bd60e1
commit f1bd6e1ad4
6 changed files with 99 additions and 1 deletions

View File

@@ -2,7 +2,7 @@ const { Controller } = require('libflitter')
class ReflectController extends Controller {
static get services() {
return [...super.services, 'routers', 'models', 'activity']
return [...super.services, 'routers', 'models', 'activity', 'Vue']
}
async get_announcements(req, res, next) {
@@ -80,6 +80,30 @@ class ReflectController extends Controller {
await announcement.delete()
return res.api()
}
async show_login_message(req, res) {
const LoginMessage = this.models.get('LoginMessage')
const messages = await LoginMessage.for_user(req.user)
const message = messages[0]
return this.Vue.auth_message(res, {
message: `<h3>${message.title}</h3>${message.message}`,
next_destination: '/auth/login-message/dismiss',
})
}
async dismiss_login_message(req, res) {
const LoginMessage = this.models.get('LoginMessage')
const messages = await LoginMessage.for_user(req.user)
const message = messages[0]
await message.mark_seen()
if ( req.trap.has_trap('login_message') )
await req.trap.end()
return res.redirect(req.session?.auth?.flow || '/dash')
}
}
module.exports = exports = ReflectController