Notificaciones push

This commit is contained in:
David Arranz 2019-10-03 21:37:56 +02:00
parent c1bd3bed18
commit 1425134736
8 changed files with 108 additions and 14 deletions

View File

@ -101,7 +101,7 @@ console.log('PASSPORT - local-phone');
passport.use('jwt', new CustomStrategy(async (req, done) => {
const token = ((req && req.headers && req.headers['x-access-token']) ? req.headers['x-access-token'] : null);
const appVersion = ((req && req.headers && req.headers['accept-version']) ? req.headers['accept-version'] : null);
console.log('appVEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEErsion: ', appVersion);
console.log('appVersion: ', appVersion);
if (!token) {
//console.log('no tengo token');
@ -119,7 +119,6 @@ passport.use('jwt', new CustomStrategy(async (req, done) => {
if (appVersion) {
if (user.app_version != appVersion){
const result = userService._updateLastLoginAndVersionUser(user.id, appVersion);
console.log('PRUEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEBA>>>> ', result);
user.app_version = appVersion;
}
}

View File

@ -48,7 +48,7 @@ async function login(req, res, next) {
async function loginWithPhone(req, res, next) {
try {
const appVersion = ((req && req.headers && req.headers['accept-version']) ? req.headers['accept-version'] : null);
console.log('loginWithPhone - appVEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEErsion: ', appVersion);
console.log('loginWithPhone - appVersion: ', appVersion);
console.log(req.user);
const findOptions = {
@ -114,7 +114,7 @@ async function register(req, res, next) {
};
const appVersion = ((req && req.headers && req.headers['accept-version']) ? req.headers['accept-version'] : null);
console.log('loginWithPhone - appVEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEErsion: ', appVersion);
console.log('loginWithPhone - appVersion: ', appVersion);
//Comprobamos si el usuario ya existe en nuestro sistema

View File

@ -100,7 +100,7 @@ const extraControllers = {
checkReservationCode: async (req, res, next) => {
const params = extractParamsFromRequest(req, res, {});
const appVersion = ((req && req.headers && req.headers['accept-version']) ? req.headers['accept-version'] : null);
console.log('checkReservationCode - appVEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEErsion: ', appVersion);
console.log('checkReservationCode - appVersion: ', appVersion);
console.log('checkReservationCode - PARAMS ', params);
const eventId = params.params.id;

View File

@ -0,0 +1,54 @@
'use strict';
const httpStatus = require('http-status');
const Sequelize = require('sequelize');
const generateControllers = require('../../core/controllers');
const { buildContext } = require('../../core/controllers');
const pushService = require('./push.service');
const { extractParamsFromRequest, handleErrorResponse, handleResultResponse } = require('../../helpers/controller.helper');
// Module Name
const MODULE_NAME = '[push.controller]';
const controllerOptions = { MODULE_NAME };
const extraControllers = {
createOrUpdate: (config) => {
return async (req, res, next) => {
try {
const context = buildContext(req, config);
var data = {
token: req.body.token,
valid: 1,
userId: context.user.id
};
let params = extractParamsFromRequest(req, res, {
includeAll: false,
paginate: { limit: 1, page: 1 },
params: {
userId: context.user.id,
token: data.token,
}
});
// Buscamos el token y el usuario
let result = await pushService.fetchOne(params, context);
if (!result) {
// Dar de alta el token
console.log('>> Dar de alta el token');
result = await pushService.create(data, context);
} else {
// Actualizar el token
console.log('>> Actualizar el token');
result = await pushService.update(params.params, data, context);
}
} catch(error) {
console.error(error);
} finally {
// En todo caso devolver OK al cliente
return handleResultResponse('OK', null, null, res, httpStatus.OK);
}
}
},
};
module.exports = generateControllers(pushService, extraControllers, controllerOptions);

View File

@ -0,0 +1,28 @@
const routes = require('express').Router();
const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator');
const SchemaValidator = require('../../middlewares/schemaValidator');
const FieldMiddleware = require('../../middlewares/fields');
const pushTokenController = require('./push.controller');
const { pushInputType } = require('./push.validations');
const generalInvalidFields = [
'createdAt', 'updatedAt',
];
routes.get('/me/pushtoken',
isLoggedUser,
FieldMiddleware.middleware({
invalidFields: generalInvalidFields
}),
pushTokenController.findOne()
);
routes.post('/me/pushtoken',
isLoggedUser,
SchemaValidator(pushInputType, true),
pushTokenController.createOrUpdate()
);
module.exports = routes;

View File

@ -0,0 +1,10 @@
const _ = require('lodash');
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
const models = require('../../core/models');
const cdnHelper = require('../../helpers/cdn.helper');
const { extractProviderInfo } = require('../../helpers/providers.helper');
const extraMethods = {};
module.exports = generateService(models.UserDevice, extraMethods);

View File

@ -0,0 +1,9 @@
const Joi = require('joi');
const pushInputType = Joi.object().keys({
token: Joi.string().required(),
});
module.exports = {
pushInputType,
};

View File

@ -5,23 +5,17 @@ module.exports = function (sequelize, DataTypes) {
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
userId: {
type: DataTypes.UUID,
foreignKey: true,
allowNull: false,
},
token: {
type: DataTypes.STRING,
allowNull: false,
},
valid: {
type: DataTypes.BOOLEAN,
allowNull: false,
},
invalidated: {
type: DataTypes.DATE,
},
platform: {
type: DataTypes.STRING,
},
}, {
tableName: 'users_devides',
freezeTableName: true,
@ -29,7 +23,7 @@ module.exports = function (sequelize, DataTypes) {
});
UserDevice.associate = function (models) {
UserDevice.User = UserDevice.belongsTo(models.User, {foreignKey: 'userId' });
UserDevice.User = UserDevice.belongsTo(models.User, { foreignKey: 'userId', as: "user" });
};
return UserDevice;