Ejemplo n.º 1
0
        private void Login()
        {
            PerformTask(async() =>
            {
                var credentials = Credentials.UsernamePassword(Username, Password, false);
                await User.LoginAsync(credentials, Constants.Server.AuthServerUri);
                //var user = await User.LoginAsync(credentials, Constants.Server.AuthServerUri);
                try
                {
                    var permissionChange = new PermissionChange("*",
                                                                "*",
                                                                mayRead: true,
                                                                mayWrite: true,
                                                                mayManage: true);

                    User.Current.GetManagementRealm().Write(() =>
                    {
                        User.Current.GetManagementRealm().Add(permissionChange);
                    });
                    Settings.Local.SetValue("EMAIL", Username);
                }
                catch (Exception ex)
                {
                    DialogService.Alert("Error", ex.ToString());
                }
                App.Current.MainPage = new NavigationPage(new HomePage());
            }, onError: ex =>
            {
                // TODO: show alert.

                DialogService.Alert("Unable to login", ex.Message);
                HandleException(ex);
            }, progressMessage: "Logging in...");
        }
Ejemplo n.º 2
0
        private async Task GrantAccess(string url)
        {
            var mr = _user.GetManagementRealm();

            var change = new PermissionChange("*", url, mayRead: true, mayWrite: true, mayManage: false);

            var tcs = new TaskCompletionSource <object>();

            change.PropertyChanged += (sender, e) =>
            {
                if (e.PropertyName == nameof(PermissionChange.Status))
                {
                    tcs.TrySetResult(null);
                }
            };

            mr.Write(() => mr.Add(change));

            await tcs.Task;

            if (change.Status == ManagementObjectStatus.Error)
            {
                throw new Exception(change.StatusMessage);
            }
        }
Ejemplo n.º 3
0
        private static Task GrantPermissions(User alice, User bob, string realmUrl)
        {
            var managementRealm = alice.GetManagementRealm();
            var change          = new PermissionChange(bob.Identity, realmUrl, mayRead: true);

            managementRealm.Write(() =>
            {
                managementRealm.Add(change);
            });

            var tcs = new TaskCompletionSource <object>();

            change.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == nameof(PermissionChange.Status))
                {
                    tcs.TrySetResult(null);
                }
            };

            return(tcs.Task.Timeout(1000));
        }