Beispiel #1
0
 /// <summary>
 /// Initialize a new instance of MSToolKit.Core.Authentication.SignInManager
 /// </summary>
 /// <param name="userManager">
 /// An instance for MSToolKit.Core.Authentication.Abstraction.IUserManager.
 /// </param>
 /// <param name="authenticationOptions">
 /// MSToolKit.Core.Authentication.Options.AuthenticationOptions,
 /// that configures the behavior of the current instance.
 /// </param>
 public SignInManager(
     IUserManager <TUser> userManager,
     Options.AuthenticationOptions authenticationOptions)
 {
     this.userManager   = userManager;
     this.signInOptions = authenticationOptions.SignIn;
 }
 public void SetSignInPolicy(SignInOptions opts)
 {
     lock (_lock)
     {
         PolicyOptions.SignIn = opts;
     }
 }
        async void SignIn(SignInOptions options, bool byUser)
        {
            if (context.ChatClient.IsLoggedIn)
            {
                return;
            }

            busyIndicator.IsBusy = true;

            Exception ex = null;

            await Task.Run(() =>
            {
                clientAvailable.Wait();
                SettingsProvider.Current.Load();
                var loginHelper = new LoginHelper(context.PluginLoader.AuthenticationProvider, SettingsProvider.Current.Settings, context.ChatClient);
                ExceptionMonster.EatTheException(() => loginHelper.Login(options), "logging in", out ex);
            });

            busyIndicator.IsBusy = false;

            if (ex != null && byUser)
            {
                MessageBox.Show(ex.Message, Translation.Instance.Error, MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            OnSignIn(options);
        }
Beispiel #4
0
        private static async Task <int> OnSignIn(SignInOptions signInOptions)
        {
            try
            {
                var devAccount = await ToolAuthentication.SignInAsync((DevAccountSource)signInOptions.AccountSource, signInOptions.UserName);

                Console.WriteLine($"Developer account {devAccount.Name} has successfully signed in.");
                DisplayDevAccount(devAccount, "\t");
                return(0);
            }
            catch (HttpRequestException ex)
            {
                Console.WriteLine("Error: signin failed");
                if (ex.Message.Contains(Convert.ToString((int)HttpStatusCode.Unauthorized)))
                {
                    Console.WriteLine("Unable to authorize this account with Xbox Live. Please check your account.");
                }
                else
                {
                    Console.WriteLine(ex.Message);
                }

                return(-1);
            }
        }
Beispiel #5
0
        private static async Task <int> Main(string[] args)
        {
            int exitCode = 0;

            try
            {
                string        invokedVerb   = string.Empty;
                SignInOptions signInOptions = null;

                // Only assign the option and verb here, as the commandlineParser doesn't support async callback yet.
                var result = Parser.Default.ParseArguments <SignInOptions, SignOutOptions, ShowOptions>(args)
                             .WithParsed <SignInOptions>(options =>
                {
                    invokedVerb   = "signin";
                    signInOptions = options;
                })
                             .WithParsed <SignOutOptions>(options => exitCode = OnSignOut())
                             .WithParsed <ShowOptions>(options => exitCode    = OnShow())
                             .WithNotParsed(err => exitCode = -1);

                if (invokedVerb == "signin" && signInOptions != null)
                {
                    exitCode = await OnSignIn(signInOptions);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: unexpected error found.");
                Console.WriteLine(ex.Message);
                exitCode = -1;
            }

            return(exitCode);
        }
Beispiel #6
0
 public static LoginResponse Generate(SignInOptions signInOptions)
 {
     return(new LoginResponse
     {
         RequireConfirmedEmail = signInOptions.RequireConfirmedEmail,
         RequireConfirmedPhoneNumber = signInOptions.RequireConfirmedPhoneNumber,
     });
 }
Beispiel #7
0
 public IdentityOptions()
 {
     ClaimsIdentity = new ClaimsIdentityOptions();
     User           = new UserOptions();
     Password       = new PasswordOptions();
     Lockout        = new LockoutOptions();
     SignIn         = new SignInOptions();
 }
 public AuthenticationOptions(
     UserOptions userOptions,
     PasswordOptions passwordOptions,
     SignInOptions signInOptions)
 {
     this.User     = userOptions;
     this.Password = passwordOptions;
     this.SignIn   = signInOptions;
 }
Beispiel #9
0
        private void SetSignInSharedPolicy(SignInPolicy policy, SignInOptions shared = null)
        {
            if (shared == null)
            {
                shared = _sharedPolicyAccessor.GetPolicy().SignIn;
            }

            shared.RequireConfirmedEmail       = policy.RequireConfirmedEmail;
            shared.RequireConfirmedPhoneNumber = policy.RequireConfirmedPhoneNumber;

            _sharedPolicyAccessor.SetSignInPolicy(shared);
        }
Beispiel #10
0
        private void SignInControl_LoginInitiated(object sender, Squiggle.UI.Controls.LogInEventArgs e)
        {
            var signInOptions = new SignInOptions()
            {
                Username    = e.Username,
                Password    = e.Password,
                Domain      = e.Domain,
                DisplayName = e.DisplayName,
                GroupName   = e.GroupName
            };

            SignIn(signInOptions, true);
        }
Beispiel #11
0
        void OnSignIn(SignInOptions signInOptions)
        {
            CreateMonitor();

            VisualStateManager.GoToState(chatControl, "OnlineState", true);
            autoSignout.OnSignIn(signInOptions);

            foreach (var window in chatWindows)
            {
                window.Enabled = true;
            }

            CheckForUpdates();
        }
Beispiel #12
0
        /// <summary>
        /// Signs in using the specified <see cref="SignInOptions"/>.
        /// </summary>
        /// <param name="signInOptions">The <see cref="SignInOptions"/> to use.</param>
        /// <remarks>This function will apply <see cref="Prompt.ForceLogin"/> because
        /// the Microsoft Identity Platform currently does not support real
        /// logout, so we have to force a login prompt.
        /// </remarks>
        public async Task SignIn(SignInOptions signInOptions)
        {
            await SignIn(c =>
            {
                var builder        = c.AcquireTokenInteractive(
                    _currentScopes = signInOptions?.Scopes != null ?
                                     _currentScopes.Union(signInOptions.Scopes) :
                                     _currentScopes)
                                     .WithPrompt(Prompt.ForceLogin);

#if MONOANDROID
                builder = builder.WithParentActivityOrWindow(Xamarin.Essentials.Platform.CurrentActivity);
#endif
                return(builder);
            }).ConfigureAwait(false);
        }
Beispiel #13
0
        public void Login(SignInOptions signInOptions)
        {
            var credential = new NetworkCredential(signInOptions.Username, signInOptions.Password, signInOptions.Domain);

            AuthenticationResult result = authenticationProvider.Authenticate(credential);

            if (result.Status == AuthenticationStatus.Failure)
            {
                throw new AuthenticationException(result.Status, Translation.Instance.Authentication_Failed);
            }
            if (result.Status == AuthenticationStatus.ServiceUnavailable)
            {
                throw new AuthenticationException(result.Status, Translation.Instance.Authentication_ServiceUnavailable);
            }

            var          optionsFactory = new LoginOptionsFactory(settings, result.UserDetails, signInOptions);
            LoginOptions clientOptions  = optionsFactory.CreateInstance();

            client.Login(clientOptions);
        }
Beispiel #14
0
        private async void Window_Loaded(object sender, RoutedEventArgs e)
        {
            if (App.RunInBackground)
            {
                this.Hide();
            }

            chatWindows = new ChatWindowCollection();

            var settingsProvider      = SettingsProvider.Current;
            SquiggleSettings settings = settingsProvider.Settings;

            settings.ContactSettings.ContactGroups.FlushItems();
            settingsProvider.Save();

            HistoryManager history = new HistoryManagerFactory().CreateInstance();

            context = new SquiggleContextFactory(new PluginLoaderFactory(),
                                                 history,
                                                 this,
                                                 settings.ConnectionSettings.ClientID).CreateInstance();
            context.PluginLoader.LoadAll(context);

            SetupControls();

            TrayPopup.Instance.Enabled  = SettingsProvider.Current.Settings.GeneralSettings.ShowPopups;
            AudioAlert.Instance.Enabled = SettingsProvider.Current.Settings.GeneralSettings.AudioAlerts;

            chatControl.SignIn.LoadSettings(settings);

            var client = context.ChatClient;

            client.EnableLogging = settings.GeneralSettings.EnableStatusLogging;
            client.ChatStarted  += client_ChatStarted;
            client.BuddyUpdated += client_BuddyUpdated;
            client.BuddyOnline  += client_BuddyOnline;
            client.BuddyOffline += client_BuddyOffline;

            clientViewModel = new ClientViewModel(client);
            clientViewModel.CancelUpdateCommand = new RelayCommand <object>(CancelUpdateCommand_Execute);
            DataContext = chatControl.ChatContext = clientViewModel;

            autoSignout = new NetworkSignout(this.Dispatcher, options => SignIn(options, byUser: false), () => SignOut(byUser: false));

            var singleSignOn = chatControl.SignIn.lblSingleSignOn.Visibility == Visibility.Visible;

            if (singleSignOn || (settings.PersonalSettings.RememberMe && settings.PersonalSettings.AutoSignMeIn))
            {
                var signInOptions = new SignInOptions()
                {
                    Username = settings.PersonalSettings.Username,
                    Password = settings.PersonalSettings.Password,
                    Domain   = settings.PersonalSettings.Domain
                };
                await Task.Delay(5.Seconds());

                SignIn(signInOptions, false);
            }
            else if (settings.PersonalSettings.RememberMe)
            {
                chatControl.SignIn.RememberMe = true;
            }
        }
Beispiel #15
0
 public LoginOptionsFactory(SquiggleSettings settings, UserDetails userInfo, SignInOptions signInOptions)
 {
     this.settings      = settings;
     this.userInfo      = userInfo;
     this.signInOptions = signInOptions;
 }
Beispiel #16
0
 public void SignIn(SignInOptions options)
 {
     SignIn(options, true);
 }
 private static void SetSignInOptions(SignInOptions identityOptionsSignIn, SiteSettings siteSettings)
 {
     identityOptionsSignIn.RequireConfirmedEmail       = siteSettings.RequireConfirmedEmail;
     identityOptionsSignIn.RequireConfirmedPhoneNumber = siteSettings.RequireConfirmedPhoneNumber;
 }
 private static void setSignInOptions(SignInOptions identityOptionsSignIn, BehlogSetting setting)
 {
     identityOptionsSignIn.RequireConfirmedEmail = setting.EnableEmailConfirmation;
 }
Beispiel #19
0
 public void OnSignIn(SignInOptions signInOptions)
 {
     this.signInOptions = signInOptions;
     loggedIn           = true;
 }
Beispiel #20
0
 private static void setSignInOptions(SignInOptions identityOptionsSignIn, SiteSettings siteSettings)
 {
     identityOptionsSignIn.RequireConfirmedEmail = siteSettings.EnableEmailConfirmation;
 }
Beispiel #21
0
        public static IServiceCollection AddCustomIdentity(
            this IServiceCollection services,
            PasswordOptions passwordPolicies,
            LockoutPolicies lockoutPolicies,
            SignInOptions signinPolicies)
        {
            services
            .AddIdentity <AppUser, AppRole>()
            .AddDefaultTokenProviders();

            services.Configure <IdentityOptions>(opts =>
            {
                // Password settings.
                PasswordOptions passwordOpts        = opts.Password;
                passwordOpts.RequireDigit           = passwordPolicies.RequireDigit;
                passwordOpts.RequiredLength         = passwordPolicies.RequiredLength;
                passwordOpts.RequiredUniqueChars    = passwordPolicies.RequiredUniqueChars;
                passwordOpts.RequireNonAlphanumeric = passwordPolicies.RequireNonAlphanumeric;
                passwordOpts.RequireLowercase       = passwordPolicies.RequireLowercase;
                passwordOpts.RequireUppercase       = passwordPolicies.RequireUppercase;

                // Lockout settings.
                LockoutOptions lockoutOpts          = opts.Lockout;
                lockoutOpts.AllowedForNewUsers      = lockoutPolicies.AllowedForNewUsers;
                lockoutOpts.MaxFailedAccessAttempts = lockoutPolicies.MaxFailedAccessAttempts;
                lockoutOpts.DefaultLockoutTimeSpan  = TimeSpan.FromMinutes(lockoutPolicies.DefaultLockoutInMinutes);

                // User settings.
                //options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@";
                opts.User.RequireUniqueEmail = true;

                // SignIn settings.
                SignInOptions signinOpts               = opts.SignIn;
                signinOpts.RequireConfirmedEmail       = signinPolicies.RequireConfirmedEmail;
                signinOpts.RequireConfirmedPhoneNumber = signinPolicies.RequireConfirmedPhoneNumber;
            });

            //services.ConfigureApplicationCookie(options =>
            //{
            //    // Cookie settings.
            //    // options.LoginPath = string.Empty;
            //    // options.LogoutPath = string.Empty;
            //    // options.AccessDeniedPath = string.Empty;
            //    options.Events = new CookieAuthenticationEvents
            //    {
            //        OnRedirectToLogin = ctx =>
            //        {
            //            if (ctx.Request.Path.StartsWithSegments("/api") &&
            //                ctx.Response.StatusCode == (int)HttpStatusCode.OK)
            //            {
            //                ctx.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
            //            }
            //            else
            //            {
            //                ctx.Response.Redirect(ctx.RedirectUri);
            //            }

            //            return Task.CompletedTask;
            //        }
            //    };
            //});

            return(services);
        }