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..."); }
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); } }
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)); }