public RegisteredAppModel( AppExchangeInfo appInfo, IEnumerable <ContainerPermissions> containers, AppPermissions?appPermissions) { AppInfo = appInfo; if (appPermissions.HasValue) { AppPermissions = appPermissions.Value; } Containers = containers.Select( x => new ContainerPermissionsModel { Access = new PermissionSetModel { Read = x.Access.Read, Insert = x.Access.Insert, Update = x.Access.Update, Delete = x.Access.Delete, ManagePermissions = x.Access.ManagePermissions }, ContainerName = Utilities.FormatContainerName(x.ContName, appInfo.Id) }).ToObservableRangeCollection(); Containers = Containers.OrderBy(c => c.ContainerName).ToObservableRangeCollection(); CircleColor = Utilities.GetRandomColor(AppName.Length); }
public static async Task <(uint, string)> GenerateEncodedAuthRequest( bool appContainerPermission, List <ContainerPermissionsModel> containers, [Optional] AppExchangeInfo appExchangeInfo) { var authReq = new AuthReq { App = string.IsNullOrWhiteSpace(appExchangeInfo.Name) ? Utilities.GetAppExchangeInfo() : appExchangeInfo, Containers = new List <ContainerPermissions>() }; authReq.AppContainer = appContainerPermission; foreach (var item in containers) { if (item.IsRequested) { authReq.Containers.Add(new ContainerPermissions { ContName = item.ContName, Access = new PermissionSet { Read = item.Access.Read, Insert = item.Access.Insert, Delete = item.Access.Delete, Update = item.Access.Update, ManagePermissions = item.Access.ManagePermissions, } }); } } var encodedAuthRequest = await Session.EncodeAuthReqAsync(authReq); return(encodedAuthRequest); }
public async Task <string> CreateContainerRequestAsync( List <ContainerPermissionsModel> containers, [Optional] AppExchangeInfo appExchangeInfo) { var(reqId, encodedReq) = await RequestHelper.GenerateEncodedContainerRequest(containers, appExchangeInfo); return(encodedReq); }
public RegisteredAppModel(AppExchangeInfo appInfo, IEnumerable <ContainerPermissions> containers) { AppInfo = appInfo; Containers = containers.Select( x => new ContainerPermissionsModel { Access = new PermissionSetModel { Read = x.Access.Read, Insert = x.Access.Insert, Update = x.Access.Update, Delete = x.Access.Delete, ManagePermissions = x.Access.ManagePermissions }, ContainerName = x.ContName }).ToObservableRangeCollection(); }
private async Task SendRequest() { try { if (string.IsNullOrWhiteSpace(AppName) || string.IsNullOrWhiteSpace(AppVendor) || string.IsNullOrWhiteSpace(AppId)) { throw new Exception("Please enter app info"); } var encodedRequest = string.Empty; var containers = new List <ContainerPermissionsModel>(Containers); var appExchangeInfo = new AppExchangeInfo { Id = AppId, Name = AppName, Vendor = AppVendor, Scope = string.Empty }; var invalidContainerNameCount = containers.Where(c => string.IsNullOrWhiteSpace(c.ContName)).ToList().Count; if (invalidContainerNameCount > 0) { throw new Exception($"{invalidContainerNameCount} container(s) have empty string as name. Please update container name to proceed."); } if (IsAuthRequest) { encodedRequest = await RequestService.CreateAuthRequestAsync(IsAppContainerRequested, containers, appExchangeInfo); } else { if (containers.Count == 0) { throw new Exception("Add one or more containers"); } encodedRequest = await RequestService.CreateContainerRequestAsync(containers, appExchangeInfo); } RequestService.SendRequest(encodedRequest, isUnregistered: false); await _navigation.PopToRootAsync(); } catch (Exception ex) { Debug.WriteLine($"Error : {ex.Message}"); await Application.Current.MainPage.DisplayAlert("Error", ex.Message, "OK"); } }
internal RegisteredApp(RegisteredAppNative native) { AppInfo = native.AppInfo; Containers = BindingUtils.CopyToObjectList <ContainerPermissions>(native.ContainersPtr, (int)native.ContainersLen); }
/// <summary> /// Authenticate app with running auth deamon /// </summary> /// <param name="appInfo">App exchange info used for authentication.</param> /// <param name="endPoint">Authentication deamons endpoint.</param> /// <returns>Encoded authentication response.</returns> public static Task <string> AuthenticateAppAsync(AppExchangeInfo appInfo, string endPoint) { return(AppBindings.AuthAppAsync(appInfo.Id, appInfo.Name, appInfo.Vendor, endPoint)); }