Add support for login intercept messages and announcements
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user