public override void Process() { Remoting.SaveSingle rem; if (string.IsNullOrEmpty(_user.Rev)) TriggerOnActionChanged(EngineActionType.CreatingGroup, true); else TriggerOnActionChanged(EngineActionType.ModifyingGroup, true); try { Transitions.User txUser = new Transitions.User(); rem = new Remoting.SaveSingle(_db, txUser.Transition(_user), _sendTimeout, _receiveTimeout, _sendBufferSize, _receiveBufferSize); } catch (Exception e) { Logger.Storage.Error("An exception occurred while instantiating the Transactions.Tasks.Remoting.SaveSingle object.", e); throw; } rem.OnComplete += delegate(Remoting.Base sender, ICommandReply reply) { if (!((Commands.PutDocumentReply)reply).Ok) User = null; else { User = new Security.User(_user.Id, ((Commands.PutDocumentReply)reply).Rev, null, _user.FirstName, _user.MiddleName, _user.LastName, _user.Groups, _user.IsSuperuser); User.SetEncryptedPassword(_user.Password); } TriggerOnComplete(reply); }; rem.OnError += delegate(Remoting.Base sender, string message, Exception exception) { TriggerOnError(message, exception); }; rem.OnProgress += delegate(Remoting.Base sender, OpenDMS.Networking.Protocols.Tcp.DirectionType direction, int packetSize, decimal sendPercentComplete, decimal receivePercentComplete) { TriggerOnProgress(direction, packetSize, sendPercentComplete, receivePercentComplete); }; rem.OnTimeout += delegate(Remoting.Base sender) { TriggerOnTimeout(); }; rem.Process(); }
public Security.User Transition(Model.Document document) { List<string> groups = null; try { if (document["Groups"] != null) { groups = new List<string>(); JArray jarray = (JArray)document["Groups"]; for (int i = 0; i < jarray.Count; i++) { string groupName = jarray[i].Value<string>(); if (groupName.StartsWith("group-")) groupName = groupName.Substring(6); groups.Add(groupName); } } Security.User user = new Security.User(document.Id, document.Rev, null, document["FirstName"].Value<string>(), document["MiddleName"].Value<string>(), document["LastName"].Value<string>(), groups, document["Superuser"].Value<bool>()); user.SetEncryptedPassword(document["Password"].Value<string>()); return user; } catch (Exception e) { Logger.Storage.Error("An exception occurred while attempting to parse the document.", e); throw; } }