public void Handle(UserManagementMessage.Create message)
        {
            if (!IsAdmin(message.Principal))
            {
                ReplyUnauthorized(message);
                return;
            }
            var userData = CreateUserData(message);

            BeginReadUserDetails(message.LoginName, read =>
            {
                if (read.Events.Count() > 0)
                {
                    var data = read.Events[read.Events.Length - 1].Event.Data.ParseJson <UserData>();
                    if (VerifyPassword(message.Password, data))
                    {
                        ReplyUpdated(message);
                        return;
                    }
                    ReplyConflict(message);
                    return;
                }
                WriteStreamAcl(
                    message, message.LoginName,
                    () => WriteUserEvent(message, userData, "$UserCreated", read.LastEventNumber,
                                         () => WriteUsersStreamEvent(userData.LoginName, completed => WriteUsersStreamCompleted(completed, message))));
            });
        }
Пример #2
0
        private void PostUser(HttpEntityManager http)
        {
            if (_httpForwarder.ForwardRequest(http))
            {
                return;
            }
            var envelope = CreateReplyEnvelope <UserManagementMessage.UpdateResult>(
                http, configurator: (codec, result) =>
            {
                var configuration = AutoConfigurator(codec, result);
                return(configuration.Code == HttpStatusCode.OK
                                   ? configuration.SetCreated(
                           MakeUrl(http, "/users/" + Uri.EscapeDataString(result.LoginName)))
                                   : configuration);
            });

            http.ReadTextRequestAsync(
                (o, s) =>
            {
                var data    = http.RequestCodec.From <PostUserData>(s);
                var message = new UserManagementMessage.Create(
                    envelope, http.User, data.LoginName, data.FullName, data.Groups, data.Password);
                Publish(message);
            }, x => Log.DebugException(x, "Reply Text Content Failed."));
        }
Пример #3
0
        public void Handle(UserManagementMessage.Create message)
        {
            if (!DemandAdmin(message))
            {
                return;
            }
            var userData = CreateUserData(message);

            WriteStreamAcl(
                message, message.LoginName,
                () => WriteUserEvent(message, userData, "$UserCreated", ExpectedVersion.NoStream));
        }
 private UserData CreateUserData(UserManagementMessage.Create message)
 {
     return(CreateUserData(message.LoginName, message.FullName, message.Groups, message.Password));
 }