Esempio n. 1
0
        private void PerformLogin()
        {
            AuthorizationInfo info = new AuthorizationInfo(UserName, Password);

            Task <User> validateUserTask = Task.Factory.StartNew <User>(() =>
            {
                PasswordHelper passwordHelper = new PasswordHelper();
                string hashedPassword         = passwordHelper.CreateBase64Hash(Password);

                return(dataService.ValidateCredentials(UserName, hashedPassword));
            }, TaskScheduler.Default);

            Task finishTask = validateUserTask.ContinueWith((t) =>
            {
                IsBusy    = false;
                User user = t.Result;

                if (user != null)
                {
                    dataService.UserLoggedIn(user);
                    CurrentUser.Assign(user);
                    eventAggregator.GetEvent <LoginSucceededEvent>().Publish(info);
                }
                else
                {
                    eventAggregator.GetEvent <LoginFailedEvent>().Publish(info);
                    Notify("Authorization failed. Invalid user name and(or) password.", NotificationType.Error);
                }
            }, TaskScheduler.FromCurrentSynchronizationContext());
        }
        public override void OnSuccessCommand(object parameter)
        {
            if (!ValidateBeforeSave(parameter))
            {
                Notify("Please fill all required fields", NotificationType.Warning);
                return;
            }

            if (dataService.UserExists(UserName))
            {
                Notify("Registration failed. User with given name already exists. Name=" + UserName, NotificationType.Error);
                return;
            }

            IsBusy = true;

            Task <bool> createUserTask = Task.Factory.StartNew <bool>(() =>
            {
                PasswordHelper passwordHelper = new PasswordHelper();
                string hashedPassword         = passwordHelper.CreateBase64Hash(Password);

                User newUser = new User()
                {
                    UserName = this.UserName,
                    Password = hashedPassword,
                    Settings = new UserSettings(null)
                };

                return(dataService.SaveUser(newUser));
            }, TaskScheduler.Default);

            Task <bool> createUserSettingsTask = createUserTask.ContinueWith <bool>((r) =>
            {
                if (!r.Result)
                {
                    return(false);
                }
                else
                {
                    //TODO
                    return(true);
                }
            }, CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.Default);

            Task finishTask = createUserSettingsTask.ContinueWith((t) =>
            {
                IsBusy = false;

                bool success = t.Result;

                if (success)
                {
                    Notify("New user has been successfully created.", NotificationType.Success);
                }
                else
                {
                    Notify("Can't create new user (internal error). Please see log for details.", NotificationType.Error);
                }
                DialogResult = true;
            }, TaskScheduler.FromCurrentSynchronizationContext());
        }