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

@@ -605,6 +605,13 @@ class AuthController extends Controller {
// Create a login tracking activity
await this.activity.login(req)
// If there are login messages, show those
const LoginMessage = this.models.get('LoginMessage')
const messages = await LoginMessage.for_user(user)
if ( messages.length > 0 ) {
await req.trap.begin('login_message', { session_only: true })
}
return res.api({
success: true,
session_created: !!req.body.create_session,

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