Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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;
            }
        }