public void QuickRegistrationNewUser(ButtonClickEvent e, SingleNode <QuickRegistrationButtonComponent> node, [JoinByScreen] SingleNode <RegistrationScreenComponent> screen, [JoinAll] SecuredClientSessionNode clientSession, [JoinAll] Optional <SingleNode <SteamMarkerComponent> > steam, [JoinAll] Optional <SubscribeCheckboxNode> subscribeCheckbox)
        {
            byte[] digest = PasswordSecurityUtils.GetDigest(Path.GetRandomFileName());
            RequestRegisterUserEvent eventInstance = new RequestRegisterUserEvent {
                Uid   = string.Empty,
                Email = string.Empty,
                HardwareFingerprint     = HardwareFingerprintUtils.HardwareFingerprint,
                EncryptedPasswordDigest = PasswordSecurityUtils.RSAEncryptAsString(clientSession.sessionSecurityPublic.PublicKey, digest),
                Steam             = steam.IsPresent(),
                Subscribed        = !subscribeCheckbox.IsPresent() || subscribeCheckbox.Get().checkbox.IsChecked,
                QuickRegistration = true
            };

            base.ScheduleEvent(eventInstance, clientSession);
            clientSession.Entity.AddComponent(new AutoLoginTokenAwaitingComponent(digest));
            screen.component.LockScreen(true);
        }
        public void RegisterNewUser(ButtonClickEvent e, SingleNode <FinishRegistrationButtonComponent> node, [JoinByScreen] SingleNode <RegistrationScreenComponent> screen, [JoinAll] SecuredClientSessionNode clientSession, [JoinByUser] Optional <SingleNode <UserIncompleteRegistrationComponent> > user, [JoinAll] Optional <SingleNode <SteamMarkerComponent> > steam, [JoinAll] Optional <SubscribeCheckboxNode> subscribeCheckbox)
        {
            RegistrationScreenComponent component = screen.component;

            byte[] digest = PasswordSecurityUtils.GetDigest(component.Password);
            RequestRegisterUserEvent eventInstance = new RequestRegisterUserEvent {
                Uid = component.Uid,
                HardwareFingerprint     = HardwareFingerprintUtils.HardwareFingerprint,
                EncryptedPasswordDigest = PasswordSecurityUtils.RSAEncryptAsString(clientSession.sessionSecurityPublic.PublicKey, digest),
                Email      = component.Email,
                Steam      = steam.IsPresent(),
                Subscribed = !subscribeCheckbox.IsPresent() || subscribeCheckbox.Get().checkbox.IsChecked
            };
            EventBuilder builder = base.NewEvent(eventInstance).Attach(clientSession);

            if (user.IsPresent())
            {
                builder.Attach(user.Get());
            }
            builder.Schedule();
            clientSession.Entity.AddComponent(new AutoLoginTokenAwaitingComponent(digest));
            screen.component.LockScreen(true);
        }