Форсируем сброс атуентификации сервиса в случае, если обработчик вернул UNAUTH

This commit is contained in:
Mikhail Chechnev 2019-01-10 17:21:49 +03:00
parent 4870b93e29
commit ee4e5ddd97
4 changed files with 38 additions and 3 deletions

View File

@ -15,6 +15,7 @@ const { SERR_OBJECT_BAD_INTERFACE } = require("./constants"); //Общесист
const { makeErrorText, validateObject } = require("./utils"); //Вспомогательные функции
const { NINC_EXEC_CNT_YES, NINC_EXEC_CNT_NO } = require("../models/prms_db_connector"); //Схемы валидации параметров функций модуля взаимодействия с БД
const objOutQueueProcessorSchema = require("../models/obj_out_queue_processor"); //Схемы валидации сообщений обмена с обработчиком сообщения очереди
const { NFORCE_YES } = require("../models/common"); //Общие константы и схемы валидации
const objQueueSchema = require("../models/obj_queue"); //Схемы валидации сообщения очереди
const objServiceFnSchema = require("../models/obj_service_function"); //Схемы валидации функции сервиса
const prmsOutQueueSchema = require("../models/prms_out_queue"); //Схемы валидации параметров функций класса
@ -259,7 +260,18 @@ class OutQueue extends EventEmitter {
//Ошибки обработки нет, но может быть есть ошибка аутентификации
if (result.sResult == objOutQueueProcessorSchema.STASK_RESULT_UNAUTH) {
//Ставим задачу на аутентификацию сервиса
await this.dbConn.putServiceAuthInQueue({ nServiceId: prms.queue.nServiceId });
try {
await this.dbConn.putServiceAuthInQueue({
nServiceId: prms.queue.nServiceId,
nForce: NFORCE_YES
});
} catch (e) {
//Отразим в протоколе ошибку постановки задачи на аутентификацию сервиса
await self.logger.error(
`Ошибка постановки задачи на аутентификацию сервиса: ${makeErrorText(e)}`,
{ nQueueId: prms.queue.nId }
);
}
}
}
} else {

View File

@ -3,6 +3,14 @@
Модели данных: общие функции валидации, константы, модели
*/
//----------
// Константы
//----------
//Признак принудительного исполнения действия
NFORCE_NO = 0; //Не выполнять принудительно (нормальный уровень проверок исполения)
NFORCE_YES = 1; //Выполнить принудительно (пониженный уровень проверок исполнения)
//------------
// Тело модуля
//------------
@ -31,4 +39,6 @@ const validateMailList = sMailList => {
// Интерфейс модуля
//-----------------
exports.NFORCE_NO = NFORCE_NO;
exports.NFORCE_YES = NFORCE_YES;
exports.validateMailList = validateMailList;

View File

@ -10,6 +10,7 @@
const Schema = require("validate"); //Схемы валидации
const { dbConnect } = require("./obj_config"); //Схемы валидации конфигурации сервера приложений
const { NLOG_STATE_INF, NLOG_STATE_WRN, NLOG_STATE_ERR } = require("./obj_log"); //Схемы валидации записи журнала работы сервиса обмена
const { NFORCE_NO, NFORCE_YES } = require("./common"); //Общие алгоритмы валидации
const {
NQUEUE_EXEC_STATE_INQUEUE,
NQUEUE_EXEC_STATE_APP,
@ -166,6 +167,18 @@ exports.putServiceAuthInQueue = new Schema({
type: path => `Идентификатор сервиса (${path}) имеет некорректный тип данных (ожидалось - Number)`,
required: path => `Не указан идентификатор сервиса (${path})`
}
},
//Признак принудительного завершения сессии
nForce: {
type: Number,
required: false,
enum: [NFORCE_YES, NFORCE_NO],
message: {
type: path =>
`Признак принудительного завершения сессии (${path}) имеет некорректный тип данных (ожидалось - Number)`,
enum: path => `Значение признака принудительного завершения сессии (${path}) не поддерживается`,
required: path => `Не указан признак принудительного завершения сессии (${path})`
}
}
});

View File

@ -143,8 +143,8 @@ const isServiceAuth = async prms => {
const putServiceAuthInQueue = async prms => {
try {
await prms.connection.execute(
"BEGIN PKG_EXS.SERVICE_AUTH_PUT_INQUEUE(NEXSSERVICE => :NEXSSERVICE); END;",
{ NEXSSERVICE: prms.nServiceId },
"BEGIN PKG_EXS.SERVICE_AUTH_PUT_INQUEUE(NEXSSERVICE => :NEXSSERVICE, NFORCE => :NFORCE); END;",
{ NEXSSERVICE: prms.nServiceId, NFORCE: prms.nForce },
{ autoCommit: true }
);
} catch (e) {