Вопрос

Как программно изменить тип Пользователя

Коллеги, добрый день!
Вопрос по функционалу (переключить пользователя из сотрудника в портального пользователя и наоборот)

 Как написано в релизе <https://academy.terrasoft.ru/documents/bpmonline-release-notes-7-12-2>: Появилась возможность изменять тип пользователя после его создания. Благодаря этому упрощен процесс перевода пользователей портала в сотрудники компании и наоборот.

Подскажите, пожалуйста, как кодом на C# можно изменять тип пользователя после его создания в рамках архитектурной эко-системы BPM'Online?

(Как PROGRAMMATICALLY изменять тип пользователя после его создания?)

Заранее спасибо!

У меня такой же вопрос

3 комментария
Лучший ответ

Если не путаю в SysAdminUnit колнка ConnectionType отвечает за тип пользователя (0 обычный 1 портальный)

Те вам нужно менять тип соединения в таблице и для актуализации запускать хранимую процедуру tsp_ActualizeAdminUnitInRole

 

 

 

 

Пытались делать update таблицы SysAdminUnit?
Если такова возможность имеется, раньше нельзя было вроде.

Если не путаю в SysAdminUnit колнка ConnectionType отвечает за тип пользователя (0 обычный 1 портальный)

Те вам нужно менять тип соединения в таблице и для актуализации запускать хранимую процедуру tsp_ActualizeAdminUnitInRole

 

 

 

 

См., как это сделано в карточке пользователя UserPageV2 при смене типа после изменения значения в справочном поле.

Клиентский код в карточке:

changeUserConnectionType: function() {
	var dataSend = {
		userId: this.$Id,
		connectionType: this.$ConnectionType
	};
	var config = {
		serviceName: "AdministrationService",
		methodName: this.getChangeUserConnectionTypeMethodName(),
		data: dataSend
	};
	this.callService(config, this.onChangeUserConnectionType, this);
},
 
getChangeUserConnectionTypeMethodName: function() {
	return "ChangeUserConnectionType";
},

Серверный код веб-сервиса в схеме AdministrationServiceUsers:

/// <summary>
/// Modify user connection type on specified.
/// </summary>
/// <param name="userId">User Id.</param>
/// <param name="connectionType">User connection type 0 - General, 1 - SSP.</param>
/// <returns>Serialized object with properties Success, ExceptionMessage.</returns>
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "ChangeUserConnectionType", BodyStyle = WebMessageBodyStyle.Wrapped,
	RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public string ChangeUserConnectionType(string userId, string connectionType) {
	var exceptionMessage = string.Empty;
	var success = false;
	try {
var connectionTypeValue = Int32.Parse(connectionType);
var userIdValue = Guid.Parse(userId);
UserConnection.DBSecurityEngine.CheckCanExecuteOperation("CanManageAdministration");
RemoveUserInAllRoles(userIdValue);
AddUserInRole(userIdValue, GetParentRoleByConnectionType(connectionTypeValue));
changedValues = new Dictionary<string, object>
{
	{ "Id", userIdValue },
	{ "ConnectionType", connectionTypeValue },
};
if (IsUserConnectionTypeGeneral(connectionTypeValue)) {
	changedValues.Add("Active", 0);
}
SaveUser(null);
success = true;
	} catch (Exception e) {
exceptionMessage = e.Message;
	}
	var returnObject = new {
Success = success,
ExceptionMessage = exceptionMessage
	};
	return JsonConvert.SerializeObject(returnObject);
}

 

Войдите или зарегистрируйтесь, чтобы комментировать