feat createLogin refs #6868

This commit is contained in:
Sergio De la torre 2024-07-15 15:51:52 +02:00
parent c6da9e72e0
commit ac0c3b79b4
2 changed files with 112 additions and 0 deletions

View File

@ -0,0 +1,111 @@
const UserError = require('vn-loopback/util/user-error');
module.exports = Self => {
Self.remoteMethodCtx('handleUser', {
description: 'Manage various aspects related to a user with the app',
accepts: [
{
arg: 'androidId',
type: 'String',
description: 'Android id'
}, {
arg: 'versionApp',
type: 'String',
description: 'Version app'
}, {
arg: 'nameApp',
type: 'String',
description: 'Version app'
},
],
returns: {
type: 'object',
root: true
},
http: {
path: `/handleUser`,
verb: 'POST'
}
});
Self.loginApp = async(ctx, android_id, versionApp, nameApp, options) => {
const models = Self.app.models;
const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
// const login = await models.Account.login(ctx, user, password, myOptions);
const accessToken = ctx.req.accessToken;
let user = await models.VnUser.findById(accessToken.userId);
console.log(user.id);
const [[{vIsAuthorized, vMessage}]] =
await Self.rawSql('CALL vn.device_checkLogin(?, ?);',
[user.id, android_id], myOptions);
if (!vIsAuthorized)
throw new UserError('Not authorized');
const isUserInOperator = await models.Operator.findOne({
where: {
workerFk: user.id
}
}, myOptions);
if (!isUserInOperator)
await models.Operator.create({'workerFk': user.id});
const serialNumber = (await models.DeviceProduction.findOne({
where: {android_id: android_id}
}, myOptions))?.serialNumber ?? '';
await models.DeviceLog.create({
'android_id': android_id,
'userFk': user.id,
'nameApp': nameApp,
'versionApp': versionApp,
'serialNumber': serialNumber
}, myOptions);
// ctx.req.accessToken = {userId};
const getDataUser = await models.VnUser.getCurrentUserData(ctx);
const getDataOperator = await models.Operator.findOne({
where: {workerFk: user.id},
fields: ['numberOfWagons', 'warehouseFk', 'itemPackingTypeFk', 'sectorFk', 'sector',
'trainFk', 'train', 'labelerFk', 'printer'],
include: [
{
relation: 'sector',
scope: {
fields: ['warehouseFk', 'description'],
}
}, {
relation: 'printer',
scope: {
fields: ['name'],
}
}, {
relation: 'train',
scope: {
fields: ['name'],
}
}
]
}, myOptions);
const getVersion = await models.MobileAppVersionControl.getVersion(ctx, nameApp);
const combinedResult = {
...getDataOperator.__data,
...getDataUser.__data,
...getVersion,
message: vMessage,
serialNumber,
};
return combinedResult;
};
};

View File

@ -11,6 +11,7 @@ module.exports = Self => {
require('../methods/account/change-password')(Self);
require('../methods/account/set-password')(Self);
require('../methods/account/login-app')(Self);
require('../methods/account/handle-user')(Self);
Self.setUnverifiedPassword = async(id, pass, options) => {
const {emailVerified} = await models.VnUser.findById(id, {fields: ['emailVerified']}, options);