Коллеги, добрый день!
Вопрос по функционалу (переключить пользователя из сотрудника в портального пользователя и наоборот)
Как написано в релизе <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); }