7658-devToTest_2428 #2663
|
@ -16,36 +16,51 @@ module.exports = Self => {
|
|||
accessScopes: ['DEFAULT', 'read:multimedia']});
|
||||
|
||||
Self.renewToken = async function(ctx) {
|
||||
const {accessToken: token} = ctx.req;
|
||||
|
||||
const {courtesyTime} = await models.AccessTokenConfig.findOne({
|
||||
fields: ['courtesyTime']
|
||||
});
|
||||
const isNotExceeded = await Self.validateToken(ctx);
|
||||
if (isNotExceeded)
|
||||
return token;
|
||||
|
||||
// Schedule to remove current token
|
||||
setTimeout(async() => {
|
||||
try {
|
||||
const exists = await models.AccessToken.findById(token.id);
|
||||
exists && await Self.logout(token.id);
|
||||
} catch (err) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error(err);
|
||||
}
|
||||
}, courtesyTime * 1000);
|
||||
|
||||
// Get scopes
|
||||
|
||||
let createTokenOptions = {};
|
||||
const {scopes} = token;
|
||||
if (scopes)
|
||||
createTokenOptions = {scopes: [scopes[0]]};
|
||||
// Create new accessToken
|
||||
const user = await Self.findById(token.userId);
|
||||
const accessToken = await user.accessTokens.create(createTokenOptions);
|
||||
let token; let isNotExceeded;
|
||||
try {
|
||||
token = ctx.req.accessToken;
|
||||
|
||||
return {id: accessToken.id, ttl: accessToken.ttl};
|
||||
const {courtesyTime} = await models.AccessTokenConfig.findOne({
|
||||
fields: ['courtesyTime']
|
||||
});
|
||||
isNotExceeded = await Self.validateToken(ctx);
|
||||
if (isNotExceeded)
|
||||
return token;
|
||||
|
||||
// Schedule to remove current token
|
||||
setTimeout(async() => {
|
||||
let exists;
|
||||
try {
|
||||
exists = await models.AccessToken.findById(token.id);
|
||||
exists && await Self.logout(token.id);
|
||||
} catch (error) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error(error);
|
||||
const body = {error: error.message, now: Date.now(), userId: token?.userId ?? null, exists};
|
||||
await handleError(body);
|
||||
throw new Error(error);
|
||||
}
|
||||
}, courtesyTime * 1000);
|
||||
|
||||
// Get scopes
|
||||
const {scopes} = token;
|
||||
if (scopes)
|
||||
createTokenOptions = {scopes: [scopes[0]]};
|
||||
// Create new accessToken
|
||||
const user = await Self.findById(token.userId);
|
||||
const accessToken = await user.accessTokens.create(createTokenOptions);
|
||||
|
||||
return {id: accessToken.id, ttl: accessToken.ttl};
|
||||
} catch (error) {
|
||||
const body = {error: error.message, now: Date.now(), userId: token?.userId ?? null, createTokenOptions, isNotExceeded};
|
||||
await handleError(body);
|
||||
throw new Error(error);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
async function handleError(body, tag = 'renewToken') {
|
||||
body = JSON.stringify(body);
|
||||
await models.Application.rawSql('CALL util.debugAdd(?,?);', [tag, body]);
|
||||
}
|
||||
|
|
|
@ -61,4 +61,21 @@ describe('Renew Token', () => {
|
|||
expect(error).toBeUndefined();
|
||||
expect(response.id).toEqual(ctx.req.accessToken.id);
|
||||
});
|
||||
|
||||
it('throw error', async() => {
|
||||
let error;
|
||||
|
||||
try {
|
||||
await models.VnUser.renewToken({req: {token: null}});
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
|
||||
expect(error).toBeDefined();
|
||||
const query = 'SELECT * FROM util.debug';
|
||||
|
||||
const debugLog = await models.Application.rawSql(query, null);
|
||||
|
||||
expect(debugLog.length).toEqual(1);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -410,15 +410,26 @@ BEGIN
|
|||
FROM sage.movConta mc
|
||||
JOIN vn.supplier s ON s.account = mc.CodigoCuenta
|
||||
WHERE NOT enlazadoSage
|
||||
)SELECT idClientSupplier, `type`
|
||||
),clientSupplierSync AS(
|
||||
SELECT idClientSupplier, `type`
|
||||
FROM sage.clientSupplier cs
|
||||
WHERE isSync
|
||||
)
|
||||
SELECT idClientSupplier, `type`
|
||||
FROM sage.clientSupplier cs
|
||||
WHERE NOT isSync
|
||||
UNION
|
||||
SELECT id, 'C'
|
||||
FROM client
|
||||
FROM client c
|
||||
LEFT JOIN clientSupplierSync cs ON cs.idClientSupplier = c.id
|
||||
AND cs.Type ='C'
|
||||
WHERE cs.idClientSupplier IS NULL
|
||||
UNION
|
||||
SELECT id, 'P'
|
||||
FROM supplier;
|
||||
FROM supplier s
|
||||
LEFT JOIN clientSupplierSync cs ON cs.idClientSupplier = s.id
|
||||
AND cs.Type ='P'
|
||||
WHERE cs.idClientSupplier IS NULL;
|
||||
|
||||
CALL clientSupplier_add(vCompanyFk);
|
||||
|
||||
|
|
|
@ -12,23 +12,21 @@ BEGIN
|
|||
END IF;
|
||||
|
||||
IF !(OLD.started <=> NEW.started AND OLD.ended <=> NEW.ended) THEN
|
||||
|
||||
SELECT COUNT(*) > 0 INTO isOverlapping
|
||||
FROM business b
|
||||
WHERE (util.hasDateOverlapped(
|
||||
NEW.started,
|
||||
IFNULL(NEW.ended, b.started),
|
||||
b.started,
|
||||
IFNULL(b.ended, NEW.started))
|
||||
OR (NEW.ended <=> NULL AND b.ended <=> NULL))
|
||||
AND b.id <> OLD.id
|
||||
AND workerFk = OLD.workerFk;
|
||||
SELECT util.hasDateOverlapped(
|
||||
started,
|
||||
ended,
|
||||
NEW.started,
|
||||
IFNULL(NEW.ended, b.started)
|
||||
) isOverlapped INTO isOverlapping
|
||||
FROM vn.business b
|
||||
WHERE workerFk = NEW.workerFK
|
||||
AND b.id <> NEW.id
|
||||
ORDER BY isOverlapped DESC
|
||||
LIMIT 1;
|
||||
|
||||
IF isOverlapping THEN
|
||||
CALL util.throw ('IS_OVERLAPPING');
|
||||
END IF;
|
||||
|
||||
END IF;
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
Loading…
Reference in New Issue