Как программно изменить тип Пользователя
Коллеги, добрый день!
Вопрос по функционалу (переключить пользователя из сотрудника в портального пользователя и наоборот)
Как написано в релизе <https://academy.terrasoft.ru/documents/bpmonline-release-notes-7-12-2>: Появилась возможность изменять тип пользователя после его создания. Благодаря этому упрощен процесс перевода пользователей портала в сотрудники компании и наоборот.
Подскажите, пожалуйста, как кодом на C# можно изменять тип пользователя после его создания в рамках архитектурной эко-системы BPM'Online?
(Как PROGRAMMATICALLY изменять тип пользователя после его создания?)
Заранее спасибо!
Нравится
Если не путаю в 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);
}