Exemplo n.º 1
0
        public void Add(IDictionary <string, IList <ApiPermissionsBySchemeType> > permissionsByScheme)
        {
            Console.WriteLine("[ ApiPermissionsByScheme ] starting ...");

            if (permissionsByScheme == null || !permissionsByScheme.Any())
            {
                return;
            }

            if (this.model.EntityContainer == null)
            {
                Console.WriteLine("The EntityContainer is null at current model, cannot apply the permissions by scheme");
                return;
            }

            string entitySetFullName = this.model.EntityContainer.FullName();

            // <Annotations Target="...">
            writer.WriteStartElement("Annotations");
            writer.WriteAttributeString("Target", entitySetFullName);

            // <Annotation Term="Org.OData.Authorization.V1.Authorizationss">
            writer.WriteStartElement("Annotation");
            writer.WriteAttributeString("Term", "Org.OData.Authorization.V1.Authorizations");

            writer.WriteStartElement("Collection");

            foreach (var perm in permissionsByScheme)
            {
                Console.WriteLine("==>" + perm.Key);

                IRecord record;
                try
                {
                    record = ApiPermissionHelper.ConvertToRecord(perm);

                    writer.WriteRecord(record, "Org.OData.Authorization.V1.OAuth2Implicit");
                }
                catch (Exception ex)
                {
                    var color = Console.BackgroundColor;
                    Console.BackgroundColor = ConsoleColor.Red;
                    Console.WriteLine("    [PermssionError]: " + ex.Message);
                    Console.BackgroundColor = color;
                }
            }

            // </Collection>
            writer.WriteEndElement();

            // </Annotation>
            writer.WriteEndElement();

            // </Annotations>
            writer.WriteEndElement();

            Console.WriteLine("[ ApiPermissionsByScheme ] Done!");
        }
Exemplo n.º 2
0
        public void Add(IDictionary <UriPath, IList <ApiPermissionType> > permissions)
        {
            IDictionary <string, IList <IRecord> > targetStringMerged = new Dictionary <string, IList <IRecord> >();

            foreach (var permission in permissions)
            {
                UriPath  path   = permission.Key;
                PathKind kind   = path.Kind;
                string   target = path.GetTargetString();

                IList <IRecord> records;
                if (!targetStringMerged.TryGetValue(target, out records))
                {
                    records = new List <IRecord>();
                    targetStringMerged[target] = records;
                }

                foreach (var perm in permission.Value)
                {
                    PermissionsRecord permissionRecord;
                    try
                    {
                        permissionRecord = ApiPermissionHelper.ConvertToRecord(kind, perm);

                        ReadRestrictionsType readRest = permissionRecord as ReadRestrictionsType;
                        if (readRest != null)
                        {
                            var existingReadRest = records.FirstOrDefault(r => r is ReadRestrictionsType);
                            if (existingReadRest != null)
                            {
                                MergeReadRest(existingReadRest as ReadRestrictionsType, readRest, target);
                                continue;
                            }
                        }

                        // TODO: verify only one Restriction existing for one target?

                        records.Add(permissionRecord as IRecord);
                    }
                    catch (Exception ex)
                    {
                        //var color = Console.BackgroundColor;
                        //Console.BackgroundColor = ConsoleColor.Red;
                        Console.WriteLine("    [PermssionError]: " + ex.Message);
                        //Console.BackgroundColor = color;

                        PermissionsError[target] = ex;
                    }
                }
            }

            foreach (var item in targetStringMerged)
            {
                Write(item.Key, item.Value);
            }
        }