Add device tokens for resuming user sessions
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing

This commit is contained in:
2020-10-21 23:51:12 -05:00
parent b0b62cc50d
commit b37faa87b3
5 changed files with 79 additions and 2 deletions

View File

@@ -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