Add device tokens for resuming user sessions
This commit is contained in:
@@ -2,7 +2,7 @@ const { Controller } = require('libflitter')
|
||||
|
||||
class SessionController extends Controller {
|
||||
static get services() {
|
||||
return [...super.services, 'configs']
|
||||
return [...super.services, 'configs', 'models', 'auth']
|
||||
}
|
||||
|
||||
async get_session(req, res, next) {
|
||||
@@ -38,6 +38,41 @@ class SessionController extends Controller {
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
async get_device_token(req, res, next) {
|
||||
const DeviceToken = this.models.get('api:DeviceToken')
|
||||
const token = await DeviceToken.grant_user(req.user)
|
||||
|
||||
return res.api({
|
||||
token: token.token,
|
||||
expiration_date: token.expiration_date,
|
||||
})
|
||||
}
|
||||
|
||||
async resume(req, res, next) {
|
||||
const DeviceToken = this.models.get('api:DeviceToken')
|
||||
const User = this.models.get('auth:User')
|
||||
const token = await DeviceToken.findOne({
|
||||
token: req.params.token,
|
||||
expiration_date: { $gt: new Date },
|
||||
});
|
||||
|
||||
if ( !token ) {
|
||||
return res.status(404)
|
||||
.message('Device token expired or invalid.')
|
||||
.api()
|
||||
}
|
||||
|
||||
const user = await User.findById(token.user_id);
|
||||
if ( !user ) {
|
||||
return res.status(404)
|
||||
.message('Device token expired or invalid.')
|
||||
.api()
|
||||
}
|
||||
|
||||
await this.auth.get_provider().session(req, user)
|
||||
return res.api()
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = exports = SessionController
|
||||
|
||||
Reference in New Issue
Block a user