private void LaunchHomePage()
        {
            var homePage = new HomePage();
            var app      = new App.App(new AppOptions {
                IosExtension = true
            });

            ThemeManager.SetTheme(false, app.Resources);
            ThemeManager.ApplyResourcesToPage(homePage);
            if (homePage.BindingContext is HomeViewModel vm)
            {
                vm.StartLoginAction       = () => DismissViewController(false, () => LaunchLoginFlow());
                vm.StartRegisterAction    = () => DismissViewController(false, () => LaunchRegisterFlow());
                vm.StartSsoLoginAction    = () => DismissViewController(false, () => LaunchLoginSsoFlow());
                vm.StartEnvironmentAction = () => DismissViewController(false, () => LaunchEnvironmentFlow());
                vm.CloseAction            = () => CompleteRequest();
            }

            var navigationPage  = new NavigationPage(homePage);
            var loginController = navigationPage.CreateViewController();

            loginController.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
            PresentViewController(loginController, true, null);

            LogoutIfAuthed();
        }
예제 #2
0
        private void LaunchTwoFactorFlow(bool authingWithSso)
        {
            var twoFactorPage = new TwoFactorPage(authingWithSso);
            var app           = new App.App(new AppOptions {
                IosExtension = true
            });

            ThemeManager.SetTheme(false, app.Resources);
            ThemeManager.ApplyResourcesToPage(twoFactorPage);
            if (twoFactorPage.BindingContext is TwoFactorPageViewModel vm)
            {
                vm.TwoFactorAuthSuccessAction = () => DismissLockAndContinue();
                vm.StartSetPasswordAction     = () => DismissViewController(false, () => LaunchSetPasswordFlow());
                if (authingWithSso)
                {
                    vm.CloseAction = () => DismissViewController(false, () => LaunchLoginSsoFlow());
                }
                else
                {
                    vm.CloseAction = () => DismissViewController(false, () => LaunchLoginFlow());
                }
            }

            var navigationPage      = new NavigationPage(twoFactorPage);
            var twoFactorController = navigationPage.CreateViewController();

            twoFactorController.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
            PresentViewController(twoFactorController, true, null);
        }
        private void LaunchLoginSsoFlow()
        {
            var loginPage = new LoginSsoPage();
            var app       = new App.App(new AppOptions {
                IosExtension = true
            });

            ThemeManager.SetTheme(false, app.Resources);
            ThemeManager.ApplyResourcesToPage(loginPage);
            if (loginPage.BindingContext is LoginSsoPageViewModel vm)
            {
                vm.StartTwoFactorAction     = () => DismissViewController(false, () => LaunchTwoFactorFlow(true));
                vm.StartSetPasswordAction   = () => DismissViewController(false, () => LaunchSetPasswordFlow());
                vm.UpdateTempPasswordAction = () => DismissViewController(false, () => LaunchUpdateTempPasswordFlow());
                vm.SsoAuthSuccessAction     = () => DismissLockAndContinue();
                vm.CloseAction = () => DismissViewController(false, () => LaunchHomePage());
            }

            var navigationPage  = new NavigationPage(loginPage);
            var loginController = navigationPage.CreateViewController();

            loginController.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
            PresentViewController(loginController, true, null);

            LogoutIfAuthed();
        }
        private void InitApp()
        {
            // Init Xamarin Forms
            Forms.Init();

            if (ServiceContainer.RegisteredServices.Count > 0)
            {
                ServiceContainer.Reset();
            }
            iOSCoreHelpers.RegisterLocalServices();
            var deviceActionService = ServiceContainer.Resolve <IDeviceActionService>("deviceActionService");
            var messagingService    = ServiceContainer.Resolve <IMessagingService>("messagingService");

            ServiceContainer.Init(deviceActionService.DeviceUserAgent,
                                  Bit.Core.Constants.iOSAutoFillClearCiphersCacheKey, Bit.Core.Constants.iOSAllClearCipherCacheKeys);
            if (!_initedAppCenter)
            {
                iOSCoreHelpers.RegisterAppCenter();
                _initedAppCenter = true;
            }
            iOSCoreHelpers.Bootstrap();
            var app = new App.App(new AppOptions {
                IosExtension = true
            });

            ThemeManager.SetTheme(false, app.Resources);
            iOSCoreHelpers.AppearanceAdjustments();
            _nfcDelegate = new Core.NFCReaderDelegate((success, message) =>
                                                      messagingService.Send("gotYubiKeyOTP", message));
            iOSCoreHelpers.SubscribeBroadcastReceiver(this, _nfcSession, _nfcDelegate);
        }
        private void LaunchUpdateTempPasswordFlow()
        {
            var updateTempPasswordPage = new UpdateTempPasswordPage();
            var app = new App.App(new AppOptions { IosExtension = true });
            ThemeManager.SetTheme(app.Resources);
            ThemeManager.ApplyResourcesToPage(updateTempPasswordPage);
            if (updateTempPasswordPage.BindingContext is UpdateTempPasswordPageViewModel vm)
            {
                vm.UpdateTempPasswordSuccessAction = () => DismissViewController(false, () => LaunchHomePage());
                vm.LogOutAction = () => DismissViewController(false, () => LaunchHomePage());
            }

            var navigationPage = new NavigationPage(updateTempPasswordPage);
            var updateTempPasswordController = navigationPage.CreateViewController();
            updateTempPasswordController.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
            PresentViewController(updateTempPasswordController, true, null);
        }
        private void LaunchRegisterFlow()
        {
            var registerPage = new RegisterPage(null);
            var app = new App.App(new AppOptions { IosExtension = true });
            ThemeManager.SetTheme(app.Resources);
            ThemeManager.ApplyResourcesToPage(registerPage);
            if (registerPage.BindingContext is RegisterPageViewModel vm)
            {
                vm.RegistrationSuccess = () => DismissViewController(false, () => LaunchLoginFlow(vm.Email));
                vm.CloseAction = () => DismissViewController(false, () => LaunchHomePage());
            }

            var navigationPage = new NavigationPage(registerPage);
            var loginController = navigationPage.CreateViewController();
            loginController.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
            PresentViewController(loginController, true, null);
        }
        private void LaunchEnvironmentFlow()
        {
            var environmentPage = new EnvironmentPage();
            var app = new App.App(new AppOptions { IosExtension = true });
            ThemeManager.SetTheme(app.Resources);
            ThemeManager.ApplyResourcesToPage(environmentPage);
            if (environmentPage.BindingContext is EnvironmentPageViewModel vm)
            {
                vm.SubmitSuccessAction = () => DismissViewController(false, () => LaunchHomePage());
                vm.CloseAction = () => DismissViewController(false, () => LaunchHomePage());
            }

            var navigationPage = new NavigationPage(environmentPage);
            var loginController = navigationPage.CreateViewController();
            loginController.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
            PresentViewController(loginController, true, null);
        }
예제 #8
0
        private void LaunchSetPasswordFlow()
        {
            var setPasswordPage = new SetPasswordPage();
            var app             = new App.App(new AppOptions {
                IosExtension = true
            });

            ThemeManager.SetTheme(false, app.Resources);
            ThemeManager.ApplyResourcesToPage(setPasswordPage);
            if (setPasswordPage.BindingContext is SetPasswordPageViewModel vm)
            {
                vm.SetPasswordSuccessAction = () => DismissLockAndContinue();
                vm.CloseAction = () => DismissViewController(false, () => LaunchHomePage());
            }

            var navigationPage        = new NavigationPage(setPasswordPage);
            var setPasswordController = navigationPage.CreateViewController();

            setPasswordController.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
            PresentViewController(setPasswordController, true, null);
        }
        public void PromptSSO()
        {
            var loginPage = new LoginSsoPage();
            var app       = new App.App(new AppOptions {
                IosExtension = true
            });

            ThemeManager.SetTheme(app.Resources);
            ThemeManager.ApplyResourcesToPage(loginPage);
            if (loginPage.BindingContext is LoginSsoPageViewModel vm)
            {
                vm.SsoAuthSuccessAction = () => DoContinue();
                vm.CloseAction          = Cancel;
            }

            var navigationPage  = new NavigationPage(loginPage);
            var loginController = navigationPage.CreateViewController();

            loginController.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
            PresentViewController(loginController, true, null);
        }
예제 #10
0
        private void LaunchLoginFlow(string email = null)
        {
            var loginPage = new LoginPage(email);
            var app       = new App.App(new AppOptions {
                IosExtension = true
            });

            ThemeManager.SetTheme(false, app.Resources);
            ThemeManager.ApplyResourcesToPage(loginPage);
            if (loginPage.BindingContext is LoginPageViewModel vm)
            {
                vm.StartTwoFactorAction = () => DismissViewController(false, () => LaunchTwoFactorFlow(false));
                vm.LogInSuccessAction   = () => DismissLockAndContinue();
                vm.CloseAction          = () => DismissViewController(false, () => LaunchHomePage());
            }

            var navigationPage  = new NavigationPage(loginPage);
            var loginController = navigationPage.CreateViewController();

            loginController.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
            PresentViewController(loginController, true, null);
        }
예제 #11
0
        public static void InitApp <T>(T rootController,
                                       string clearCipherCacheKey,
                                       NFCNdefReaderSession nfcSession,
                                       out NFCReaderDelegate nfcDelegate,
                                       out IAccountsManager accountsManager)
            where T : UIViewController, IAccountsManagerHost
        {
            Forms.Init();

            if (ServiceContainer.RegisteredServices.Count > 0)
            {
                ServiceContainer.Reset();
            }
            RegisterLocalServices();
            var deviceActionService = ServiceContainer.Resolve <IDeviceActionService>("deviceActionService");
            var messagingService    = ServiceContainer.Resolve <IMessagingService>("messagingService");

            ServiceContainer.Init(deviceActionService.DeviceUserAgent,
                                  clearCipherCacheKey,
                                  Bit.Core.Constants.iOSAllClearCipherCacheKeys);
            InitLogger();
            Bootstrap();

            var appOptions = new AppOptions {
                IosExtension = true
            };
            var app = new App.App(appOptions);

            ThemeManager.SetTheme(app.Resources);

            AppearanceAdjustments();

            nfcDelegate = new Core.NFCReaderDelegate((success, message) =>
                                                     messagingService.Send("gotYubiKeyOTP", message));
            SubscribeBroadcastReceiver(rootController, nfcSession, nfcDelegate);

            accountsManager = ServiceContainer.Resolve <IAccountsManager>("accountsManager");
            accountsManager.Init(() => appOptions, rootController);
        }
예제 #12
0
        private async Task ContinueOnAsync()
        {
            Tuple <SendType, string, byte[], string> createSend = null;

            if (_context.ProviderType == UTType.Data)
            {
                var(filename, fileBytes) = await LoadDataBytesAsync();

                createSend = new Tuple <SendType, string, byte[], string>(SendType.File, filename, fileBytes, null);
            }
            else if (_context.ProviderType == UTType.PlainText)
            {
                createSend = new Tuple <SendType, string, byte[], string>(SendType.Text, null, null, LoadText());
            }

            var appOptions = new AppOptions
            {
                IosExtension = true,
                CreateSend   = createSend,
                CopyInsteadOfShareAfterSaving = true
            };
            var sendAddEditPage = new SendAddEditPage(appOptions)
            {
                OnClose     = () => CompleteRequest(),
                AfterSubmit = () => CompleteRequest()
            };

            var app = new App.App(appOptions);

            ThemeManager.SetTheme(app.Resources);
            ThemeManager.ApplyResourcesToPage(sendAddEditPage);

            var navigationPage        = new NavigationPage(sendAddEditPage);
            var sendAddEditController = navigationPage.CreateViewController();

            sendAddEditController.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
            PresentViewController(sendAddEditController, true, null);
        }
예제 #13
0
파일: Program.cs 프로젝트: NBakulin/DBShell
        static Program()
        {
            System.Data.Entity.Database.SetInitializer(new DropCreateDatabaseAlways <DefaultContext>());

            ContainerBuilder containerBuilder = new ContainerBuilder();

            containerBuilder
            .RegisterGeneric(typeof(EntityFrameworkRepository <>))
            .As(typeof(IRepository <>))
            .SingleInstance();


            containerBuilder
            .RegisterType <DatabaseService>()
            .As <IDatabaseService>()
            .SingleInstance();

            containerBuilder
            .RegisterType <TableService>()
            .As <ITableService>()
            .SingleInstance();

            containerBuilder
            .RegisterType <AttributeService>()
            .As <IAttributeService>()
            .SingleInstance();

            containerBuilder
            .RegisterType <LInkService>()
            .As <ILinkService>()
            .SingleInstance();

            containerBuilder
            .RegisterType <DeployService>()
            .As <IDeployService>()
            .SingleInstance();


            containerBuilder
            .RegisterType <AttributeSqlExpressionProvider>()
            .As <IAttributeSqlExpressionProvider>();

            containerBuilder
            .RegisterType <DatabaseSqlExpressionProvider>()
            .As <IDatabaseSqlExpressionProvider>();

            containerBuilder
            .RegisterType <TableSqlExpressionProvider>()
            .As <ITableSqlExpressionProvider>();

            containerBuilder
            .RegisterType <LinkSqlExpressionProvider>()
            .As <ILinkSqlExpressionProvider>();

            containerBuilder
            .RegisterType <DeploySqlExpressionProvider>()
            .As <IDeploySqlExpressionProvider>();

            containerBuilder
            .RegisterType <CRUDsqlExpressionProvider>()
            .As <ICRUDsqlExpressionProvider>();


            containerBuilder
            .RegisterType <SqlExpressionExecutor>()
            .As <ISqlExpressionExecutor>();

            containerBuilder
            .RegisterInstance(new DefaultContext())
            .As <DbContext>()
            .SingleInstance();


            containerBuilder
            .RegisterType <AttributeValidator>()
            .As <IAttributeValidator>();

            containerBuilder
            .RegisterType <DatabaseValidator>()
            .As <IDatabaseValidator>();

            containerBuilder
            .RegisterType <TableValidator>()
            .As <ITableValidator>();

            containerBuilder
            .RegisterType <LinkValidator>()
            .As <ILinkValidator>();


            containerBuilder
            .RegisterType <CRUD>()
            .As <ICRUD>();

            containerBuilder
            .RegisterType <App.App>()
            .WithParameter(
                "connectionString",
                parameterValue: ConfigurationManager.ConnectionStrings["DefaultContext"].ConnectionString);

            Container = containerBuilder.Build();

            App = Container.Resolve <App.App>();
        }
예제 #14
0
 public MainForm(App.App app)
 {
     _app = app;
     InitializeComponent();
 }