Beispiel #1
0
        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");
            }
        }
Beispiel #6
0
 internal RegisteredApp(RegisteredAppNative native)
 {
     AppInfo    = native.AppInfo;
     Containers = BindingUtils.CopyToObjectList <ContainerPermissions>(native.ContainersPtr, (int)native.ContainersLen);
 }
Beispiel #7
0
 /// <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));
 }